The primary goal of this project is to address naming issues for Ukrainian localization studios that create regional naming conventions for shows/anime. Additionally, Toloka follows the rule that ongoing series/anime should be in a single release. As a result of these actions, none of the modern *arr suites or media servers are capable of parsing files and automating the download process effectively.
This project is specifically tailored to use the Toloka torrent tracker and the toloka2python library to establish connections, find torrents, and gather additional metadata. The original project by CakesTwix appears abandoned as he moved to codeberg with no recent updates; this project uses the maintained maksii/toloka2python fork.
The scripts in this project make direct API calls to the torrent clients like Transmission and qBittorrent to adjust the torrent name, folder name, and file name according to the following naming convention:
- Torrent/Folder:
SeriesName Season [Quality] [Language] [Subs] [ReleaseGroup] - File:
SeriesName SeasonEpisode [Quality] [Language] [Subs]-ReleaseGroup.extension
Any future documentation will be provided in Ukrainian. Please use a translator if needed or create new issues if you require further assistance.
Prerequisites
- Python 3.11+
- A Toloka account
- qBittorrent or Transmission (configured and running, Transmission not tested)
Steps
-
Clone the repository:
git clone https://github.com/maksii/Toloka2MediaServer.git cd Toloka2MediaServer -
(Recommended) Create and activate a virtual environment:
python -m venv .venv # Linux/macOS: source .venv/bin/activate # Windows: .venv\Scripts\activate
-
Install dependencies and the package:
pip install -r requirements.txt pip install -e .The
toloka2pythonlibrary is installed from GitHub as listed inrequirements.txt. After this, thetoloka2MediaServercommand is available (or usepython -m toloka2MediaServer). -
Create the config directory and add your config files:
mkdir data
Add
data/app.ini(Toloka, torrent client, and app settings) and optionallydata/titles.ini(see Конфиги for examples). -
Run the application:
toloka2MediaServer --help # or python -m toloka2MediaServer --help
- @CakesTwix — original author
- @maksii — current maintainer
As I use this for my own projects, I know this might not be the perfect approach for all the projects out there. If you have any ideas, just open an issue and tell me what you think.
If you'd like to contribute, please fork the repository and make changes as you'd like. Pull requests are warmly welcome.
Консольна утиліта для докачування нових серій аніме з Toloka. Для скачування торрент-файлів використовується бібліотека toloka2python.
Наразі можна качати торренти, де одна директорія (Один сезон), в якому знаходяться серії
The Girl I Like Forgot Her Glasses (S1)
├── Episode S1E01.mkv
├── Episode S1E02.mkv
├── Episode S1E03.mkv
├── Episode S1E04.mkv
├── Episode S1E05.mkv
├── Episode S1E06.mkv
├── Episode S1E07.mkv
└── Episode S1E08.mkv
Застосунок надає інтерфейс командного рядка (CLI) для користувачів, які віддають перевагу безпосередньому взаємодії з програмним забезпеченням через їхній термінал. Нижче наведено приклад виконання звичайної команди та її виводу.
Ось як запустити приклад команди:
python -m toloka2MediaServer -a "Kimetsu no Yaiba: Hashira Geiko-hen"0 : Вбивця демонів: навчання Хашіра (Сезон 4, 03 з XX) / Kimetsu no Yaiba: Hashira Geiko-hen (2024) WEBDLRip 1080p H.265 Ukr/Jap | sub Ukr - t678861
Enter the index of the desired torrent: 0
Default:KimetsunoYaibaHashiraGeikohen. Enter the codename:
Enter the season number: 5
Default: /media/HDD/Jellyfin/Anime:. Enter the download directory path.
Default: Kimetsu no Yaiba: Hashira Geiko-hen (2024). Enter the directory name for the downloaded files:
Enter the release group name, or it will default to the torrent's author:
Default: [WEBRip-1080p][UK+JA][Ukr Sub]. Enter additional metadata tags:
Скріншот:
Цей блок містить приклади використання команд для toloka2MediaServer. Коментарі надають пояснення щодо деяких параметрів та їх використання.
- Допомога
python -m toloka2MediaServer --help
- Додати новий торрент вручну
python -m toloka2MediaServer -a "Назва торрента роздачі" - Додати новий торрент автоматично
python -m toloka2MediaServer --add --url https://toloka.to/t675888 --season 02 --index 2 --correction 0 --title "Tsukimichi -Moonlit Fantasy-" - Додати новий торрент автоматично (partial season)
python -m toloka2MediaServer --add --url https://toloka.to/t675888 --season 02 --index 2 --correction 0 --title "Tsukimichi -Moonlit Fantasy-" --partialВикористовуйте
--partialдля часткових релізів сезону, коли реліз містить не всі епізоди сезону - Додати новий торрент з кастомним шляхом завантаження
python -m toloka2MediaServer --add --url https://toloka.to/t675888 --season 02 --index 2 --correction 0 --title "Tsukimichi -Moonlit Fantasy-" --path "/custom/download/path"
Використовуйте
--pathдля вказання кастомної директорії завантаження замість значення за замовчуванням - Оновити всі торренти
python -m toloka2MediaServer
- Завантажити нові серії, якщо торрент оновився
python -m toloka2MediaServer -c CODENAME
Коднейм береться з файлу titles.ini, про нього буде вказано пізніше
- Примусово завантажити торрент (ігноруючи перевірку наявності)
python -m toloka2MediaServer -c CODENAME --force
Використовуйте
--forceдля примусового завантаження незалежно від наявності торренту - Отримати список чисел із рядка
python -m toloka2MediaServer -n "text1 123"Це необхідно для перейменування файлів у торренті для визначення номера серії у Jellyfin або Plex. В конфігурації потрібно вказати, в якому індексі знаходиться номер серії.
Примітка: У торренті береться відразу Директорія/Файл.mkv, наприклад: Horimiya - Piece [WEBDL 1080p HEVC]/Horimiya - Piece - 01 (WEBDL 1080p HEVC AAC) Ukr DVO SUB.mkv
crontab -e0 8 * * * cd /path/to/toloka2MediaServer/ && python3 -m toloka2MediaServer
Примітка: Файли конфігурації повинні бути розташовані у папці
data/в корені проекту:data/app.iniтаdata/titles.ini
[Python]
# NOTSET
# DEBUG
# INFO
# WARNING
# ERROR
# CRITICAL
logging = INFO
[transmission]
username = Імя користувача
password = Пароль
port = 9091
host = localhost
protocol = http
rpc = /transmission/rpc
category = sonarr
tag = tolokaAnime
[qbittorrent]
username = Імя користувача
password = Пароль
port = 8080
host = 192.168.40.22
protocol = http
tag = toloka
category = sonarr
[Toloka]
username = Імя користувача
password = Пароль
client = qbittorrent або transmission
default_download_dir = /media/HDD/Jellyfin/Anime
default_meta = [WEBRip-1080p][UK+JA][Ukr Sub]
wait_time = 10
client_wait_time = 2
enable_dot_spacing_in_file_name = True[ArknightsTouin]
episode_index = 2
season_number = 02
ext_name = .mkv
torrent_name = "Arknights: Touin Kiro (2022)"
download_dir = /media/HDD/Jellyfin/Anime
publish_date = 24-05-23 21:32
release_group = InariDuB
meta = [WEBRip-1080p][UK+JA][Ukr Sub]
hash = 97e3023362ebb41263f3266ac3a72cc56eda0885
adjusted_episode_number = -8
guid = t678205
is_partial_season = False
[Tsukimichi]
episode_index = 2
season_number = 02
ext_name = .mkv
torrent_name = "Tsukimichi -Moonlit Fantasy- (2021)"
download_dir = /media/HDD/Jellyfin/Anime
publish_date = 24-05-28 17:16
release_group = FanVoxUA
meta = [WEBRip-1080p][UK][Ukr Sub]
hash = 8bcb2b32b4885e6c4a03f909486a03f26a4c9a62
adjusted_episode_number = 0
guid = t675888
is_partial_season = False| Властивість | ArknightsTouin | Tsukimichi | Визначення |
|---|---|---|---|
| episode_index | 2 | 2 | Індекс, що вказує номер епізоду(звідки брати номер епізоду) |
| season_number | 02 | 02 | Номер сезону |
| ext_name | .mkv | .mkv | (застаріле) Формат файлу - визначається автоматично з файлу |
| torrent_name | "Arknights: Touin Kiro (2022)" | "Tsukimichi -Moonlit Fantasy- (2021)" | Базове ім'я для генерації назви торрента, тек та файлів |
| download_dir | /media/HDD/Jellyfin/Anime | Директорія для завантаження медіа (використовується в Transmission) | |
| publish_date | 2024-05-23 | 2024-05-21 | Системне значення для визначення оновлень торренту |
| release_group | InariDuB | FanVoxUA | Реліз група або автор роздачі |
| meta | [WEBRip-1080p][UK+JA][Ukr Sub] | [WEBRip-1080p][UK][Ukr Sub] | Додаткові метадані, які будуть додані у назву |
| hash | 97e...0885 | 8bc...a62 | Системне значення - ID торрент файлу для майбутнього пошуку |
| adjusted_episode_number | -8 | 0 | Коригування номера епізоду сезону для абсолютного або азіатського неймінгу |
| guid | t678205 | t675888 | Системне значення для ідентифікації конкретного аніме у списку |
| is_partial_season | False | False | Чи є реліз частковим сезоном (не всі епізоди) |
- @CakesTwix — оригінальний автор проекту
- @maksii — поточний підтримник (maintainer)




