Ещё одно консольное радио

    cmdradio


    Недавно на хабре проскакивала статья о cmd.fm — консольном интернет радио плеере в браузере, что навело меня на мысль: почему бы не сделать реально консольный радио плеер?

    cmdradio — очень простой интернет радио плеер в коммандной строке. Он сделан специально для тех людей, кто не разбирается в направлениях, не знает названий групп, а просто хочет послушать музыку под настроение.
    Нужно только набрать cmdradio play %genrename%

    Разработка

    Созданием десктопных приложений я никогда до этого не занимался, но под руку попался Visual Studio 2005, так что проект написан на C#, ибо начинать с Си мне показалось слишком тяжело, и тогда бы желание что-либо делать покинуло бы меня слишком быстро.
    Я очень долго искал нормальный источник станций, но, пересмотрев основные, оказалось, что сервисы с нормальным API и большим количеством станций, такие как Shoutcast и TuneIn давно огородили свой API для избранных, и больше никто не предоставляет нормального доступа к списку станций.
    Выход я нашел случайно, в виде Icecast directory, которая отдает огромный список станций в XML размером 4Мб. Заставлять каждый раз пользователя качать такой файл было бы негуманно, да и нагрузку сервер xiph врят ли выдержит большую, так что был написан небольшой сервер на NodeJS, который периодически заносит в базу данных большой плейлист, а на запросы с клиентов выдает конкретную запись, делает поиск по станциям и жанрам. А в скором времени, я надеюсь, что icecast directory прикрутит нормальный API.

    Поддержка Linux пока реализована через Mono.

    Лицензия

    Исходные коды доступны по Do Whatever You Want лицензией, библиотеки Json.NET и BASS под своими лицензиями.

    Пока что официальный сайт. Пишите отзывы, пожелания.
    Ссылки для скачивания: Windows x32, Windows x64, OSX , Linux, ARM (требуется Mono)

    UPD: Для запуска под Windows 8 нужно включить .NET 2.0

    UPD2: В репозиторий добавлены версии для Mono под OSX и Linux.

    UPD3: Можно подписаться на обновления в Google+ и @cmdradio

    UPD4: Версия для ARM (Raspberry Pi и т.д.)

    UPD5:Официальный сайт
    Поделиться публикацией

    Похожие публикации

    Комментарии 51
      0
      У Вас по умолчанию громкость на нуле (по крайне мере в cmdradio.zip), немного сбивает с толку
        +1
        К сожалению я это тоже только что заметил, но я уже перезалил нормальную версию
        –1
        Вы пишете, что
        Нужно только набрать cmdradio play %genrename%
        . На сайте проекта же
        Example:
        radio play rock
        . На самом деле, когда я уже запустил приложение, нужно ввести 'play %genrename%'. Немного сбивает с толку неподготовленных.

        И еще. На Win8 приложение крашнулось. Создал issue на сайте приложения.
          0
          Если вы запустили приложение, то да, нужно вводить команду отдельно. Но можно запускать приложение с параметрами, и оно сразу будет играть.
          В командной строке напишите c:\path_to_cmdfm\cmdfm play rock
          По поводу win8 пока негде проверить, как найду сразу отпишусь
            0
            На 7ке тоже увалилось :(
            Добавьте логи, чтобы было что высылать на проверку.
              0
              Если приложение не запускается, скорее всего это тоже проблема с .NET фреймворком, а если крашится после запуска, то можно запустить в командной строке и тогда ошибку можно будет увидеть и после закрытия приложения
              0
              У меня вот так падает на win8
              System.TypeInitializationException was unhandled
                Message=Инициализатор типа "Un4seen.Bass.Bass" выдал исключение.
                Source=Bass.Net
                TypeName=Un4seen.Bass.Bass
                StackTrace:
                     в Un4seen.Bass.Bass.BASS_Init(Int32 device, Int32 freq, BASSInit flags, IntPtr win)
                     в cmdfm.DriverBass.Play(String url)
                     в cmdfm.Player.Play()
                     в cmdfm.Player.ReadCmd(String[] args)
                     в cmdfm.Program.Main(String[] args)
                InnerException: System.DllNotFoundException
                     Message=Не удается загрузить DLL "bass.dll": Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E)
                     Source=Bass.Net
                     TypeName=""
                     StackTrace:
                          в Un4seen.Bass.Bass.BASS_SetConfig(BASSConfig option, Int32 newvalue)
                          в Un4seen.Bass.Bass.b()
                          в Un4seen.Bass.Bass..cctor()
                     InnerException: 
              

                0
                Судя по всему надо нормально распаковать архив, т.к. не находит bass.dll
                  0
                  Какой архив? Я качал cmdradio.codeplex.com/ и там не было никакого архива, только установщик. После распактовки содержимое папки:

                  1380586191_111101.ico
                  Bass.Net.cdf-ms
                  Bass.Net.dll
                  Bass.Net.manifest
                  Newtonsoft.Json.cdf-ms
                  Newtonsoft.Json.dll
                  Newtonsoft.Json.manifest
                  cmdradio.cdf-ms
                  cmdradio.exe
                  cmdradio.exe.cdf-ms
                  cmdradio.exe.config
                  cmdradio.exe.manifest
                  cmdradio.manifest
                  
                    0
                    Сейчас поставил архив по-умолчанию, с инсталлером какая-то беда, так что он пока не работает
                      0
                      Так работает
                      0
                      Исправил инсталлер
                  0
                  Win 8 x64 запустил из архива, работает.
                    0
                    Вопрос такой — а можно ли радио как-то добавить в PATH, что бы можно было писать в консоли из любой папки команду на проигрывание?
                      0
                      Мой компьютер — свойства — дополнительно — переменные среды — в PATH дописать ;C:\path\to\cmdradio\folder
                        0
                        Спасибо!
                    0
                    Вот решение вашей проблемы под win8, там по-умолчанию отключен .net 2.0, его нужно просто включить. Не подозревал об этом раньше
                    0
                    Подскажите аналог под мак)
                      0
                      И Bass и Json.Net должны спокойно пойти под моно :) Так что проблем быть не должно
                        0
                        Я видел где-то реализацию cmd.fm на питоне, можно использовать её.
                          +1
                          Только что проверил под mono 3.2.3 работает на macos. Только надо маковскую версию libbass скачать отсюда. И поместить libbass.dylib в директорию с плеером.
                            0
                            Могу залить бинарники на сайт если поделитесь
                          0
                          А каким образом из списка станций одного жанра происходит выбор конкретной? Случайным образом?
                          И возможно ли увидеть серверную часть?
                            0
                            Случайно. Сервер можно увидеть, на гитхаб залью, немного позже правда там все очень страшно
                            0
                            А сколько всего радиостанций?
                            Поделитесь списком?
                              0
                              список берется из Icecast directory, периодически обновляется из yp.xml
                              0
                              > play rock
                              Cannot find request data

                              список жанров бедноват, только рок, классика и урбан :(
                                0
                                Сейчас сервер перегружаю, поэтому недоступен поиск, жанров несколько тысяч
                                  0
                                  На 64бит системе падает
                                  > play soft rock
                                  Playing ABCLove [http://streaming201.radionomy.com:80/ABC-Love] <soft>
                                  
                                  Unhandled Exception: System.TypeInitializationException: The type initializer fo
                                  r 'Un4seen.Bass.Bass' threw an exception. ---> System.BadImageFormatException: A
                                  n attempt was made to load a program with an incorrect format. (Exception from H
                                  RESULT: 0x8007000B)
                                     at Un4seen.Bass.Bass.BASS_SetConfig(BASSConfig option, Int32 newvalue)
                                     at Un4seen.Bass.Bass.b()
                                     at Un4seen.Bass.Bass..cctor()
                                     --- End of inner exception stack trace ---
                                     at Un4seen.Bass.Bass.BASS_Init(Int32 device, Int32 freq, BASSInit flags, IntP
                                  tr win)
                                     at cmdfm.DriverBass.Play(String url)
                                     at cmdfm.Player.Play()
                                     at cmdfm.Player.ReadCmd(String[] args)
                                     at cmdfm.Program.Main(String[] args)
                                  
                              0
                              У меня на win7 x64 приложение умирало после play rock, но на cmdradio.codeplex.com/releases/view/113119 есть x64-версия, она заработала.

                              Отличная штука, спасибо!
                                0
                                Следите за обновлениями, по результатам этого поста будет много улучшений!
                                0
                                Спасибо! )
                                  0
                                  А можно ли реализовать запись в файлы?
                                  Чтобы потом, например, на плеере послушать.
                                    0
                                    Планируется
                                    –1
                                    <sarcasm> Подскажите аналог под linux. </sarcasm>
                                      0
                                      MPlayer — прекрасная вещь играет у нас в офисе на Raspberry Pi. Очевидно, есть возможность запустить под Mac, Win и Linux.

                                      И без сарказма.
                                      0
                                      Настроек прокси нет?
                                        0
                                        Используются системные
                                          0
                                          Т.е. для Windows имеются в виду настройки прокси в IE? Введены. Увы, на команду «play Rock» ответ: «Cannot find request data». Да и на любой жанр такой ответ. Подозреваю, что дело в авторизации прокси, которую просто негде указать.
                                            0
                                            Пробовал с бесплатным прокси, все работает, по поводу авторизации вот решение вашей проблемы
                                              0
                                              Спасибо за ссылку, конечно, но что-то не понял, куда вводятся имя пользователя и пароль для авторизации прокси. Браузер запрашивает их в начале каждой сессии работы через прокси, явным образом эти данные в реестре не хранятся. Речь идёт о корпоративном прокси, через который все сотрудники большой корпорации «ходят» в интернет.
                                                0
                                                В программе используется WinHTTP, попробуйте установить выполнить от имени администратора такую команду:
                                                netsh winhttp import proxy source=ie
                                                  0
                                                  Увы, не помогло. Настройки прокси-то оно считало, но там нет ни логина ни пароля, разумеется, и cmdradio их не запрашивает.
                                                    0
                                                    А настройки в формате username:password@proxy_addr оно не принимает?
                                                      0
                                                      Оно — это что? cmdradio? Не знаю. Или команда netsh winhttp import proxy source=ie?
                                      0
                                      «Потому что их уже делали сто раз»
                                      Но у всех, естественно, есть один фатальный недостаток ;)

                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                      Самое читаемое