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

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

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

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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

Твиттер

GitHub


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


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


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


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


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


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

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

А откуда изначально берется музыка? Грузят пользователи? Ну тогда здравствуй, 10 версий одного трека, отличающихся частотой, обложкой, символом в названии или еще чем-то подобном.

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

План пока такой:


- пойманные альбомы формируют кэш-ленту ограниченных размеров (сейчас 50 000), она регулярно обновляется (вкладка Discover)

- из этого кэша пользователь будет доставать то, что его интересует в коллекцию любимых альбомов

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

- в какой-то момент патефон плавно меняет пропорции рассылки альбомов: начинает рассылать реже из кэша, чаще из "любимых"

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


Есть альтернативные предложения или дополнения - смело предлагаейте.

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

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

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

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

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

А можно уточнить, что подразумевается под обфускацией?

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

Да просто прикрутить obfs4 и все. Хотя ладно, не просто)

А вообще подразумевается обфускация трафика - то есть маскировка его под что-то иное, например под https (как в случае с shadowsocks), или под шифрованный voip-трафик (идеальный вариант - типа это voip-конференция, а с разных ipfs-хостов тащить разный трафик с фиксированным битрейтом).

И необходимо это для того, чтобы обеспечить невозможность блокировки отдельных частей сети. Кроме того, это серьезно защищает от mitm/hijacking - чтобы кто-нибудь не встал посередине и не предъявил повестку в суд за нарушение авторских прав.

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

1) Используя local storage (или что там за альтернатива кукисам в браузере, забыл как зовется) в браузере, или просто небольшое количество памяти в отдельном приложении, можно вести небольшую базу с рейтингом пользователей и треков. Отдельные базы авторов можно подписывать асимметричным ключом. В целом, механизм можно использовать для хранения почти любой инфы о треках и тд.
2) Понадобится обфускация, иначе в той же Германии придется постоянно отбиваться от штрафов. Так что лучше подвинуть в роадмапе криптосвистелки на менее далекий срок. Это позволит взять большую аудиторию еще в период альфы. А также почти полностью исключить вероятность появления писем счастья - и не словить плохую репутацию.

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

Есть идея добавлять профили vk, soundcloud, яндекса и других. Удачно скачавшиеся треки добавляются в библиотеку и доступны другим.

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

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

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

Ну, часть можно через хеш решить, нет?

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