15

我正在研究一种将 iTunes 播客 ID 转换为播客制作人提供的 RSS 提要的方法。

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

如果您打开了 iTunes,您可以通过导出到 OPML 手动导出播客列表,因此我们可以推测 iTunes 最终知道如何解码它们(即它们不完全通过 iTMS 主机)。

我查看了Affiliate API 文档,它为您提供了一些不错的 JSON。这给你一个collectionViewUrl与 RSS 生成器中给出的相同的,顺便说一下,iTunes 链接生成器。它还为您提供了id, 和一大堆其他内容,包括不在 phobos 上的预览音频文件。

在这一点上,我正在寻找任何可以帮助我解决这个问题的东西,包括任何语言,无论是非官方的还是非官方的。

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

4

4 回答 4

21

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

查找播客的示例

首先:使用 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 进行一些 sperlunking 以获取播客的 ITMS id,但您正在寻找包含在以下 XPath 中的 URL 中的数字 id:

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

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

问题的答案

获得该 ID 后,您可以获得另一个文档,该文档将告诉您最后一集和原始提要 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。

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

用于此的 XPath 可能类似于:

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

免责声明

不完全确定其中任何一个有多稳定,或者它有多合法。YMMV。

于 2010-10-21T12:18:31.167 回答
5

一旦您有了 id,您就可以在查找中使用它,如

https://affiliate.itunes.apple.com/resources/documentation/itunes-store-web-service-search-api/

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

于 2015-01-06T18:22:49.430 回答
1

为了详细说明@juhariis 的答案,这里是从 json (python3) 中提取提要 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

于 2016-11-14T20:25:51.560 回答
0

我搜索了很长时间来解构 iTunes 播客提要。它是一个包含元数据的 plist,其中一个是 RSS 提要。我的博客文章如何在 Android 上订阅 iTunes 播客有 php 和 javascript 中的代码链接,用于从单个 iTunes 链接中提取 RSS 提要的 URL。

于 2013-09-07T19:50:50.887 回答