Децентрализованный музыкальный проигрыватель

Всем привет. Хочу рассказать о проекте, над которым работаю в свободное время. Назвал я его «Патефон» и это полностью децентрализованный, распределённый, безсерверный, p2p музыкальный проигрыватель. Вот так выглядит актуальная версия программы:

Децентрализованный музыкальный проигрыватель P2P, Децентрализация, Музыка, Плеер, Халява, Open Source, Приложение, Длиннопост, Скриншот

Обмен альбомами происходит напрямую между пользователями. Как только кто-то расшаривает альбом, приложение тут же начинает рассылать его остальным участникам сети. При этом рассылается не сама музыка, а только её метаинформация: название альбома / артиста, треклист, уникальные хэш-суммы обложек и аудио-файлов.


Сами файлы композиций будут скачаны только в том случае, если вы добавите соответствующие треки в плейлист. Таким образом каждый участник сети хранит и раздаёт только ту музыку, которую слушает сам. При этом доступность и скорость скачивания музыки напрямую зависит от количества раздающих её пользователей (как в торрентах).


P2P-системы известны своей устойчивостью к цензуре, блокировкам и региональным ограничениям. «Патефон» не исключение, поэтому будет работать хоть за Великим Китайским Фаерволом, хоть в КНДР, хоть на Марсе (наверное, не проверял).


Кроме того, если пользователю отключат интернет, он всё ещё сможет пользоваться приложением в своей домашней сети чтобы, например, слушать на ноутбуке музыку, расшаренную со стационарного PC.


Всё описанное выше доступно в актуальной версии приложения. Дальше я расскажу о запланированных нововведениях.


«Отложенный поиск» даст возможность создавать поисковые запросы, которые будут работать в фоне до тех пор, пока не появятся необходимые результаты. Как только это случится, пользователь получит уведомление и сможет незамедлительно приступить к прослушиванию. Пригодится для случаев, когда интересующий пользователся альбом ещё не вышел а пропустить не хочется.


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


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


Кроме того, есть планы на «безголовую» версию приложения, которую можно будет запустить на домашнем медиасервере и подключаться к ней с остальных устройств через браузер. Если вы пользуетесь Plex, то знаете, насколько это удобно.


А теперь о недостатках:


- Скорость скачивания и музыкальное разнообразие растёт вместе с количеством пользователей, поэтому на ранних этапах будут проблемы и с тем и с другим.


- Каждый раз, когда вы расшарите альбом, он будет скопирован в специальную папку. Таким образом на каждый гигабайт опубликованной музыки будет занят ещё один гигабайт. Но это не навсегда.


- «Патефон» не обеспечивает анонимности пользователя. Не составит большого труда посмотреть, что вы раздаёте, и «вычислить вас по IP».


- Приложение всё ещё на ранней стадии развития, так что если словите баг - не удивляйтесь а смело репортите issue на GitHub.


- - - - - - - - - - - - - - -


Вот и всё. Если проект вас заинтересовал, то добро пожаловать на:


Сайт приложения

Твиттер

GitHub


Актуальные версии программы доступны как на сайте, так и на GitHub. Есть сборки для Mac, Linux и Windows.


- - - - - - - - - - - - - - -


Технические детали


«Патефон» использует современный протокол распределённого обмена данными IPFS («МежПланетарная Файловая Система»). Если вы смотрели «Кремниевую долину», то что-то очень похожее разрабатывают главные герои последние два сезона.


Само приложение написано на Electron.js — популярном кроссплатформенном фреймворке для создания десктопных приложений при помощи стандартных веб-технологий.


Спасибо за внимание! Отдельная благодарность @DEgITx за помощь в разработке и подготовке статьи к публикации.

Вы смотрите срез комментариев. Показать все
2
Автор поста оценил этот комментарий

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

раскрыть ветку (23)
Автор поста оценил этот комментарий

Мой ноут раздаёт пачку. Поймаете или нет - как повезёт.

раскрыть ветку (22)
4
Автор поста оценил этот комментарий

в смысле как повезет? какой-то синхронизации с метаданными, которые раздаются - нет? и можно так годами сидеть-висеть тупо с одним своим альбомом?

раскрыть ветку (4)
2
Автор поста оценил этот комментарий

Синхронизация есть, постоянного источника есть. Если во всём итнернете всего два патефона, то да, можно и годами просидеть без результата.

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

ну, если 2 источника, то мы просто обязаны обменяться метаданными. если 101 источник - я должен получить метаданные от 100 источников - нет?


если нет - вот главный вопрос, по важности наравне с анонимностью (имхо, даже важнее, т.к. существуют легальные к распространению композиции, которые в данной сети нельзя найти "потому что не повезло").

раскрыть ветку (2)
1
Автор поста оценил этот комментарий
ну, если 2 источника, то мы просто обязаны обменяться метаданными. если 101 источник - я должен получить метаданные от 100 источников - нет?

а как? если ты не знаешь где искать второго и второй не знает где искать тебя :)

нормального центра координации, где можно взять список источников то, как я понимаю нет.

вобщем в итоге получается какой-то недо-DC/недоторрент.

1
Автор поста оценил этот комментарий

Не обязаны. В p2p сетях участники не знают друг о друге заранее, связи устанавливаются опосредованно.


Это не является в случае патефона проблемой, потому что цель сети в распределении информации среди большого количества участников, чтобы не было важно "у кого" а имело значение только "что" ты хочешь скачать. Успешный "точечный" обмен здесь не важен.

3
Автор поста оценил этот комментарий

А это от чего-то зависит? Я далеко не эксперт в p2p, объясните, как происходит поиск раздающих?

раскрыть ветку (16)
2
Автор поста оценил этот комментарий

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


p2p-сети образуются труднопредсказуемыми пузырями, которые регулярно меняют свою структуру и не обязательно соприкасаются друг с другом.

раскрыть ветку (15)
2
Автор поста оценил этот комментарий

А есть какие-то децентрализованные средства получения информации о пирах? К примеру, раздача адресов известных пиров вместе с метаинформацией об альбомах, или что-то вроде того?

раскрыть ветку (14)
3
Автор поста оценил этот комментарий

Так оно примерно уже и работает.


Когда IPFS на вашем компе стартует, он связывается со специальным сервером, у которого забирает список актуальных пиров, а так же просит добавить ваш комп в этот список. После этого он берёт этот список и стучится по всем указанным там адресам, те в свою очередь отдают ему свои списки пиров. Таким образом обновляется и поддерживается карта сети.


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

раскрыть ветку (13)
2
Автор поста оценил этот комментарий

таки сервак таки есть. Именно его вы назвали децентрализатором?

раскрыть ветку (10)
1
Автор поста оценил этот комментарий

А где я это слово использовал?

раскрыть ветку (9)
2
Автор поста оценил этот комментарий

в заголовке поста, в другой форме.

это не децентрализованная сеть.

раскрыть ветку (8)
1
Автор поста оценил этот комментарий

Ну тогда ни одна сеть, которая использует DHT, не является децентрализованной.

раскрыть ветку (7)
2
Автор поста оценил этот комментарий

нет. Только при наличии управляющего сервера, а он есть далеко не всегда

раскрыть ветку (6)
Автор поста оценил этот комментарий
со специальным сервером,

достаточно положить этот айпи сервера и всё ? сети больше не будет

а вычислить его особого труда не составит

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Нет, просто вместо пары секунд потребуется пара минут чтобы найти других пиров. Читайте вот эту ветку #comment_117494436

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку