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

jam*_*esh 14 api podcast rss itunes

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

我知道RSS生成器,它可用于生成播客链接的源,但这些链接是HTML页面.

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

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

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

(实际上,我更喜欢模糊地支持的东西,而且在Java中,它不涉及HTML抓取).

jam*_*esh 16

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

查找播客的示例

首先:使用RSS生成器从iTunes中获取播客列表.我不确定查询参数是如何工作的,但这里是美国顶级科技播客的RSS源.

http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/ws/RSS/toppodcasts/sf=143441/limit=25/genre=1318/xml
Run Code Online (Sandbox Code Playgroud)
  • sf与国家有关,是可选的.如果没有,我猜这个默认为全局.
  • genre与流派有关,是可选的.我猜这个默认为"所有类型"的缺席.
  • limit 是可选的,似乎默认为9.

这为您提供了播客的Atom供稿.您需要使用XPath进行一些精简才能获得播客的ITMS ID,但是您正在寻找以下XPath中找到的URL中包含的数字ID:

/atom:feed/atom:entry/atom:link[@rel='alernate']/@href
Run Code Online (Sandbox Code Playgroud)

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

问题的答案

获得该ID后,您可以获得另一个文档,该文档将告诉您最后一集和原始供稿网址.这里的问题是您需要使用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"
Run Code Online (Sandbox Code Playgroud)

这是一个plist,其中包含有关播客的一些元数据,包括Feed网址.

<key>feedURL</key><string>http://feeds.feedburner.com/javaposse</string>
Run Code Online (Sandbox Code Playgroud)

这个XPath可能是这样的:

//key[@text='feedURL']/following-sibling::string/text()
Run Code Online (Sandbox Code Playgroud)

放弃

不完全确定这是多么稳定,或者它是多么合法.因人而异.

  • 对我来说很棒!我正在通过--user-agent“ iTunes / 9.1.1” (2认同)

juh*_*iis 5

拥有ID后,您就可以按照以下定义在查找中使用它

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

您应该通过使用JSON解析响应来获得所需的内容