Продолжаю знакомить уважаемых читателей с интересными программами из мира open source. Проще говоря, с крутыми проектами на Github, о которых вы, скорее всего, не знали.

Сегодня в меню невероятно полезная утилита Freyr‑js, которая должна понравиться меломанам. Freyr‑js умеет скачивать музыкальные файлы из Spotify, Apple Music и Deezer по веб‑ссылкам и позволяет вам по старинке поддерживать локальную музыкальную коллекцию. Без подписок, с сохранением полного контроля над своей фонотекой и, как правило, с высоким битрейтом. Круто? Ещё бы! Забегая вперёд: да, есть некоторые ограничения и нюансы, но они не портят общую картину.

А это вообще законно?

Как бы, нет, но да. Честно говоря, меня (приятно) удивило беспроблемное легальное существование Frey‑js на Github в течение уже нескольких лет при том, что мир копирайта оккупирован крупными корпорациями, которые старательно прячут от вас исходные файлы фильмов и музыки — да‑да, именно для того чтобы вы не смогли их копировать как вам хочется. Но, судя по всему, Freyr‑js ничего формально не нарушает, так как, в отличие от тех же торрентов, даёт вам возможность только скачивать музыку, не раздавая её другим. А значит, речь идёт о таких понятиях как добросовестное использование (fair use) и личное использование (personal use). В ряде стран вам могут сказать, что формально вы нарушаете закон, но до тех пор пока вы используете контент в личных целях, реально вам ничего не грозит. Короче говоря, всё нормально!

Установка

Под капотом Freyr‑js использует набор Nodejs‑модулей, которые последовательно получают метаданные из предоставленной вами ссылки на трек/альбом/исполнителя, затем ищут соответствующие треки на Youtube Music, скачивают их посредством youtube-dl, конвертируют в контейнер M4A, аккуратно раскладывают по папочкам, добавляют обложки и т. п.

Установить Freyr-js просто. Вам понадобится одна из свежих версий Nodejs и пакетный менеджер к нему: npm или yarn. Для npm команда установки выглядит так:

npm install -g freyr

Кому-то будет удобно использовать Docker-контейнер:

alias freyr='docker run -it --rm -v $PWD:/data freyrcli/freyrjs'

Дальше надо просто дать команду вида freyr <url>, где вместо <url> указать ссылку на то, что именно вы хотите скачать. Давайте попробуем сделать это без регистрации на музыкальных сервисах. Обратите внимание, что нам понадобится зайти именно на веб-версии соответствующих плееров. Это может быть не очевидно, т.к. стандартно гугл будет вас выкидывать на страницы подписки. Используйте поисковые запросы вида apple music web player, spotify web player и deezer web player.

Время тестов! Давайте посмотрим, как именно работает программа прямо сейчас.

Apple Music

С данным сервисом меня ждал облом: если пару месяцев назад он у меня работал (поверьте на слово), то на момент написания этих строк попытка что-либо скачать возвращает ошибку 401. Причина: у Freyr-js устарел временный токен, который даёт доступ к API сервиса. Да, можно получить его самому и добавить в conf.json, но факт остаётся фактом: из коробки Apple Music теперь не скачивается (надеюсь, временно).

При наличии же токена всё должно работать: Freyr-js умеет скачивать всё, для чего Apple Music предлагает кнопку Share. Ссылки будут работать для треков, альбомов, исполнителей.

Spotify

Spotify заблокирован в РФ, поэтому для доступа к веб-плееру понадобится VPN. Дальше всё просто: ищём опцию Поделиться > Копировать ссылку... и вставляем её в качестве аргумента freyr. Всё работает корректно, остаётся лишь подождать скачивания и конвертации.

Deezer

Опять же, в РФ данный сервис заблокирован, поэтому для доступа к его веб-странице понадобится VPN. Далее нужно иметь в виду, что ссылки, которые генерирует сам Deezer по кнопке Share (https://deezer.page.link/...), не годятся: нужны именно URL (https://www.deezer.com/en/...). По этой причине вы не сможете скачать отдельную песню, так как Deezer не выдает на них ссылки (по крайней мере, я не нашёл, как это сделать). Ну, это меньшее из зол.

Напоследок

Подведём итог: из 3-х поддерживаемых музыкальных сервисов Freyr‑js корректно работает с 2,5. Неплохой результат!:)

Преимущества данной штуки вы и сами видите, поэтому отмечу некоторые ограничения/недостатки:

  • скорость работы довольно низкая: готовьтесь к долгой загрузке и конвертации из‑за довольно неуклюжей схемы, в центре которой находится Youtube Music. Скачивание одного альбома занимает томительные минуты, всего исполнителя — бесконечность.

  • Freyr‑js страдает от той же болячки, что и сами музыкальные/стриминговые сервисы: иногда на месте одной записи оказывается похожая, но другая. У одной и той же композиции может быть несколько версий, студийный/живой варианты и т. д. Метаданные треков при этом часто совпадают.

  • приготовьтесь к тому, что работающий прямо сейчас Freyr‑js может сломаться через неделю или месяц. Причин может быть масса: от протухшего developertoken от Apple, до очередного обновления API Youtube, за которым не успел youtube‑dl. Всё течёт, всё изменяется!

Спасибо, что дочитали! Надеюсь, мой материал оказался вам полезен!

Комментарии (8)


  1. vilgeforce
    00.00.0000 00:00
    +2

    Надо туда торренты прикрутить: программа определяет исполнителя, альбом и трек, а потом быстро качает его с торрента :-D


    1. foxyrus
      00.00.0000 00:00

      del


  1. namikiri
    00.00.0000 00:00
    +1

    Клёвый обзор, но сам инструмент при всём внешнем лоске чёт доверия не вызывает. Почему JS? Ладно, JS, но зачем столько зависимостей, что аж приходится продвигать доскер вместо обычной установки через NPM? Будет ли это корректно работать под Windows? Зачем поддержка Spotify, если качать оно будет всё равно из YT Music? Проще тогда уж самому найти нужный трек и выкачать его всё тем же yt-dl.


    1. Writer Автор
      00.00.0000 00:00

      Проще тогда уж самому найти нужный трек и выкачать его

      Одну-две песни - да, проще. А дальше уже не очень)


    1. paxlo
      00.00.0000 00:00

      yt-dlp не будет качать DRM


  1. foxyrus
    00.00.0000 00:00

    del


  1. yroman
    00.00.0000 00:00

    Аналогичная утилита есть и для Qobuz. Вполне себе выкачивает всё, что нужно. Вот только ваш аккаунт забанят через некоторое продолжительное время использования такой программы.


  1. vanyas
    00.00.0000 00:00

    А он DRM с файлов снимать умеет, или транскодинг делает, прикидываясь плеером? Если второе, то неинтересно