Pull to refresh

Разработка комплексного менеджера загрузок с сетевым интерфейсом

Приветствую вас, Хаброчитатели!!


Общий треп:)

В этом топике мне хочется рассказать о одной из моих идей в области программирования.
Я думаю, всем активным пользователям интернета известен не один менеджер загрузок, а с десяток. Вполне закономерен вопрос «Зачем создавать еще один?». Попробую объяснить свои мотивы. Я задумался над этим проектом по нескольким причинам:
  • Во-первых, я не обнаружил ни одного загрузчика с файлообменных сервисов, написанного на Си (или любом другом не интерпретируемом языке программирования). Все дело в том, что интерпретаторы, кроме того что замедляют работу программы, в какой-то степени снижают ее надежность (у меня последнее время участились случаи, когда после работы загрузчика всю ночь, он перестает реагировать на какие-либо действия, и вешает всю систему)
  • Во-вторых, для полного покрытия потребностей загрузки, на данный момент мне требуются 2 программы (я использую JDownloader и OrbitDownloader) — одна работает с файлообменниками и, в зависимости от ситуации, с обычными http или ftp загрузками. Вторая, благодаря тесной интеграции с IE работает на загрузку продутктов MS с Dreamspark.com. Отсутствие единой программы порой очень затрудняет их использование, так как каждая из них стремится забрать весь трафик на себя.
  • И в-третьих, (что самое важное) мне хочется организовать возможность управления программой по локальной сети. Я занялся организацией домашней сети и хочу один ПК выделить под «центр загрузок». Поскольку в большинстве своем в интернет я выхожу с ноутбука, приходится загрузки останавливать, если требуется взять его с собой.
  • Ну и в-четвертых, это отличный способ выучить не только язык, но и основа работы сети и сетевых программ:)


Общая схема

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

Запчасти для Франкенштейна

Это та часть, из-за которой и была написана эта статья…
Так как написать «с нуля» подобную программу для меня не реально, она будет базироваться на Open Source проектах, в выборе которых я попрошу помочь Вас. На данном этапе я это представляю так:
В основе будет лежать FreeDownloadManager — он мне не особо нравится из-за немаленького размера. В данный момент он выбран только из-за того, что я уже рылся в его исходниках, хотя и не особо глубоко:)
Плагины, на первое время, я предполагаю брать от JDownloader и FreeRapidDownloader. Для этого придется написать небольшую программку, которая будет выполнять роль транспорта: обрабатывать ссылку, возвращать прямой URL, и активировать плагины, т.к они написаны на Java, и возможности непосредственной интеграции их в программу я не вижу. Так же подобная архитектура позволит легко расширять списки имеющихся плагинов, основываясь на базах других программ. Если кто знает Open Sourse проект, который использует плагины к файлообменникам компилирующиеся в машинный код, буду неимоверно благодарен.
И требуется Ваш совет по поводу Torrent-клиента. Требования все те же — легковесность, открытость, желательно использование C/C++.

P.S. Этот пост был написан не для получения инвайта (от которого я тоже не откажусь :)), а как обращение к наиболее информированной аудитории. Буду признателен за примеры программ, код которых может как-то повлиять на разработку или ценные идеи по реализации. Так же буду рад если такая программа уже существует (тогда просто присоединюсь к существующему проекту) или если найдутся добровольцы, которые решат мне помочь (а так же примут на себя ответственность по наставлению меня на путь истинный. Я уже упоминал о слабых знаниях языка, которые компенсируются быстрой обучаемостью и целеустремленностью).
P.P.S. Из-за незнания устройства песочницы, не уверен в возможности участия в комментариях и дальнейшем обсуждении :( Так же извиняюсь за характер изложения, сочинения не являются моей сильной стороной.

Заранее Спасибо всем откликнувшимся.

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.