从iTunes ID中找到播客供稿的URL。 (ITMS API)
题
我看一种将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,就可以在“查找”中使用它
您应该通过用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。