Управление торрент-клиентом через email

Многие люди любят смотреть фильмы, но не любят их качать. Процесс закачки часто занимает больше времени, чем идет сам фильм. Мне это тоже не нравилось. Каждый раз приходя домой хотелось посмотреть что-нибудь новенькое. Пока что-то найдешь и скачаешь, может пройти не один час.
Я решил сократить это время и просматривал рецензии на фильмы в свободное время в метро, на своей старенькой Nokia с браузером Opera Mini. «Как бы хорошо, если бы можно было отправить себе на почту ссылку на фильм. Пришел домой, а он уже скачался», — думал я. После поиска различных решений я нашел замечательный веб-интерфейс к торрент-клиенту. Но воспользоваться им так и не получилось, для этого требуется хороший мобильный девайс, да и на айфоне своего друга я так и не смог заставить сделать то, что я хотел. Как-то всё было сложно.
Других вариантов не было, и я решил написать свое решение по автоматизации закачки фильмов. Решение простое, посылаем сами себе письмо с сабжем «utorrent» и ссылкой (или несколькими ссылками) на страницу с фильмом на rutracker. Специальная программа проверят наш ящик. Если поступила команда, то она скачивает торрент-файл со страницы фильма в определенную директорию. А дальше дело уже за специальным образом сконфигурированным торрент-клиентом (в моем случае это uTorrent).
Все входящие письма, распознанные как команды автоматически помечаются как просмотренные (чтобы лишний раз не захламлять свой ящик). Можно сделать отдельный ящик для этой программы. В данный момент нет никакой защиты от того, что вам кто-то пошлет ссылку с сабжем utorrent. Я посчитал эту функциональность излишней и не стал загромождать приложение. Если вам интересно, то вы можете добавить эту функциональность самостоятельно.
Сам проект на .NET и исходники доступны тут:
http://utorrentremote.codeplex.com/
Конфигурация торрент-клиента выглядит как-то так:

Лог работы программы выглядит примерно так:
22:10:01 Looking for commands in not.for.spam@gmail.com
22:11:06 Received messages: 1
22:11:07 Added rutracker.org/forum/viewtopic.php?t=111222333
22:11:16 OK Logged in to rutracker.org
22:11:16 Trying to download from rutracker.org/forum/viewtopic.php?t=111222333
22:11:22 Torrent file downloaded from dl.rutracker.org/forum/dl.php?t=111222333 to torrents\2011-03-30_22-11-22_888.torrent
В исходниках также есть примеры работы с протоколом IMAP на .NET. На данный момент, кроме базовой функциональности, проект представляет собой интересный playground. Поэтому если у вас будет свободный вечер, то вы можете, скажем, добавить уведомление о том, что команда была получена. Или добавить какие-либо альтернативные торрент-трекеры.
Я старался сделать архитектуру не очень сложной, одновременно понимая, что не смогу сделать код идеальным за короткое время. Поэтому некоторые недочеты могут быть. Оставляйте свои комментарии и пожелания к посту. Я надеюсь, что найдутся энтузиасты, которые смогут добавить ваш любимый торрент-трекер в программу.
(в данный момент я ищу работу в US/UK, если у вас есть что предложить, присылайте на мой емайл programmer.work/at/gmail.com)



комментарии (50)