|
Professor Seleznov
|
Проблема У меня телевизор, который читает файлы с USB-флешки. Флешка отформатирована в FAT32, а значит — максимум 4 ГБ на файл. Типичный вечер выглядит так:
- Открыть браузер → найти торрент
- Открыть KTorrent → добавить → ждать
- Открыть файловый менеджер → скопировать на флешку
- Упс, файл 8 ГБ → найти mkvmerge → разбить → скопировать заново
- Безопасно извлечь
Пять шагов и три приложения. Мне надоело. Решение TorFlash — Linux-приложение на PyQt5, которое объединяет все эти шаги в одно окно:
- Поиск по Rutor (с фоллбэком на зеркала), NoNaMe-Club и RuTracker (с логином и прокси)
- Скачивание через libtorrent-rasterbar — параллельные загрузки, выбор файлов, возобновление
- Копирование на флешку — автоматическое определение USB на /run/media/$USER/*
- Умное разбиение для FAT32: MKV через mkvmerge --split (каждая часть — воспроизводимый файл), остальные форматы — побайтовое разбиение
Как выглядит

screenshot Слева — результаты поиска, справа — карточка с постером, скриншотами и mediainfo. Прогресс встроен в карточку: синий — скачивание, зелёный — копирование. Что ещё умеет Библиотека и раздача
- Всё скачанное остаётся в ~/Storage и раздаётся, пока приложение открыто
- При перезапуске раздача восстанавливается через resume_data
- Пауза/возобновление/перепроверка для каждого торрента
Детали раздачи
- Постер + галерея скриншотов (парсится со страницы торрента)
- Mediainfo — кодек, разрешение, аудиодорожки, длительность
- График скорости в реальном времени
- Статистика за день и за всё время (хранение 90 дней)
Флешка
- Вкладка управления: свободное место, список файлов, удаление, открыть в FM
- Безопасное извлечение через udisksctl — показывает процесс, если устройство занято
- “Отложенное копирование” — если флешка вставлена позже, копирование произойдёт автоматически
Приложение
- Светлая/тёмная/авто тема
- Русский и английский интерфейс
- Автозапуск, сворачивание в трей, лимиты скорости
- Автообновление с GitHub Releases
- CLI-режим для headless: torflash_cli.pysearch "запрос"
Технические детали Стек: Python 3.11, PyQt5, libtorrent-rasterbar, requests Никаких BeautifulSoup или Scrapy — HTML парсится регулярками. Звучит как антипаттерн, но для конкретных сайтов с фиксированной структурой работает быстро и без лишних зависимостей. Архитектура:
- SearchWorker — скрапит HTML в отдельном потоке
- SeedSession — единый libtorrent.session на всё приложение, библиотека в JSON
- DownloadWorker — добавляет торренты в сессию, следит за прогрессом
- CopyWorker — стриминговое копирование с разбиением
- providers/ — подключаемые провайдеры поиска (легко добавить свой)
Собирается в один бинарник через PyInstaller (~50 МБ). Не требует pip install — только системные Qt5 и glibc. Установка
# Бинарник (рекомендуется) curl -L -o TorFlash https://github.com/steveast/torflash/releases/latest/download/TorFlash chmod +x TorFlash && ./TorFlash # Из исходников (Arch) sudo pacman -S libtorrent-rasterbar python-pyqt5 python-requests mkvtoolnix-cli git clone https://github.com/steveast/torflash.git && cd torflash python3 src/rutor_search.py
-Источник
|
|
|