Запись названий треков, проигрываемых на онлайн-радио

2067
osgx

Я часто слушаю онлайн-радио di.fm с VLC. Потоковая передача MP3 через HTTP.

Я хочу записать все названия треков, которые воспроизводятся на этом радио. VLC показывает название дорожки, но при воспроизведении следующей дорожки название теряется.

Я буду использовать эти названия треков, чтобы сделать некоторую статистику (например, найти топ-10) и найти треки, названия которых я не помню полностью.

Возможна ли задача с VLC или другим клиентом Windows?

4
Мне не нужно сохранять реальную музыку (аудио), только теги музыки (текст). osgx 13 лет назад 0
Примечание для близких избирателей: просто потому, что поток идет с веб-сайта, не означает, что использование VLC (которое является тематическим) для записи материала с него не по теме. Я голосую Оставь открытым. Ben N 8 лет назад 0

5 ответов на вопрос

3
approxiblue

VLC (2.2.1 in this example) has an HTTP interface where you can query the currently playing track. You can enable it from the command line:

vlc --extraintf=http --http-host 0.0.0.0:8080 --http-password 'watpasswd' 

or through the GUI (these settings persist through restarts):

  1. Tools > Preferences, Show settings: All
  2. Interface > Main interfaces, check "Web"
  3. Interface > Main interfaces > Lua > Lua HTTP > Password

You can visit http://localhost:8080/requests/status.xml in a browser, enter the password, and you should receive an XML containing a section like this:

<category name="meta"> <info name="title">Jazz</info> <info name="filename">http://example.com/station</info> <info name="genre">smooth</info> <info name="now_playing">Jimmy Sommers - Fly Me To The Moon</info> </category> 

All that remains is to set up a cron job to periodically save the playing track.

#!/bin/bash vlc_status="$(curl --connect-timeout 15 --silent -u :watpasswd http://localhost:8080/requests/status.xml)" # Parse out now-playing track, escape named entities e.g. '&amp;' track=$(echo "$" | xmlstarlet sel -t -v ".//info[@name='now_playing']" | xmlstarlet unesc) # Append new track to log file echo "$track" >> vlc_log.txt # Remove duplicates of new track if any # http://stackoverflow.com/a/1444448/ gawk -i inplace '!x[$0]++' vlc_log.txt 
1
cipricus
  • RadioSure

  • Screamer Radio

  • streamWriter

  • RarmaRadio

  • TapinRadio

0
grawity

VLC включает поддержку отправки треков на Last.fm. Если вы зарегистрируетесь на Last.fm и введете свой пароль в настройках VLC, воспроизводимые треки будут записаны в вашем профиле Last.fm даже со статистикой.

(На самом деле я не уверен, что это работает с потоками. Это может быть только для локальных файлов.)

У меня нет last.fm и я не хочу регистрироваться. Как я могу отправить названия треков в локальный файл? Я могу сделать всю статистику самостоятельно (у меня есть Excel, Perl и AWK для этого). osgx 13 лет назад 0
0
osgx

До сих пор не знаю, как сделать это локально с помощью vlc или любого потокового клиента, но я использовал wget + cron, чтобы получить «3 только что проигранных песни» с веб-сайта этого радио в текстовые файлы.

Этот ответ «плохой» в том смысле, что если кто-то хочет сделать то же самое, но с другим потоком интернет-радио, он должен написать другой сценарий для работы с другой веб-страницей. Я действительно удивлен, что сообщество не может дать лучший ответ, чем этот, и мне бы очень хотелось узнать лучший ответ :-( Сложные программы, такие как vlc / winamp, способны читать названия треков и печатать их на экране - все, что здесь нужно, - это простая программа, которая читает названия дорожек и записывает их в файл. Неужели это действительно сложно? Kevin Buzzard 11 лет назад 1
@KevinBuzzard Это не так. Вы можете сделать это с помощью [только VLC] (http://superuser.com/a/1038343/). approxiblue 8 лет назад 0
0
kinza tahir

Personally I listen to DI premium with Winamp and then use Streamripper to save the tracks. Streamripper is clever enough to save each track as its own file as opposed to one long stream file with track name and artist. Word of warning though is I found Winamp doesn't like sharing bandwidth Streamripper even if there is enough space and you will find that Winamp will jump between "tracks" ( term used loosely as it all connects to DI and is the same stream, the pls file inserts three connections to Winamp ) and unless you have repeat on, it will stop playing. With repeat on you will hear the jump live but it does not get recorded.

DI listener for 7 years. Cant function without it now :) i dont record unless its an epic track. Takes up too much memory.

Hope this helps :)

Похожие вопросы