我看一种将iTunes Podcast ID转换为播客制作人提供的RSS feed的方法。

我知道 RSS发电机, ,可以用来生成链接到播客的供稿,但是这些链接与HTML页面有关。

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

我看了看 会员API文档 这给了您一些不错的JSON。这给你一个 collectionViewUrl 与RSS发电机中给出的相同,顺便说一句 iTunes链接生成器. 。它还给你 id, ,以及其他所有内容,包括未托管Phobos上的预览音频文件。

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

(实际上,我更喜欢模糊的支持,而在Java中,这并不涉及HTML刮擦)。

有帮助吗?

解决方案

通过来自 这些 问题,我找到了一种做我想做的方法。

查找播客的示例

首先:使用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。

这为您提供了播客的原子供稿。您需要使用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,包括Feed URL。

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

这可能是这样的XPath:

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

免责声明

不完全确定任何这种情况有多稳定,或者是合法的。 YMMV。

其他提示

一旦拥有ID,就可以在“查找”中使用它

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

您应该通过用JSON解析响应来获得所需的东西

为了详细说明@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/f9fad123bef27bebac665847c788484cd9

我搜索了很长时间来解构iTunes播客提要。这是一个包含元数据的PLIST,其中一个是RSS feed。我的博客文章 如何在Android上订阅iTunes播客 具有PHP中的代码和JavaScript中的链接,可从单个iTunes链接中提取RSS feed的URL。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top