Поиск URL -адреса для подкастов от идентификатора iTunes. (ITMS API)
Вопрос
Я смотрю на способ превращения идентификатора подкаста iTunes в RSS -канал, который обслуживает продюсер подкаста.
Я знаю RSS Generator, который может быть использован для генерации каналов ссылок на подкасты, но эти ссылки предназначены для HTML -страниц.
Если у вас открыт iTunes, вы можете вручную экспортировать список подкастов, экспортируя в OPML, чтобы мы могли предположить, что iTunes в конечном итоге знает, как их декодировать (то есть они не только проходят через хост ITMS).
Я посмотрел на Партнерский документ API что верет вам хорошего JSON. Это дает вам collectionViewUrl
что то же самое, что и те, которые даны в генераторе RSS, и, кстати, itunes Link Generator. Анкет Это также дает вам id
, и целый ряд других вещей, включая аудиофайл предварительного просмотра, который не размещен на фобосе.
На данный момент я ищу все, что поможет мне решить этот вопрос, включая любой язык, неофициальный или нет.
(На самом деле, я бы предпочел что -то смутно поддерживаемое, и в Java, которое не включало HTML Scraping).
Решение
Через комбинацию ответов из эти два Вопросы, я нашел способ сделать то, что хочу.
Пример поиска подкастов
Во -первых: возьмите список подкастов из iTunes, используя генератор RSS. Я еще не уверен, как работают параметры запроса, но вот RSS -канал для лучших технических подкастов в США.
http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/ws/RSS/toppodcasts/sf=143441/limit=25/genre=1318/xml
sf
относится к стране и является необязательным. Я предполагаю, что это по умолчанию в глобальном, если отсутствует.genre
относится к жанру и является необязательным. Я предполагаю, что это по умолчанию «все жанры» отсутствует.limit
является необязательным и, кажется, по умолчанию до 9.
Это дает вам атомную подачу подкастов. Вам нужно будет сделать немного Sperlunking с XPath, чтобы добраться до ITMS идентификатора подкаста, но вы ищете цифровой идентификатор, содержащийся в URL, найденном на следующем XPath:
/atom:feed/atom:entry/atom:link[@rel='alernate']/@href
Например, отличный Javaposse имеет удостоверение личности 81157308.
Ответ на вопрос
После того, как у вас есть этот идентификатор, вы можете получить еще один документ, который расскажет вам о последнем эпизоде, и оригинальный URL -адрес. Здесь вызывает то, что вам нужно использовать пользовательский агент iTunes для получения этого документа.
например
wget --user-agent iTunes/7.4.1 \
--no-check-certificate \
"https://buy.itunes.apple.com/WebObjects/MZFinance.woa/wa/com.apple.jingle.app.finance.DirectAction/subscribePodcast?id=81157308&wasWarnedAboutPodcasts=true"
Это PLIST, содержащий некоторые метаданные о подкасте, включая URL -файл Feed.
<key>feedURL</key><string>http://feeds.feedburner.com/javaposse</string>
XPath для этого может быть чем -то вроде:
//key[@text='feedURL']/following-sibling::string/text()
Отказ от ответственности
Не совсем уверен, насколько стабильно что -то из этого, или насколько он законно. YMMV.
Другие советы
Как только у вас есть идентификатор, вы можете использовать его в поиске, как определено в
Вы должны получить то, что вам нужно, анализируя ответ с помощью JSON
Чтобы уточнить ответ @juhariis, вот основы извлечения URL -адреса Feed из JSON (Python3):
from urllib.request import urlopen
from urllib.parse import urlparse
import codecs
import json
podcast_url = 'https://itunes.apple.com/us/podcast/grow-big-always/id1060318873'
ITUNES_URL = 'https://itunes.apple.com/lookup?id='
parsed = urlparse(podcast_url)
id = parsed.path.split('/')[-1][2:]
reader = codecs.getreader('utf-8')
with urlopen(ITUNES_URL + id) as response:
feed = json.load(reader(response))['results'][0]['feedUrl']
print(feed)
Вот сценарий/модуль, который я сделал, который использует это: https://gist.github.com/theychx/f9fad123bef27bebac665847c7884cd9
Я давно искал, чтобы деконструировать канал подкаста iTunes. Это плист, содержащий метаданные, из которых один из них является RSS -каналом. Мой пост в блоге Как подписаться на подкасты iTunes на Android имеет ссылки на код в PHP и в JavaScript, чтобы извлечь URL -адрес в RSS -канал из индивидуальной ссылки iTunes.