Тема: Streamripper perl script

Доброго времени суток!
Подскажите, кто пользуется Streamripper для записи потока.
Хочу использовать скрипт, который предоставляется вместе с Streamripper

#! /usr/bin/perl
###########################################################################
# This is an example script that sends external metadata to streamripper.
# It implements an external program that:
#   1) Fetches a web page
#   2) Searches the web page for the artist and title information
#   3) Sends the information to streamripper
# 
# To invoke the script, do this:
#    streamripper URL -E "perl fetch_external_metadata.pl META_URL"
#
# This assumes that META_URL is the URL with the artist/title information
# 
# You will need perl and LWP::Simple installed to run this script. 
# On unix, you install LWP::Simple as root, like this:
#    perl -MCPAN -e 'install LWP::Simple';
# On windows, LWP::Simple is included in the ActiveState perl distribution.
#
# This script is in the public domain. You are free to use, modify and 
# redistribute without restrictions.
###########################################################################

use LWP::Simple;

if ($#ARGV != 0) {
    die "Usage: fetch_external_metadata.pl URL\n";
}
$url = $ARGV[0];

while (1) {
    my $content = get $url;

    if ($content =~ m/title="(.*)" artist="(.*)"/) {
    $title = "TITLE=$1\n";
    $artist = "ARTIST=$2\n";
    $end_of_record = ".\n";
    $meta_data = $title . $artist . $end_of_record;
    syswrite (STDOUT, $meta_data, length($meta_data));
    }
    sleep (10);
}

Делаю все по инструкции в самом скрипте

streamripper URL -E "perl fetch_external_metadata.pl META_URL"

вместо "META_URL" указываю ссылку вида http://url.ru/index.php по которой вывод информация о треке. Вот такого вида:

title="name" artist="track_artist"

но скрипт не выполняет условие:

if ($content =~ m/title="(.*)" artist="(.*)"/) {

и следовательно Streamripper не указывает TITLE и ARTIST в названии файла записи.
Я так понимаю, что вывод по ссылке http://url.ru/index.php неверный.
Как правильно выводить данные для этого perl скрипта?

2

Re: Streamripper perl script

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

title="" artist=""

на странице вобще ничего не должно быть.
Только на кой все это если он метаданные читает?

3

Re: Streamripper perl script

gyurgin_ пишет:

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

title="" artist=""

на странице вобще ничего не должно быть.
Только на кой все это если он метаданные читает?

просто в artist встраивается еще и время трека.
на странице ничего кроме

title="" artist=""


нет

Отредактировано Alex149149 (03-09-2017 16:08:14)

4

Re: Streamripper perl script

Ну значит смотрите зависимости самого срипта, вобще, на какой системе все это у Вас?
И что такое "время трека"? там же есть -D pattern, все можно отформатировать.

5

Re: Streamripper perl script

gyurgin_ пишет:

Ну значит смотрите зависимости самого срипта, вобще, на какой системе все это у Вас?
И что такое "время трека"? там же есть -D pattern, все можно отформатировать.

на Ubuntu.
про -D есть просто трудности у меня. не могу правильно составить вот такой вид:

/usr/name/2017-09-03/15:55:45 - artist - title.mp3

остановился на этом

-D /usr/name/`date +%Y-%m-%d`

как составить дальше не пойму

6

Re: Streamripper perl script

Alex149149 пишет:
/usr/name/2017-09-03/15:55:45 - artist - title.mp3

остановился на этом

-D /usr/name/`date +%Y-%m-%d`

как составить дальше не пойму

Вот так:

-D "/usr/name/`date +%Y-%m-%d/%T` - %A - %T"

А что касается Ubuntu - в самом скрипте же есть:

perl -MCPAN -e 'install LWP::Simple'

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

Отредактировано gyurgin_ (03-09-2017 20:50:27)

7

Re: Streamripper perl script

gyurgin_ пишет:

Вот так:

-D "/usr/name/`date +%Y-%m-%d/%T` - %A - %T"

А что касается Ubuntu - в самом скрипте же есть:

perl -MCPAN -e 'install LWP::Simple'

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

Вроде все логично написали, спасибо большое что помогаете!
Но установил LWP::Simple и скрипт так и не заработал((( Попробовал Ваш вариант pattern-а, но время в название файла не добавилось, только artist и title

8

Re: Streamripper perl script

Да не может быть, можно так:

-D "/usr/name/`date +%Y-%m-%d/%H:%M:%S` - %A - %T"

или так:

-D "/usr/name/`date +%Y-%m-%d/%T` - %A - %T"

или совсем сокаращенно:

-D "/usr/name/`date +%F/%T` - %A - %T"

Пусть запишет несколько фрагментов, после переноса из incomplete время будет на месте.

9

Re: Streamripper perl script

gyurgin_ пишет:

Да не может быть, можно так:

-D "/usr/name/`date +%Y-%m-%d/%H:%M:%S` - %A - %T"

или так:

-D "/usr/name/`date +%Y-%m-%d/%T` - %A - %T"

или совсем сокаращенно:

-D "/usr/name/`date +%F/%T` - %A - %T"

Пусть запишет несколько фрагментов, после переноса из incomplete время будет на месте.

Действительно, подождав немного, файлы из incomplete переместились уже с записью времени.
Спасибо Вам огромное!

perl скрипт к сожалению так и не заработал(((

perl -MCPAN -e 'install LWP::Simple'

установил с root
делал вот так

sudo streamripper URL -E "perl /путь к скрипту/fetch_external_metadata.pl http://url.ru/index.php"

пробовал и /index.html и /index.txt
как думаете, никаких дополнительных команд не нужно добавлять?

10

Re: Streamripper perl script

Ну попробуйте /usr/bin/perl, или дайте линк на Ваш скрипт, если он конечно в паблике.

11

Re: Streamripper perl script

gyurgin_ пишет:

Ну попробуйте /usr/bin/perl, или дайте линк на Ваш скрипт, если он конечно в паблике.

какой день уже мучаюсь и не пойму в чем причина(

скрипт perl "metadata.pl"

#! /usr/bin/perl
###########################################################################
# This is an example script that sends external metadata to streamripper.
# It implements an external program that:
#   1) Fetches a web page
#   2) Searches the web page for the artist and title information
#   3) Sends the information to streamripper
# 
# To invoke the script, do this:
#    streamripper URL -E "perl fetch_external_metadata.pl META_URL"
#
# This assumes that META_URL is the URL with the artist/title information
# 
# You will need perl and LWP::Simple installed to run this script. 
# On unix, you install LWP::Simple as root, like this:
#    perl -MCPAN -e 'install LWP::Simple';
# On windows, LWP::Simple is included in the ActiveState perl distribution.
#
# This script is in the public domain. You are free to use, modify and 
# redistribute without restrictions.
###########################################################################

use LWP::Simple;

if ($#ARGV != 0) {
    die "Usage: fetch_external_metadata.pl URL\n";
}
$url = $ARGV[0];

while (1) {
    my $content = get $url;

    if ($content =~ m/title="(.*)" artist="(.*)"/) {
    $title = "TITLE=$1\n";
    $artist = "ARTIST=$2\n";
    $end_of_record = ".\n";
    $meta_data = $title . $artist . $end_of_record;
    syswrite (STDOUT, $meta_data, length($meta_data));
    }
else{
die "ERROR\n";
}
    sleep (10);
}

файл для парсинга "index.php"

title="titleTest" artist="artistTest"

больше ничего этот файл не содержит (ни html, ни body)

команда запуска

sudo streamripper http://localhost:8000/stream -E "perl /usr/share/doc/streamripper/examples/metadata.pl http://localhost/index.php"

и в итоге в терминале пишет

ERROR
[skipping...    ]  -  [  121kb]

т.е. как я понимаю, не выполняется условие вот этой строчки perl скрипта

if ($content =~ m/title="(.*)" artist="(.*)"/) {

а пути и команды в терминале прописаны верно

12

Re: Streamripper perl script

Я же предложил вариант покажите выдачу срипта как он есть, дайте адрес - хуже от этого не будет, - верно?

13

Re: Streamripper perl script

gyurgin_ пишет:

Я же предложил вариант покажите выдачу срипта как он есть, дайте адрес - хуже от этого не будет, - верно?

сорри, за долгий ответ
вот вывод скрипта http://bot.shn-host.ru/metadata.php

14

Re: Streamripper perl script

походу не работает регулярка((((

15

Re: Streamripper perl script

Приветствую, работает, в таком виде выдает

# perl fetch_external_metadata.pl http://bot.shn-host.ru/metadata.php
TITLE=Miracle (Amice Remix)
ARTIST=Julian Perretta
.
TITLE=Miracle (Amice Remix)
ARTIST=Julian Perretta
.
TITLE=She's On My Mind
ARTIST=JP Cooper
.
TITLE=She's On My Mind
ARTIST=JP Cooper
.