【问题标题】:Finding the URL for podcast feeds from an iTunes id. (iTMS API)从 iTunes id 中查找播客源的 URL。 (iTMS API)
【发布时间】:2010-02-21 16:13:55
【问题描述】:

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

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

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

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

此时,我正在寻找任何可以帮助我解决这个问题的方法,包括任何语言,无论是否是非官方的。

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

【问题讨论】:

    标签: api rss itunes podcast


    【解决方案1】:

    通过结合thesetwo问题的答案,我找到了做我想做的事情的方法。

    查找播客的示例

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

    【讨论】:

    • 非常适合我!我正在传递 --user-agent "iTunes/9.1.1"
    • 可以确认到今天这仍然有效,所以稳定性看起来不错。 :)
    • 今天仍然很好用,只需像这样增加 iTunes 版本:--user-agent iTunes/12.8.0 以避免 showUpgradePage 重定向。
    【解决方案2】:

    一旦你有了 id,你就可以按照定义在查找中使用它

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

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

    【讨论】:

    【解决方案3】:

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

    【讨论】:

    • feedUrl 并不总是存在,因此它不能正常工作。
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 2012-02-08
      • 2010-11-25
      • 2012-06-22
      • 2013-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2013-08-29
      相关资源
      最近更新 更多