Поиск URL -адреса для подкастов от идентификатора iTunes. (ITMS API)

StackOverflow https://stackoverflow.com/questions/2306470

  •  21-09-2019
  •  | 
  •  

Вопрос

Я смотрю на способ превращения идентификатора подкаста 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.

Другие советы

Как только у вас есть идентификатор, вы можете использовать его в поиске, как определено в

https://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-api.html

Вы должны получить то, что вам нужно, анализируя ответ с помощью 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top