Поиск URL для каналов подкастов по идентификатору iTunes. (iTMS API) - PullRequest
12 голосов
/ 21 февраля 2010

Я рассматриваю способ преобразования идентификатора подкаста iTunes в канал RSS, который обслуживает производитель подкаста.

Я знаю о RSS-генераторе , который можно использовать для создания канала ссылок на подкасты, но эти ссылки относятся к HTML-страницам.

Если у вас открыт iTunes, вы можете вручную экспортировать список подкастов, экспортировав в OPML, поэтому мы можем предположить, что iTunes в конечном итоге знает, как их декодировать (то есть они не проходят исключительно через хост iTMS).

Я посмотрел на Партнерский API-документ , который возвращает вам хороший JSON. Это дает вам collectionViewUrl, который совпадает с указанным в генераторе RSS, и, кстати, Генератор ссылок iTunes . Он также дает вам id и целый ряд других вещей, включая аудиофайл предварительного просмотра, который не размещен на Фобосе.

На данный момент я ищу что-нибудь, что помогло бы мне решить этот вопрос, включая любой язык, неофициальный или нет.

(на самом деле, я бы предпочел что-то неопределенно поддерживаемое, а в Java это не включало бы очистку HTML).

Ответы [ 4 ]

15 голосов
/ 21 октября 2010

Посредством комбинации ответов из этих двух вопросов я нашел способ сделать то, что я хочу.

Пример поиска подкастов

Во-первых: возьмите список подкастов из 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.

Это дает вам Atom ленту подкастов. Вам нужно будет немного сперлинговать с 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"

Это список, содержащий некоторые метаданные о подкасте, включая URL канала.

<key>feedURL</key><string>http://feeds.feedburner.com/javaposse</string>

XPath для этого может быть что-то вроде:

//key[@text='feedURL']/following-sibling::string/text()

Отказ

Не совсем уверен, насколько это стабильно или насколько законно. YMMV.

4 голосов
/ 06 января 2015

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

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

Вы должны получить то, что вам нужно, проанализировав ответ с помощью JSON

1 голос
/ 14 ноября 2016

Чтобы уточнить ответ @juhariis, вот основы извлечения URL фида из 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

0 голосов
/ 07 сентября 2013

Я долго искал, чтобы деконструировать канал подкаста iTunes. Это список, содержащий метаданные, одним из которых является канал RSS. В моем блоге Как подписаться на подкасты iTunes на Android есть ссылки на код в php и javascript для извлечения URL-адреса RSS-канала из отдельной ссылки iTunes.

...