Яндекс.Метрика

    Песочница

    Dropbox + AutoIt + utorrent

    Добрый день. Читал про разные связки 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