从iTunes ID中查找播客源的URL。 (iTMS API)

时间:2010-02-21 16:13:55

标签: api rss itunes podcast

我正在研究一种将iTunes播客ID转换为播客制作者所服务的RSS源的方法。

我知道RSS generator,可用于生成播客链接的Feed,但这些链接指向HTML页面。

如果你打开了iTunes,你可以通过导出到OPML来手动导出播客列表,这样我们就可以推测iTunes最终知道如何解码它们(即它们不是专门通过iTMS主机)。 p>

我看了Affiliate API document,它给了你一些不错的JSON。这会给你一个collectionViewUrl,它与RSS生成器中给出的id相同,顺便提一下iTunes Link Generator。它还会为您提供{{1}}以及其他一些内容,包括预览音频文件,而不是托管在phobos上。

此时,我正在寻找任何可以帮助我解决这个问题的东西,包括任何语言,非官方或非正式。

(实际上,我更喜欢隐约支持的东西,而且在Java中,它不涉及HTML抓取)。

4 个答案:

答案 0 :(得分:15)

通过these two个问题的答案组合,我找到了一种方法来做我想做的事。

查找播客的示例

首先:使用RSS生成器从iTunes中获取播客列表。我不确定查询参数是如何工作的,但这里是美国顶级技术播客的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 ID,但是您正在寻找以下XPath中找到的URL中包含的数字ID:

/atom:feed/atom:entry/atom:link[@rel='alernate']/@href

例如,优秀的JavaPosse的id为81157308。

问题的答案

获得该ID后,您可以获得另一份文件,告诉您最后一集和原始供稿网址。这里的问题是您需要使用iTunes用户代理来获取此文档。

e.g。

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,包括供稿网址。

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

XPath可能类似于:

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

声明

不完全确定这是多么稳定,或者它是多么合法。 YMMV。

答案 1 :(得分:4)

只要您拥有该ID,就可以在

中定义的查找中使用它

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

通过使用JSON

解析响应,您应该得到所需的内容

答案 2 :(得分:1)

详细说明@ juhariis&#39;回答,这里是从json(python3)中提取feed url的基础知识:

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

答案 3 :(得分:0)

我搜索了很长时间来解构iTunes播客源。它是包含元数据的plist,其中一个是RSS提要。我的博文How to subscribe to iTunes podcasts on Android包含指向php和javascript中代码的链接,用于从单个iTunes链接中提取RSS源的URL。