Что нового

Программа удаленного управления загрузками µTorrent

Aleksandr Prilutskiy

Знающий
Сообщения
29
Репутация
9
AutoIt: 3.3.12.0
Версия: 1.0.0
Категория: Автоматизация, Сеть
Описание: Программа для удаленного управление закачками µTorrent.

Часть I. Описание программы.

1.1. Общая инофрмация
Программа предназначена для управления закачками торрентов на удаленной машине, накоторой запущена программа µTorrent (utorrent.com)
В принципе, это возможно делать разными способами. Например, через официальный web-интерфейс удаленного управления программой (https://remote.utorrent.com).
Добавлять новые закачки можно через синхронизацию папок, например используя Dropbox (dropbox.com).
Раньше я так и делал, а потом не попалось описание API-интерфейса от µTorrent. Мне стало интересно попробовать это. В результате появилась эта программа, которой я сам пользуюсь и уже просто не могу без неё.

Работает это так: у меня есть одна машина, подключенная постоянно к интернету. С различных компьютеров во внутренней сети и через Интернет я могу добавлять в список закачек новые .torrent-файлы, и управлять теми, что находятся в загрузке.
Работает (как мне качется) быстрее и удобнее чем через аналогичные официальные средства удаленного управления закачками.
Настройки и вся программа удобно переносятся с одного компьютера на другой (простым копированием .exe и .ini-файлов.).

Кроме того, есть возможность автоматизации процесса скачивания торрентов, а именно:
- Данная программа имеет возможность прописать себя в автозагрузку и запускается вместе со стартом Windows.
- Программа может работать в "спрятанном" режиме, тоесть окна не видно, но появляется значек в системном трее, через который её можно упроавлять. В этом режиме она и запускается при старте операционной системы.
- Есть возможность настроить каталог, в котором программа будет отслеживать новые .torrent-файлы, а автоматически добавлять их в загрузки на удаленной машине. Это удобно. Я настраиваю в качестве такого каталога каталог размещения загружаемых файлов браузера и все скачиваемые мною .torrent-файлы быстро отправляются в загрузки.
- Есть возможность автоматического удаления завершенных закачек (это возможно не очень хорошо, с точки зрения развития файлообменных сетей, но для меня лично полезная функция).
Таким образом, эта программа делает на всех моих компьютерах так, чтобы все скачиваемые .torrent-файлы автоматически скачивались на специально отведенной для этого машине.

1.2. Возможности программы
Основные возможности - управление закачками программы µTorrent:
- Показывает список закачек на удаленном компьютере, на котором запущена программа µTorrent.
- Показывает состояние каждой закачки и общей процент загрузки всех файлов.
- Возможность добавления в список закачек .torrent-файлы c локального компьютера.
- Возможность приостанавливать и запускать ранее остановленные закачки.
- Возможность удаления завершенных и незавершенных закачек.
- Возможность управления каждой отдельной закачкой и всеми закачками сразу.
Дополнительные возможности:
- Возможность настройки и изменения всех параметров программы в окне настроек.
- Возможность привязки .torrent-файлы к этой программе для их добавления в закачки из проводника.
- Сканирование указанного каталога для автаматического добавления в закачки .torrent-файлов.
- Возможность автоматического удаления скаченных файлов.
- Возможность работы программы в режиме фонового процесса (в трее).
- Уведомление о добавленных закачках сообщением в трее.
- Возможность автоматического запуска программы при старте Windows.
- Автоматическое обновление программы и обновление по запросу пользователя.
- Запись событий в журнал и возможность просмотра этого журнала.
- Защита от повторного запуска программы.

1.3. Руководство пользователя

1.3.1. Подготовка к работе программы.
Для работы программы в настройках программы µTorrent необходимо произвести следующие действия:
(актуально для версии 3.0 программы Torrent)
- "Настройки" (в главном меню) -> "Настройки программы" -> "Advanced" (в списке слева) -> "Web UI":
- Установить галочку на "Использовать веб-интерфейс".
- Ввести имя и пароль админа (имя можно оставить "admin").
- Установить галочку на "Альтернативный порт" и указать порт.
- "Настройки" (в главном меню) -> "Настройки программы" -> "Advanced" (нажать на саму надпись) и в списке опций установить "webui.token_auth" в false.
- После запуска программы (uTorrent RC) в окне настроек, во вкладке "µTorrent" указать сетевой адрес компьютера, на котором запущена программа µTorrent, порт подключения и аккаунт администратора с паролем.

1.3.2. Назначение кнопок панели инструментов.
В верхней части программы расположена панель инструментов, которая имеет следующий вид:
uTorrent-TopLine.jpg

Назначение кнопок:
refresh.png
- Обновление списка закачек. Для предотвращения случайных многократных нажатий, которые могут привести к зависанию программы эта кнопка становиться неактивной на несколько секунд после каждого обновления списка. Обновление списка производиться также автоматически по таймеру, период которого настраивается в окне настроек программы, после выполнения любых действий со списком закачек, а также после сохранения изменений в окне настройки программы.
play.png
- Возобновление всех закачек. Все закачки в списке возобновляются после приостановки. Кнопка активна всегда, когда в списке загрузок есть хотя бы одна приостановленная закачка.
pause.png
- Приостановка всех закачек. Все закачки в списке возобновляются приостанавливаются. Кнопка активна всегда, когда в списке загрузок есть хотя бы одна не приостановленная закачка.
deldone.png
- Очистка всех завершенных закачек. Внимание! Все загруженные файлы остаются на жестком диске. но они убираются с раздачи..
fileadd.png
- Добавления одного или нескольких торрентов в загрузки.
filestart.png
- Возобновление выбранной приостановленной закачки.
filestop.png
- Приостановка выбранной закачки.
filedel.png
- Удаление выбранной закачки (для незавершенных закачек будут удалены все ранее загруженные данные).
viewlogs.png
- Просмотр журнала событий.
setup.png
- Вызов окна настроек программы.
help.png
- Вызов окна подсказки.

1.3.3. Описание значков состояния закачек.
Значки стаусов состояния закачек соотвествуют статусам закачек в оригинальном приложении µTorrent.
tstatus_downloading.png
- скачивается.
tstatus_downloading_queued.png
- в очереди на скачивание или проверяется.
tstatus_paused.png
- поставлен на паузу при скачивании.
tstatus_seeding.png
- полностью скачен, раздается
tstatus_seeding_queued.png
- полностью скачен, в очереди на раздачу.
tstatus_finished.png
- полностью скачен, раздача остановлена.
tstatus_error.png
- ошибка.

1.3.4. Строка состояния.
Внизу окна программы расположена полоса, показывающее общий процент загрузки всех файлов (с учетом полностью загруженных).
Также внизу, слева расположен индикатор активности сети, который может принимать следующие состояния:
netoff.png
- Режим ожидания. Запросов не происходит.
neton.png
- Происходит ображение к программе uTorrent по сети.
neterror.png
- При последнем обращении к программе uTorrent. Автоматическое обновление окна списка закачен отменено.
Для устранения проблемы нужно исправить настройки программы, устранить возможные проблемы связи и (или) выполнить обновление списка закачек принудительно (верхняя левая кнопка).

Файл
Исполняемый файл:
uTorrent_RC_v1.0.0.exe - версия 1.0.0.
uTorrent RC.exe - ссылка на последнюю актуальную версию программы.

Снимок
Снимки внешнего вида программы:


История версий
Версия 1.0.0 (09.06.2014) - Изменения:
- Добавлена возможность сворачивания программы в трей.
- Добавлено сканирование указанного каталога с автаматическим добавлением в закачки .torrent-файлов.
- Добавлен режим автоматического удаления скаченных файлов.
- Добавлена возможность автоматического запуска программы при старте Windows.
- Добавлены уведомления о добавленных закачках сообщением в трее.
- Исправлена ошибка обработки .torrent-файлов для добавления их в список закачек из проводника.
- Добавлен журнал событий и возможность просмотра этого журнала.
- Добавлена защита от повторного запуска программы.
- Удален вызов режима управления скаченными файлами из программы управления закачками.
- Изменены вкладки в окне настроек программы.
- Обновлены значки в интерфейсе.

Версия 0.2.0 (13.04.2015) - Изменения:
- Разделены приложения скачивания и управления скаченными файлами.
- Реализован запуск одной программы из другой через меню.
- Исправлена ошибка чтения информации об обновлениях программы.

Версия 0.1.7 (18.03.2015) - Изменения:
- окна настройки и справки теперь всегда на переднем плане;
- в онке настройки добавлены подсказки маски переименования файлов;
- исправлены выявленные ошибки.

Версия 0.1.6 (20.11.2014) - Изменения:
- исправлена проблема с задержкой при нажатии на кнопки управления.

Версия 0.1.5 (03.10.2014) - Изменения:
- добавлена возможность отключения режима управления файлами;
- добавлена настройка маски переименования файлов с фильмами;
- добавлена проверка обновления программы и возможность выполнения обновлений с возможностью автоматического обновления;
- исправлена проблема с нажатием на кнопки управления.

Версия 0.1.4 (18.09.2014) - Изменения:
- добавлена возможность привязки программы к расширениям .torrent и добавления torrent-файлов в закачки кликом на него из Windows;
- добавлена возможность включения/выключения режима управления файлами.

Версия 0.1.3 (14.08.2014) - Изменения:
- добавлен режим управления файлами (закачанными);
- добавлен поиск информации о фильме используя сайт kinopoisk.ru и переименование файла по результатам поиска;
- реализованы базовые функции переименования файлов с фильмами.

Версия 0.1.2 (13.08.2014) - Изменения:
- переделан механизм добавления новых закачек, теперь не нужно настраивать каталоги, новые файлы закачек передаются в программу напрямую через API;
- добавлено использование библиотек WinHttp.au3 и JSMN.au3 для доступа к Web-API и обработки результатов HTTP запросов;
- исправлена ошибка с изменением размеров окна при каждом запуске программы;
- переделано окно настроек программы;
- прочие незначительные изменения текста программы.

Версия 0.1.1 (07.08.2014) - Изменения:
- программа перешла на разработку с использованием AutoIt версии 3.3.12.0.
- добавлены запросы на подтверждение при удалении закачек с возможностью отключить запрос на удаление завершенных закачек;
- добавлено отображение завершенных закачек с разделением на тех. которые раздаются и раздача которых приостановлена;
- исправлена ошибка отображения полосы процента выполнения всех закачек (внизу) при изменении размеров окна;
- в окне подсказки добавлена ссылка на эту страницу форума со значком QR-кода;
- немного изменен текст программы.

Версия 0.1.0 (05.08.2014) - Изменения:
- версия, впервые обнародованная (на форуме русского сообщества AutoIt http://autoit-script.ru).
- получение списка торрентов и отображение их в порядке последовательности закачки;
- возможность постановки на паузу и возобновление скачивания после паузы отдельных или всех закачек сразу;
- возможность добавления новых закачек (реализовано через копирование файлов в специально настроенный каталог);
- возможность удаление отдельных закачек и очистки всех успешно завершенных закачек;
- изменение параметров через окно настоек программы;
- окно программы может изменять свои размеры.

Версия 0.0.5 (01.08.2014) - Изменения:
- исправлено отображение списка закачек - теперь по индексу газружаемого файла;
- окно программы исправлено так, что может изменять свой размер;
- снизу в окне программы появилась полоска отображения процента общего процента закгрузки всех закачек;
- добавлено окно подсказки.

Версия 0.0.4 (28.07.2014) - Изменения:
- добавлены функции остановки и возабновления после остановки выбранной закачки;
- добавлена функция удаления выбранной загрузки;
- добавлена строка состояния.

Версия 0.0.3 (25.07.2014) - Изменения:
- добавлена функция добавления новых закачек (путем копирования торрент-файлов в специально настроенный каталог).

Версия 0.0.1 (24.07.2014)
- создан графический интерфейс программы;
- реализован обмен данными с программой µTorrent через Web-API интерфейс;
- реазизованы функции остановки и возабновления после остановки всех закачек одновременно;
- реализована функция всех удаления успешно завершенных закачек;
- создано окно настроек программы с сохранением настроек в ini-файле.

Источник: autoit-script.ru
Автор: Aleksandr Prilutskiy
 
Автор
Aleksandr Prilutskiy

Aleksandr Prilutskiy

Знающий
Сообщения
29
Репутация
9
Часть II. Текст программы.

2.1. Исходный текст программы
Исходник с картинками и подключаемыми UDF, в архиве:
uTorrent_RC_v1.0.0.zip

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

2.1.1. Отправка запроса программе µTorrent и получение от неё ответа через Web-API:
$sURL - должен сродержать запрос (команду и параметры), в соотвествие с описанием Web-API.
$sHost и $sPort - IP адреси и порт для подключения к программе µTorrent.
$sUser и $sPass - имя пользователя и пароль
Код:
Func _HTTPRequest($sURL)
 Local $hOpen, $hConnect, $hRequest
 $hOpen = _WinHttpOpen()
 If $hOpen <> 0 Then
  $hConnect = _WinHttpConnect($hOpen, $sHost, $sPort)
  If $hConnect <> 0 Then
   $hRequest = _WinHttpOpenRequest($hConnect, 'GET', $sURL)
   If $hRequest <> 0 Then
    _WinHttpSetCredentials($hRequest, $WINHTTP_AUTH_TARGET_SERVER, $WINHTTP_AUTH_SCHEME_BASIC, $sUser, $sPass)
    _WinHttpSendRequest($hRequest)
    If @error == 0 Then _WinHttpReceiveResponse($hRequest)
   EndIf
  EndIf
 EndIf
 Local $sResult = ''
 If $hRequest <> 0 And $hConnect <> 0 And $hOpen <> 0 Then
  If StringInStr(_WinHttpQueryHeaders($hRequest), '401 Unauthorized') > 0 Then
   _GUICtrlStatusBar_SetIcon($GUI_StatusBar, 0, _GUIImageList_GetIcon($GUI_Icons, $NetStateError))
   MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND, $MB_OK), $WindowName & '. Ошибка.', _
    'Неправильно указан логин или пароль администратора.')
   $Timer = -1
  ElseIf _WinHttpQueryDataAvailable($hRequest) Then
   $sResult = BinaryToString(_WinHttpReadData($hRequest), 4)
  EndIf
 Else
  MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND, $MB_OK), $WindowName & '. Ошибка.', _
   'Не удалось установить соединение с программой  µTorrent.' & @CRLF & _
   'Проверьте настройки программы и состояние сети.')
  $Timer = -1
 EndIf
 If $hRequest	<> 0 Then _WinHttpCloseHandle($hRequest)
 If $hConnect	<> 0 Then _WinHttpCloseHandle($hConnect)
 If $hOpen		<> 0 Then _WinHttpCloseHandle($hOpen)
 If $sResult == '' Then Return ''
 Local $Data = Jsmn_Decode($sResult); возвращает то, что находиться в тэге 'torrents'
 If Not @error And Jsmn_ObjExists($Data, 'torrents') Then Return Jsmn_Encode(Jsmn_ObjGet($Data, 'torrents'))
 Return ''
EndFunc ;==>_HTTPRequest

2.1.2. Получение списка закачек от программы µTorrent:
Отправляет запрос на получение списка такущих закачек, и по результатам ответа заполняет следующие массивы.
$aTorrentKey - массив индексов закачек (используется для сортировки)
$aTorrentHash - массив хэш-индексов закачек.
$aTorrentName - массив наименований закачек.
$aTorrentStatus - массив состояний закачек.
Код:
Func _TorrentLoadList()
 Local $sHTML = _HTTPRequest('/gui/?list=1')
 If $sHTML == '' Then Return
 Local	$i, $j
 ReDim	$aTorrentKey[1]
 ReDim	$aTorrentHash[1]
 ReDim	$aTorrentName[1]
 ReDim	$aTorrentStatus[1]
 $aTorrentName[0]			= ''
 Local $Data = Jsmn_Decode($sHTML)
 If @error <> 0 Then Return
 Local $aTorrents = Jsmn_ObjTo2DArray($Data)
 For $i = 0 To UBound($aTorrents) - 1
  $Data = Jsmn_Decode(Jsmn_Encode($aTorrents[$i]))
  If @error <> 0 Then ContinueLoop
  Local $aData = Jsmn_ObjTo2DArray($Data)
  If $i >= UBound($aTorrentHash) Then
   _ArrayAdd($aTorrentKey, 		0)
   _ArrayAdd($aTorrentHash,		'')
   _ArrayAdd($aTorrentName,		'')
   _ArrayAdd($aTorrentStatus,	0)
  EndIf
  $aTorrentKey[$i] 		= $i
  $aTorrentHash[$i]		= $aData[0]
  $aTorrentName[$i]		= $aData[2]
  $aTorrentStatus[$i]	= _Inc($j, $iconDownloadQueue)
 Next
EndFunc ;==>_TorrentLoadList

2.1.3. Добавление одного или нескольких .torrent-файлов в список закачек:
думаю это самый интересный кусок программы. В нем формируется POST-запрос.
В качестве параметра указывается массив, в формате, который возвращает функция FileOpenDialog.
Тоесть, масив текстовых строку, в котором первый элемент (с индексом 0) содержит каталог, а сотальные - имена файлов в этом каталоге.
Код:
Func _HTTPSendFiles($aFiles)
 Local $i, $j, $hOpen, $hConnect, $hRequest, $sError = '', $i, $j, $s
 Local $aTorrentNameSave = $aTorrentName
 $hOpen = _WinHttpOpen()
 If $hOpen <> 0 Then
  $hConnect = _WinHttpConnect($hOpen, $sHost, $sPort)
  If $hConnect <> 0 Then
   For $i = 1 To UBound($aFiles) - 1
    Local $sBoundary = ''
    For $j = 0 To 20
	 $sBoundary = $sBoundary & Chr(Random(0x41, 0x5A, 1))
    Next
    Local $hFile = FileOpen($aFiles[0] & '\' & $aFiles[$i])
    Local $s = FileRead($hFile)
    FileClose($hFile)
    $s = '--' & $sBoundary & @CRLF & 'Content-Disposition: form-data; name="torrent_file"; filename="' & _
	     $aFiles[$i] & '"' & @CRLF & 'Content-Type: application/x-bittorrent' & @CRLF & @CRLF & $s & _
		 @CRLF & '--' & $sBoundary & @CRLF
    $hRequest = _WinHttpOpenRequest($hConnect, 'POST', 'gui/?action=add-file')
    If $hRequest <> 0 Then
     _WinHttpSetCredentials($hRequest, $WINHTTP_AUTH_TARGET_SERVER, $WINHTTP_AUTH_SCHEME_BASIC, $sUser, $sPass)
     _WinHttpAddRequestHeaders($hRequest, 'Content-Type:multipart/form-data; boundary=' & $sBoundary)
     _WinHttpAddRequestHeaders($hRequest, 'Content-Length: ' & StringLen($s))
     _WinHttpSendRequest($hRequest)
	 _WinHttpWriteData($hRequest, $s)
     If @error == 0 Then _WinHttpReceiveResponse($hRequest)
	 If StringInStr(_WinHttpReadData($hRequest), 'error') <> 0 Then
	  $sError = $sError & @CRLF & $aFiles[$i]
     ElseIf $fDelAddedFile Then
	  FileDelete($aFiles[0] & '\' & $aFiles[$i])
	 EndIf
     _WinHttpCloseHandle($hRequest)
    EndIf
   Next
  EndIf
 EndIf
 If $hOpen == 0 Or $hConnect == 0 Then
  MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND, $MB_OK), $WindowName & '. Ошибка.', _
   'Не удалось установить соединение с программой  µTorrent.' & @CRLF & _
   'Проверьте настройки программы и состояние сети.')
  $Timer = -1
 ElseIf $sError <> '' Then
  MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND, $MB_OK), $WindowName & '. Ошибка.', _
   'Не удалось добавить на скачивание файл...')
 EndIf
 If $hConnect	<> 0 Then _WinHttpCloseHandle($hConnect)
 If $hOpen		<> 0 Then _WinHttpCloseHandle($hOpen)
 _TorrentLoadList()
EndFunc ;==>_HTTPSendFiles

2.1.4. Автоматическое обновление[/b]:
Я использую свою саобстенную небольшую наработку.
Все работает через функцию _CheckUpdate, которую можно найти в архиве, в файле Update.au3.
Работает просто: читает из интернета файлик, в котром хранится номер последней текущей версии программы.
Если пользователь согласен произвести обновление, то из исполняемого файла программы извлекается файл Update.exe.
Далее программа запускает Update.exe, закрывает себя.
Update.exe скачивает новуб версию программы во временную папку, и после удачного скачивания перемиеновывает скаченный файл в uTorrent RC.exe, закрывает себя, запускает uTorrent RC.exe.
При каждом запуске uTorrent RC.exe, она проверяет наличие Update.exe в одном с ней каталоге, и если находит - удаляет.

p.s. Исходник Update.exe не выкладываю - это отдельная тема. Если интересно - создам соотвествующий топик.

...собственно все остальное в программе - это просто GUI.

2.2. История разработки и использованные ресурсы
На создание программы меня побудила часто возникающая задача управления закачками торрентов на домашнем сервере.
Обычно приходилось делать это через удаленное администрирование (я использую VNC).
Но с последней версией программы µTorrent её внешний вид мне окончательно перестал нравиться. Слишком много лишнего. Это же касается и её родного удаленного управления через web-интерфейс (медленно, неудобно, много лишнего).
Потом мне случайно попалась страничка с описанием Web-API программы и я решил попробовать. Получилось. Мне лично нравится. использую для себя.
Программа использует протокол управления API, описанный здесь: help.utorrent.com/customer/portal/articles/1573952-actions---webapi.

Через пол года использования программы у меня появились пожелания автоматизироваить процесс её запуска, и добавить слежение на вновь загружаемыми из Интернета .torrent-файлами, а так же очистки завершенных закачек.
Это получилось реализовать в версии, которую я считаю можно назвать 1-й полнофункциональной версией программы.

2.3. Планы на будущее:
- Добавить изменение статуса в трее.
- Добавление в лог информации о приостановке и запуске закачек
- Добавить возможность выделения группы закачек и совершения операций с ними.
- Сделать возможность выбора другого языка интерфейса, кроме русского (надо подумать нужно ли это).

2.4. Благодарности
Спасибо пользователю inververs (извиняюсь, что не знаю имени), за то что подсказал использовать библиотеки WinHttp.au3 и JSMN.au3.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Aleksandr Prilutskiy [?]
Зарезервировал под описание интерфейса. (если так не запрещено).
Не запрещено, но обычно все описания пишутся в первом сообщений (под тегами кода, цитат, и спойлера).
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
_StringEncrypt лучше убрать т.к была вырезана и переделать на любую из _Crypt_EncryptData.


Добавлено:
Сообщение автоматически объединено:

Не ясно как работает функция добавления файлов. Настроил все как сказано. Не понятная логика.
Зачем указывать каталог новых торрент файлов для скачивания?
Ок я настроил его. Нажал добавить файл, выбрал торрент, utorent открыл окно и попросил подтвердить добавление файла на закачку. Так и должно быть? Автоматически не начал качать...
Получилось только 1 раз добавить файл, больше не срабатывала.

И еще маленькие недочеты, если не скомпилирована, то не видны иконки.
И нету подтверждения удаления всех закачек. Нажал по незнанию - и все пропало. Нехорошо.


Добавлено:
Сообщение автоматически объединено:

За _Base64Encode спасибо. Не знал о таком способе :smile:
 
Автор
Aleksandr Prilutskiy

Aleksandr Prilutskiy

Знающий
Сообщения
29
Репутация
9
Спасибо за 1-й комментарий.

Функция добавления файлов в этой программе работает очень просто: в настройках указывается каталог, потом при копировании указывается файл или группа файлов и они копируються в тот самый каталог, указанный в настройках. Все.
Для того чтобы это сработало и µTorrent начал закачивать эти торренты нужно его настроить. У меня настроено так:

- все работает хорошо, ничего не спрашивает. Соотвественно в моей программе я указываю каталог, который синхронизируется Dropbox с каталогом, у казаном на скриншоте снизу. После синхронизации µTorrent заглатывает торрент-файл (файлы) и удаляет их из этого каталога. Автоматически, без лишних вопросов. После этого у меня только Dropbox выдает сообщение, что эти файлы удалены. А в моей программе через некоторое время (не мгновенно) появляются эти загрузки в списке.

На счет иконок - да. Программа рассчитана на использование в виде отдельного exe-файла и берет иконки из самого exe-шника. Проверять на то "боевой" это запуск или отладочный я не стал. Вместо этого я один раз компилирую exe-файл, а потом иконки подгружаются из него. Если знаете как сделать правильнее - напишите плз.

На счет отсутствия подтверждения ударений - извиняюсь. Не предусмотрел по причине того, что делал программу "под себя". Мне лично такие запросы не нужны, и даже мешают. Я конечно поступаю, возможно нехорошо, но ни когда не держу торренты на раздаче. Удаляю их стразу как вижу что они загрузились. Поэтому, кстати в программе нет разницы для скаченных файлов раздаются они или нет. Не знаю насколько нужны такие разграничения. Мне лично - не нужны именно по описанной выше причине.
Но в общем случае, ты прав, нужно выдавать запросы-предупреждения. Постараюсь поскорее это добавить. и похоже нужно в настройки добавить опцию, чтобы пользователь мог выбирать нужны ему такие предупреждения или не нужны (как мне).
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Что бы торрент сам начал загружать файл, без подтверждения, нужно отмечать опцию Помещать загружаемые файлы в: и указать путь.
Как только указал, все заработало. Можно эту информацию в шапку вынести.

Мне кажется если вам реализовать
Код:
[b]http://[IP-адрес]:[ПОРТ]/gui/?action=add-file[/b]
This action is different from the other actions in that it uses HTTP POST instead of HTTP GET to submit data to µTorrent. The HTTP form must use an enctype of "multipart/form-data" and have an input field of type "file" with name "torrent_file" that stores the local path to the file to upload to µTorrent.
То можно будет передавать торренты напрямую, без синхронизации папок и автозагрузки торрентов.

В целом, программа отличная :ok:
 
Автор
Aleksandr Prilutskiy

Aleksandr Prilutskiy

Знающий
Сообщения
29
Репутация
9
Спасибо.
Про "Помещать загружаемые файлы в" - указал это в шапке темы.
Использовать "?action=add-file" я тоже думал. Через копирование файлов мне проще. Я так уже годами работаю (накачал не одну тысячу фильмов :smile: ).
Но через такое добавление файлов попробую сделать.
Но, боюсь что с этим у меня будет проблема, которая вылезла в последнее время:
При удаленном подключении через Интернет обращения по сети иногда жутко тормозят, и даже бывают что приводят к зависанию программы. Пока не могу придумать как это решить, и боюсь что передача даже небольшого торрент-файла в запросе может значительно все тормозить.
Но попробую, обязательно, только не в первую очередь.

Также пока не могу сделать чтобы файлы в списке сортировались. Тоесть чтобы файл можно было двигать по порядку в списке. Кажется просто нет такой команды в API.

Сейчас сделал чтобы при удалении программа выдавала запросы на подтверждение.
Добавил иконки загрузок, чтобы можно было отличить состояние скаченных загрузок при их раздаче.
_StringEncrypt поменял на ...._EncryptData.
Тестирую. Надеюсь скоро закончить и выложить.

Следующий шаг - хочу добавить управление уже загруженными файлами. Я в основном использую торреты для скачивания фильмов. потом приходиться их переименовывать, так как часто они скачиваются с нечеловеческими названиями. Приходится переименовывать.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Aleksandr Prilutskiy [?]
При удаленном подключении через Интернет обращения по сети иногда жутко тормозят, и даже бывают что приводят к зависанию программы. Пока не могу придумать как это решить, и боюсь что передача даже небольшого торрент-файла в запросе может значительно все тормозить.
Это можно решить если использовать WinHttp.au3 переписав функцию _HTTPRequest


Добавлено:
Сообщение автоматически объединено:

И еще можно JSON парсить не через StringTrimLeft, StringInStr и т.п. А этим JSMN
 
Автор
Aleksandr Prilutskiy

Aleksandr Prilutskiy

Знающий
Сообщения
29
Репутация
9
Немного поправил программу:
- добавлены запросы на подтверждение при удалении закачек с возможностью отключить запрос на удаление завершенных закачек;
- добавлено отображение завершенных закачек с разделением на тех. которые раздаются и раздача которых приостановлена;
- исправлена ошибка отображения полосы процента выполнения всех закачек (внизу) при изменении размеров окна;
- в окне подсказки добавлена ссылка на эту страницу форума со значком QR-кода;
- немного изменен текст программы.

Стартовые сообщения темы поправил. Файлы для скачивания обновил.

p.s. с WinHttp.au3 и с парсингом пока не успел разобраться.
 
Автор
Aleksandr Prilutskiy

Aleksandr Prilutskiy

Знающий
Сообщения
29
Репутация
9
inververs сказал(а):
Это можно решить если использовать WinHttp.au3 переписав функцию _HTTPRequest
Спасибо за совет.
Сегодня попробовал использовать WinHttp.au3.
Функция _HTTPRequest выглядит более красиво. От _Base64Encode получилось отказаться совсем.
Но тормозит не меньше!
Вечером попробую по локальной сети, но через Интернет тормозит. Таймауты не спасают пока.
 
Автор
Aleksandr Prilutskiy

Aleksandr Prilutskiy

Знающий
Сообщения
29
Репутация
9
Внес в программу существенные изменения.
Собственно сделал все, о чем писал inververs + поправил выявленные косяки.
Теперь не нужно мучиться с настройками каталогов чтобы работало добавление файлов. Только вот с отправкой torrent-файла через POST-запрос пришлось сильно повозиться.
С WinHttp и JSMN код стал намного лаконичнее. Но проблему с зависанием программы при лагах когда подключаюсь удаленно через Интернет пока решить не удалось.
Стартовые сообщения темы поправил. Файлы для скачивания обновил.
Пришлось часть информации из стартового сообщения темы вынести во 2-е сообщение, так как текст программы большой, и с дополнительной информацией форум не давал опубликовать сообщение - писал что больше 50000 символов.
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Кстати. В версии utorrent 3.4.2 веб интерфейс не отличить от реальной программы и похоже полностью его повторяет
 
Автор
Aleksandr Prilutskiy

Aleksandr Prilutskiy

Знающий
Сообщения
29
Репутация
9
Доработал программку.
Теперь она умеет искать информацию о фильмах по имени скаченных файлов. И переименовывает файлы в соответствии с наименованием фильма по шаблону.
Выглядит так:

Снимок:

Это та же программа, только теперь она переключает интерфейс в режим управления закачками или режим управления скаченными файлами.
Программа запускает поиск на сайте http://www.kinopoisk.ru/ и представляет результаты поиска в списке.
Нажимая в списке на разные элементы в окошко подгружается картинка постера этого фильма (если таковой есть). По этому постеру я легко ориентируюсь в том, какой именно фильм соответствует файлу.
Дальше - переименовать файл очень просто.

Обновленный текст не выкладываю.
1. Потому что не уверен что это интересно (все таки это отдельная задача).
2. Исходник получился очень большой и не влезет в ограничения, накладываемые к сообщениям на этом форуме.
3. Главное - Программа не доделанная, чтобы представить её на общее обозрение.
 
Автор
Aleksandr Prilutskiy

Aleksandr Prilutskiy

Знающий
Сообщения
29
Репутация
9
Есть идея привязать программку к проводнику виндовс или к обработчику расширений, чтобы при скачивании торрент-файлов или при попытке их открыть программка запускала их закачку на дефолтном сервере с установленным uTorrent.
У кого есть наработки по обработке расширений или добавления обработки файлов определенного типа в браузер или проводник?
 

oesoes

xor eax,eax
Сообщения
171
Репутация
9
Aleksandr Prilutskiy [?]
У кого есть наработки по обработке расширений или добавления обработки файлов определенного типа в браузер или проводник?
Не мудрено. Делается через: HKEY_CLASSES_ROOT - http://delphiru.ru/other/201-assotiated-ext-app (код да делфи, но он там не сильно и нужен, т.к. и так все ясно предельно)
 
Автор
Aleksandr Prilutskiy

Aleksandr Prilutskiy

Знающий
Сообщения
29
Репутация
9
oesoes сказал(а):
Aleksandr Prilutskiy [?]
У кого есть наработки по обработке расширений или добавления обработки файлов определенного типа в браузер или проводник?
Не мудрено. Делается через: HKEY_CLASSES_ROOT - http://delphiru.ru/other/201-assotiated-ext-app (код да делфи, но он там не сильно и нужен, т.к. и так все ясно предельно)
Спасибо. Сделал.
Программа разрослась очень сильно (не только из-за привязки торент-файлов, в основном из-за управления загруженными файлами). Так что новую версию не смогу уже выложить с исходником. Только вложением.
 
Автор
Aleksandr Prilutskiy

Aleksandr Prilutskiy

Знающий
Сообщения
29
Репутация
9
В результате доработок программы, родилась версия, которую можно считать 1.0.0.
Буду рад, если кого то она заинтересует.
Постараюсь ответить на все ваши вопросы и учесть все предложения.

Я исправил первые 2 сообщения, под текущую версию программы, разделив описание работы самой программы и описание исходника.
 
Верх