我正在研究一种将iTunes播客ID转换为播客制作者所服务的RSS源的方法。
我知道RSS generator,可用于生成播客链接的Feed,但这些链接指向HTML页面。
如果你打开了iTunes,你可以通过导出到OPML来手动导出播客列表,这样我们就可以推测iTunes最终知道如何解码它们(即它们不是专门通过iTMS主机)。 p>
我看了Affiliate API document,它给了你一些不错的JSON。这会给你一个collectionViewUrl
,它与RSS生成器中给出的id
相同,顺便提一下iTunes Link Generator。它还会为您提供{{1}}以及其他一些内容,包括预览音频文件,而不是托管在phobos上。
此时,我正在寻找任何可以帮助我解决这个问题的东西,包括任何语言,非官方或非正式。
(实际上,我更喜欢隐约支持的东西,而且在Java中,它不涉及HTML抓取)。
答案 0 :(得分:15)
通过these two个问题的答案组合,我找到了一种方法来做我想做的事。
首先:使用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进行一些精简才能获得播客的ITMS ID,但是您正在寻找以下XPath中找到的URL中包含的数字ID:
/atom:feed/atom:entry/atom:link[@rel='alernate']/@href
例如,优秀的JavaPosse的id为81157308。
获得该ID后,您可以获得另一份文件,告诉您最后一集和原始供稿网址。这里的问题是您需要使用iTunes用户代理来获取此文档。
e.g。
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,包括供稿网址。
<key>feedURL</key><string>http://feeds.feedburner.com/javaposse</string>
XPath可能类似于:
//key[@text='feedURL']/following-sibling::string/text()
不完全确定这是多么稳定,或者它是多么合法。 YMMV。
答案 1 :(得分:4)
只要您拥有该ID,就可以在
中定义的查找中使用它通过使用JSON
解析响应,您应该得到所需的内容答案 2 :(得分:1)
详细说明@ juhariis&#39;回答,这里是从json(python3)中提取feed 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
答案 3 :(得分:0)
我搜索了很长时间来解构iTunes播客源。它是包含元数据的plist,其中一个是RSS提要。我的博文How to subscribe to iTunes podcasts on Android包含指向php和javascript中代码的链接,用于从单个iTunes链接中提取RSS源的URL。