Все Тут Online
Все Тут Online
Новые сообщения
Все сообщения за последних 24 часа
Все сообщения за последнюю неделю
Расширенный Поиск

   
Меню сайта:
Главная
Форум
Чат
- Online приложения:
- Игры
- Выбор стиля:
- FAQ
- Для начинающих

Вернуться   Все Тут Online > Технический раздел > Полезные программы > РАЗНОЕ

Старый Вчера, 08:40   #7
Дмитрий
Администратор
 
Аватар для Дмитрий
 
Турниров выиграно: 1

Регистрация: 12.12.2008
Адрес: Москва прошлого тысячелетия.
Сообщений: 218,014
Сказал(а) спасибо: 46,235
Поблагодарили 275,544 раз(а) в 104,686 сообщениях
Дмитрий репутация неоспоримаДмитрий репутация неоспоримаДмитрий репутация неоспоримаДмитрий репутация неоспоримаДмитрий репутация неоспоримаДмитрий репутация неоспоримаДмитрий репутация неоспоримаДмитрий репутация неоспоримаДмитрий репутация неоспоримаДмитрий репутация неоспоримаДмитрий репутация неоспорима
По умолчанию

1. Самый простой - InfoTor. Скачай InfoTor 2 (от y3401)
Запусти программу.
Укажи путь к XML-файлу (или к уже сконвертированной базе SQLite).
Программа сама сконвертирует дамп в быстрый формат и даст удобный поиск с графическим интерфейсом.

Это самый лёгкий вариант - ничего кодировать не нужно.

2. Bash + gawk (для Linux / WSL)

Скрипт, который мы уже делали выше (ищет по словам и выдаёт название + хеш + magnet)

3. Python (самый гибкий вариант)

Код:
python

#!/usr/bin/env python3
"""
Надёжный парсер XML-дампа RuTracker
Итеративный разбор, не грузит весь файл в память
"""

import xml.etree.ElementTree as ET
from pathlib import Path
import sys

def search_rutracker(xml_path: str, query: str):
    words = [w.lower() for w in query.split() if w]
    if not words:
        print("❌ Пустой запрос")
        return

    # Итеративный парсинг
    context = ET.iterparse(xml_path, events=("end",))

    for event, elem in context:
        if elem.tag != "torrent":
            continue

        # Поиск по всему тексту элемента (title, description и т.п.)
        block_text = ET.tostring(elem, encoding="unicode", method="text").lower()

        if not all(word in block_text for word in words):
            elem.clear()
            continue

        # Извлекаем title
        title_elem = elem.find("title")
        title = title_elem.text.strip() if title_elem is not None and title_elem.text else None

        # Хеш лежит прямо в атрибутах самого <torrent>
        hash_value = elem.attrib.get("hash")

        if title and hash_value and len(hash_value) == 40:
            print(f"📁 Название: {title}")
            print(f"🔑 Хеш:     {hash_value}")
            print(f"🧲 Magnet:   magnet:?xt=urn:btih:{hash_value}")
            print("-" * 70)

        elem.clear()  # освобождаем память

if __name__ == "__main__":
    if len(sys.argv) < 3:
        print("Использование:")
        print("  python search_rutracker.py <путь_к_xml> \"ключевые слова\"")
        print("Пример:")
        print('  python search_rutracker.py rutracker.xml "matrix 1999"')
        sys.exit(1)

    xml_file = sys.argv[1]
    search_query = sys.argv[2]

    if not Path(xml_file).exists():
        print(f"❌ Файл не найден: {xml_file}")
        sys.exit(1)

    print(f"🔍 Ищем: \"{search_query}\"")
    print("=" * 70)
    search_rutracker(xml_file, search_query)
Можно доработать: сохранять результаты в CSV, искать только по определённым форумам, извлекать список файлов и т.д.

4. Другие готовые инструменты trusearch - очень мощный CLI-инструмент специально для этих дампов. Он есть на гитхабе.
Конвертеры в SQLite (от y3401, Saiv46 и др.) - после конвертации можно делать быстрые SQL-запросы.
__________________
О нас думают плохо лишь те, кто хуже нас. А те, кто лучше нас, им просто не до нас.
--Омар Хайям

Обновления по запросу — на Я.Ди. «Мэйл-облако» для тех, кто помогает нашему интернет-проекту, и для тех, кто хотел бы это делать, но пока не знает, как.

Помогая форуму ВТО, вы прежде всего помогаете себе! А не делаете что-то абстрактное для «других», совершенно незнакомых и безразличных вам людей.
Дмитрий вне форума   Ответить с цитированием
 

Закладки

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +3, время: 01:49.


Powered by vBulletin® Version 3.8.2
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Rambler's Top100 Республика Татарстан - Каталог сайтов