motofan logo
> 

Парсинг rpod.ru и прочих подкаст

Zorge.R
сообщение 16.8.2010, 15:01


Ветеран
Group Icon

Группа: System Administrators
Сообщений: 1 915
Регистрация: 4.10.2006
Из: рук в руки
Пользователь №: 101 800
Модель телефона: Note 9 Copper 512Gb
Прошивка: 1CR

Рейтинг: 2510



я обленился открывать страницу науки 2.0, а тут еще повод сделать все автоматом.

ссылка на 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.zip   ( 1.08 килобайт ) Кол-во скачиваний: 153


вот код скрипта:
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
Прикрепленный файл podcast.grabber.zip   ( 1.08 килобайт ) Кол-во скачиваний: 153
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить

Сообщений в этой теме

Парсинг rpod.ru и прочих подкаст · Компьютеры, операционные системы, софт и железо · Forum
 

Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 31.7.2025, 20:28

Форум живёт: