Dropbox + AutoIt + utorrent

19 Сен
2011

Добрый день. Читал про разные связки Dropbox и utorrent, но не одна мне не подходила. Исходя из опыта закачек ранее, следовало только одно, если сразу не указать место куда сохранять и нужное название файла, потом он так и останется в папке «Не разобранное» с название «Avatar.2009.Extended.Collectors.Cut(1080p).mkv». Если даже потом разобрать скаченное, надо будет перезапускать торрент файлы и указывать уже новый путь к файлу, чтобы их раздавать. А если учесть, что дома помимо меня смотрят фильмы еще родители и племянница, то такое название оставлять было нельзя.

Итак необходимые требования к программе:


1. добавление торрентов удаленно не подключаясь к домашнему компьютеру (ДК);
2. возможность указать путь к файлу на ДК;
3. возможность указать имя скачиваемого файла;
4. удаленно отслеживать какие файлы поставились на закачку, какие завершили закачку.

Как решал поставленную задачу


Первый пункт

Обращаемся к справке utorrent.exe получается для добавления торрента необходимо выполнить такую команду:
C:\Program Files\uTorrent>uTorrent.exe /DIRECTORY "Директория куда сохранять" "Путь до торрент файла"

Из этой же справки и пойска в гугле, а также форума utorrent оказалось, что в командной строке uTorrent нельзя указать имя скачиваемого файла. По началу так и выполнял команду, но при дальнейшей реализации программы пришлось из строки убрать
/DIRECTORY "Директория куда сохранять"
, об этом расскажу ниже.
Второй пункт

Необходимо, чтобы в папке Dropbox была такая же структура папок, что и на домашнем компьютере куда сохраняется скачиваемый файл. Далее сохраняя торрент-файл в нужную директорию папки Dropbox, мы сможем добавить торрент на ДК в ту директорию, которая нам нужна. Для этого необходимо было обеспечить автоматическую синхронизацию структуры папки с ДК и папки в DropBox. Как именно реализован поиск торрент-файлов и синхроназиция структуры папок, разбирать не буду, т.к. там ничего особенного нет.
После синхронизации папка Dropbox выглядела следующем образом:
image
Третий пункт

С указанием названия файла возникли проблемы. Имя торрент-файла и имена файлов, которые скачиваются через этот торрент это две разные вещи. В командной строке uTorrent при добавлении, также нельзя было указать с каким именем сохранять файл. Опять начал искать информацию. Оказалось, что изменять торрент-файл нельзя, т.к. потом он становится «инвалидом» и его нельзя будет добавить на закачку. И тут приходит на помощь AutoIT с его возможностью обращаться к элемента формы другой программы. Перед этим из командной строки uTorrent убираю /DIRECTORY «Директория куда сохранять», чтобы появлялось окно о добавлении торрента. Далее надо было узнать как называется элемент формы, где указывается путь сохранения файла. В комплекте с AutoIT идет программа называется AutoIT Window Info благодаря которой можно узнать как называются элементы формы:
image
Нужное нам поле называется «ComboBox1», чтобы обратится к нему требовалось знать и название окна (Title) в котором элемент находится. В нашем случае название окна выглядит следующим образом:
«Avatar.2009.Extended.Collectors.Cut(1080p).mkv — Добавить новый торрент»
Так как имя торрент-файла и имя с которым оно добавляется по умолчанию в торрент-клиенте это две разные вещи. А мне как раз надо было имя с которым оно добавляется по умолчанию. Необходимо было как то его выдернуть из торрент-файла. Из полученной информации следовало, что торрент-файл кодировался в формате Bencode, библиотеки написанной для AutoIT я не нашел поэтому в последствии разбирал его простым чтением. Мне нужно было значение поля name. В нашем примере кусок файла с нужным мне значением выглядел так:
«name46:Avatar.2009.Extended.Collectors.Cut(1080p).mkv12:piece»
Что такое 12:piece и почему оно встречалось во всех файлах, которые просмотрел на домашнем компьютере, так и не понял. Но раз оно одинаково спокойно получил название «Avatar.2009.Extended.Collectors.Cut(1080p).mkv». Теперь мы можем получить название окна в котором находится элемент «ComboBox1». Имя файла беру из названия торрента, т.е. при сохранении торрент-файла указал название «Аватар.torrent». Указание значения поля для формы в AutoIT делается следующим образом:
ControlSetText($Title, "", "ComboBox1", $NameTorrent)

Также посылаем команду Левый клик мышки по кнопке Ок.
ControlClick ($Title, "", "Button7") 

Вуаля торрент добавился с нужным мне именем в нужную мне директорию на домашнем компе.
Также лучше в uTorrent Настройки -> Интерфейс снять галочку «Активировать окно программы», чтобы добавление торрента происходило не заметно для человека который работал на ДК.
Четвертый пункт

С ним все просто. Пишем в лог который находится в папке Dropbox о добавлении торрента. Для того, чтобы писалось о завершении закачки торрента необходимо сделать следующее. Зайти в настройки utorrent → Дополнительно → Выполнить эту программу по завершении торрента указал свою программу с параметрами TorrentBot.exe %F -onlylog.
Система в работе

На домашнем компьютере запущена программа (TorrentBot.exe). И допустим на работе, сохраняю торрент в папку «Dropbox\DWND\1_Фильмы\Ковбои против пришельцев.torrent» файл копируется на домашний компьютер средставми Dropbox далее торрент добавляется в закачку, и удаляется из Dropbox.
Исходники

Исходники программы прилагаются, прошу представленный код строго не судить.
Для тех кто захочет запустить программу. При первом запуске ехе файла создается config.ini в той же папке, что и лежит программа. В нем необходимо указать следующее:
[options]
PathDWND=G:\DWND\
PathDropBox=G:\Dropbox\DWND\
TimeUpdate=30

Где PathDWND – путь на домашнем компьютере куда необходимо сохранять все закачки;
PathDropBox — путь в папке Dropbox в которой будет находится структура папки из пути PathDWND;
TimeUpdate — время проверки появление новых торрент файлов в папке PathDropBox (в секундах)
Обязательное требование не перепутайте PathDWND и PathDropBox местами иначе в папке PathDWND будет только структура из PathDropBox, и все файлы которые были до этого в PathDWND исчезнут.
Ах да, используйте на свой страх и риск.
Спасибо за внимание.
Используемая литература: cправка utorrent, справка AutoIt, Google search.
TorrentBot.au3.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх