я обленился открывать страницу науки 2.0, а тут еще повод сделать все автоматом.
ссылка на rpod.ru имеет вид:
или
где
PODCASTID - ID публикации. (порядковый номер публикации)
TRACKID - ID конкретной записи в публикации. (порядковый номер записи)
N - имя файла.
разница между PODCASTID и TRACKID в том что первый, указывает на публикацию, второй на конкретную запись в этой публикации.
при этом N знать не нужно, достаточно обратиться по
так же, страницу подкаста можно открыть по
для примера, откроем
тут видно 3 записи, т.е.
получается если имеем PODCASTID, можешь получить со страницы
ссылку на запись, например
ссылку на саму публикацию, можно взять со страницы публикаций, например
ID публикаций тут лежат в блоках:
режем
и все что после
так же PODCASTID можно сграбить из ленты rss
там блоки такие:
так же есть код вставки плеера:
в котором используется только $TRACKID. плеер в данном случае получает полную ссылку из http://s.rpod.ru/xml/audio/a120417.xml где 120417 - TRACKID.
для того чтобы не выкачивать весь текст http://rpod.ru/get/$PODCASTID/, для получения ссылки, можно попробовать отпарсить http://s.rpod.ru/xml/audio/a$TRACKID.xml
Но там все одной строкой вида:
----------
Вот собственно скрипт (спасибо Abram'у за подсказку с awk -F\" '{print $1}), который качает страницу подкаста, парсит, качает страницу последней или нет публикации, парсит ее и открывает в плеере VLC.
Это конечно не ПХП, но раз сделал для себя, решил поделиться. Можно при небольшой модификации сделать воспроизведение всех записей из публикации, по очереди, можно сделать версию для магикс, для прослушивания подкастов и интернет радио, собственно этим займусь позже.
вот код скрипта:
#!/bin/sh
# prod.ru podcast grabber.
# Zorge.R - 2010
grpath=${0%/*}
podcastname="nauka2-0"
podcastid="0"
trackid="0"
mkdir $grpath/tmp
# качаем главную страницу подкаста
wget -O $grpath/tmp/main.page http://$podcastname.rpod.ru/
# вытаскиваем из нее список публикаций
grep '^ <a class="rpad" amber="post:' "$grpath/tmp/main.page" | sed 's/<a class\=\"rpad\" amber\=\"post\://' | sed 's/^[ \t]*//' | awk -F\" '{print $1}' > $grpath/tmp/podcast.list
# выбор публикации. 1 - последняя, 2 - предпоследняя, и т.д.
pubnum="1p"
podcastid=`sed -n "$pubnum" $grpath/tmp/podcast.list`
# качаем страницу публикации
wget -O $grpath/tmp/podcast.page http://rpod.ru/$podcastid/
# вытаскиваем из нее список записей
grep '^ <a title="Скачать" href="' "$grpath/tmp/podcast.page" | sed 's/<a title\=\"Скачать\" href\=\"//' | sed 's/^[ \t]*//' | sed "s/http:\/\/rpod.ru\/get\/$podcastid\///" | awk -F\\/download\/ '{print $1}' > $grpath/tmp/track.list
# выбираем трек, 1 - первый, 2 - второй и т.д. (по порядку воспроизведения)
trcknum="1p"
trackid=`sed -n "$trcknum" $grpath/tmp/track.list`
# биндим URL
trackURL="http://rpod.ru/get/$podcastid/$trackid/download/"
# открываем в плеере
vlc $trackURL&
# код вставки в html
#
#<object width="500" height="40" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="movie" value="http://s.rpod.ru/swf/playa.swf?xmlURL=http%3A%2F%2Fs.rpod.ru%2Fxml%2Faudio%2Fa$trackid.xml"></param><param name="allowfullscreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://s.rpod.ru/swf/playa.swf?xmlURL=http%3A%2F%2Fs.rpod.ru%2Fxml%2Faudio%2Fa120417.xml" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="40"></embed></object>
#
# или
#<object width="500" height="40" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="movie" value="http://s.rpod.ru/swf/playa.swf?xmlURL=http://s.rpod.ru/xml/audio/a$trackid.xml"></param><param name="allowfullscreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://s.rpod.ru/swf/playa.swf?xmlURL=http://s.rpod.ru/xml/audio/a$trackid.xml" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="40"></embed></object>
#
# удаляем мусор
rm -r $grpath/tmp
Сообщение отредактировал Zorge.R - 16.8.2010, 15:08
ссылка на rpod.ru имеет вид:
Код
http://rpod.ru/get/167833/120419/download/14_08_10_-_На_жару_взглянули_через_микроскоп__Наук.mp3
или
Код
http://rpod.ru/get/$PODCASTID/$TRACKID/download/$N.mp3
где
PODCASTID - ID публикации. (порядковый номер публикации)
TRACKID - ID конкретной записи в публикации. (порядковый номер записи)
N - имя файла.
разница между PODCASTID и TRACKID в том что первый, указывает на публикацию, второй на конкретную запись в этой публикации.
при этом N знать не нужно, достаточно обратиться по
Код
http://rpod.ru/get/$PODCASTID/$TRACKID/download/
и сервер выдаст нужный файл.так же, страницу подкаста можно открыть по
Код
http://rpod.ru/$PODCASTID/
, на ней ссылка на запись идет в блокеКод
<a title="Скачать" href="http://rpod.ru/get/$PODCASTID/$TRACKID/download/$N.mp3" class="size">10.6 Мб</a>
для примера, откроем
Код
http://rpod.ru/167833/
тут видно 3 записи, т.е.
Код
http://rpod.ru/get/167833/$TRACKID_1/download/
Код
http://rpod.ru/get/167833/$TRACKID_2/download/
Код
http://rpod.ru/get/167833/$TRACKID_3/download/
получается если имеем PODCASTID, можешь получить со страницы
Код
http://rpod.ru/get/$PODCASTID/
ссылку на запись, например
Код
http://rpod.ru/get/167833/120419/download/
ссылку на саму публикацию, можно взять со страницы публикаций, например
Код
http://nauka2-0.rpod.ru/
ID публикаций тут лежат в блоках:
Код
<a class="rpad" amber="post:167833" href="http://nauka2-0.rpod.ru/167833.html">На жару взглянули через микроскоп</a>
режем
Код
<a class="rpad" amber="post:
и все что после
Код
<a class="rpad" amber="post:NNNNNN
так же PODCASTID можно сграбить из ленты rss
там блоки такие:
Код
<link>http://nauka2-0.rpod.ru/167833.html</link>
так же есть код вставки плеера:
Spoiler:
Код
<object width="500" height="40" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="movie" value="http://s.rpod.ru/swf/playa.swf?xmlURL=http%3A%2F%2Fs.rpod.ru%2Fxml%2Faudio%2Fa120417.xml"></param><param name="allowfullscreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://s.rpod.ru/swf/playa.swf?xmlURL=http%3A%2F%2Fs.rpod.ru%2Fxml%2Faudio%2Fa120417.xml" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="40"></embed></object>
[close]
в котором используется только $TRACKID. плеер в данном случае получает полную ссылку из http://s.rpod.ru/xml/audio/a120417.xml где 120417 - TRACKID.
для того чтобы не выкачивать весь текст http://rpod.ru/get/$PODCASTID/, для получения ссылки, можно попробовать отпарсить http://s.rpod.ru/xml/audio/a$TRACKID.xml
Но там все одной строкой вида:
Spoiler:
Код
<core><player_settings padding='5,5,5,5' logo='rpod' preset_id='rpod_small' autoplay='0' /><playlist><item id='0'><title url='http://nauka2-0.rpod.ru/167833.html'>На жару взглянули через микроскоп</title><type>audio</type><subtype>mp3</subtype><play url='http://rpod.ru/get/167833/120417/play/14_08_10_-_%D0%9D%D0%B0_%D0%B6%D0%B0%D1%80%D1%83_%D0%B2%D0%B7%D0%B3%D0%BB%D1%8F%D0%BD%D1%83%D0%BB%D0%B8_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D1%81%D0%BA%D0%BE%D0%BF__%D0%9D%D0%B0%D1%83%D0%BA.mp3' duration='646000' rewind='bytes' rewind_url='http://rpod.ru/get/167833/120417/play/14_08_10_-_%D0%9D%D0%B0_%D0%B6%D0%B0%D1%80%D1%83_%D0%B2%D0%B7%D0%B3%D0%BB%D1%8F%D0%BD%D1%83%D0%BB%D0%B8_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%BC%D0%B8%D0%BA%D1%80%D0%BE%D1%81%D0%BA%D0%BE%D0%BF__%D0%9D%D0%B0%D1%83%D0%BA.mp3?start=~A~' rewind_offset='0' rewind_size='10326100' rewind_duration='646000' size='10326100' /><skin preset_id='1' /></item></playlist></core>
[close]
----------
Вот собственно скрипт (спасибо Abram'у за подсказку с awk -F\" '{print $1}), который качает страницу подкаста, парсит, качает страницу последней или нет публикации, парсит ее и открывает в плеере VLC.
Это конечно не ПХП, но раз сделал для себя, решил поделиться. Можно при небольшой модификации сделать воспроизведение всех записей из публикации, по очереди, можно сделать версию для магикс, для прослушивания подкастов и интернет радио, собственно этим займусь позже.
![]() ![]() |
вот код скрипта:
podcast.grabber
Код
#!/bin/sh
# prod.ru podcast grabber.
# Zorge.R - 2010
grpath=${0%/*}
podcastname="nauka2-0"
podcastid="0"
trackid="0"
mkdir $grpath/tmp
# качаем главную страницу подкаста
wget -O $grpath/tmp/main.page http://$podcastname.rpod.ru/
# вытаскиваем из нее список публикаций
grep '^ <a class="rpad" amber="post:' "$grpath/tmp/main.page" | sed 's/<a class\=\"rpad\" amber\=\"post\://' | sed 's/^[ \t]*//' | awk -F\" '{print $1}' > $grpath/tmp/podcast.list
# выбор публикации. 1 - последняя, 2 - предпоследняя, и т.д.
pubnum="1p"
podcastid=`sed -n "$pubnum" $grpath/tmp/podcast.list`
# качаем страницу публикации
wget -O $grpath/tmp/podcast.page http://rpod.ru/$podcastid/
# вытаскиваем из нее список записей
grep '^ <a title="Скачать" href="' "$grpath/tmp/podcast.page" | sed 's/<a title\=\"Скачать\" href\=\"//' | sed 's/^[ \t]*//' | sed "s/http:\/\/rpod.ru\/get\/$podcastid\///" | awk -F\\/download\/ '{print $1}' > $grpath/tmp/track.list
# выбираем трек, 1 - первый, 2 - второй и т.д. (по порядку воспроизведения)
trcknum="1p"
trackid=`sed -n "$trcknum" $grpath/tmp/track.list`
# биндим URL
trackURL="http://rpod.ru/get/$podcastid/$trackid/download/"
# открываем в плеере
vlc $trackURL&
# код вставки в html
#
#<object width="500" height="40" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="movie" value="http://s.rpod.ru/swf/playa.swf?xmlURL=http%3A%2F%2Fs.rpod.ru%2Fxml%2Faudio%2Fa$trackid.xml"></param><param name="allowfullscreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://s.rpod.ru/swf/playa.swf?xmlURL=http%3A%2F%2Fs.rpod.ru%2Fxml%2Faudio%2Fa120417.xml" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="40"></embed></object>
#
# или
#<object width="500" height="40" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="movie" value="http://s.rpod.ru/swf/playa.swf?xmlURL=http://s.rpod.ru/xml/audio/a$trackid.xml"></param><param name="allowfullscreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://s.rpod.ru/swf/playa.swf?xmlURL=http://s.rpod.ru/xml/audio/a$trackid.xml" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="40"></embed></object>
#
# удаляем мусор
rm -r $grpath/tmp
[close]
Сообщение отредактировал Zorge.R - 16.8.2010, 15:08