0

我正在用 Swift 编写一个播客应用程序。对于播客搜索,我使用的是 iTunes api,它运行良好。但是,我需要使用手动输入或从 OPML 文件中提取的播客提要 url (xmlUrl) 进行搜索,例如“ https://feeds.megaphone.fm/slatemoney ”。这不是可以在 iTunes api 中使用的参数。人们如何使用此值作为参数来搜索播客?

4

1 回答 1

1

TL:博士;iTunes Search API 不允许针对 feedUrl 进行搜索。相反,我建议根据播客提要的标题和剧集标题查询 iTunes 搜索 API,然后与用户的提要进行比较并选择最佳匹配。

理想情况下,您可以使用 feedURL 字段搜索 [iTunes Search API][1],该字段在您对“播客”实体执行搜索时返回。例子:

     "wrapperType": "track",
      "kind": "podcast",
      "collectionId": 1469835145,
      "trackId": 1469835145,
      "artistName": "Jack Johnson",
      "collectionName": "Football Is Anime Podcast",
      "trackName": "Football Is Anime Podcast",
      "collectionCensoredName": "Football Is Anime Podcast",
      "trackCensoredName": "Football Is Anime Podcast",
      "collectionViewUrl": "https://podcasts.apple.com/us/podcast/football-is-anime-podcast/id1469835145?uo=4",
      "feedUrl": "https://feeds.simplecast.com/gbmDbRU_",
...

但是,feedURL 不是在 API 中搜索的可用属性。iTunes 搜索 API 仅限于以下与播客相关的属性:

titleTerm、languageTerm、authorTerm、genreIndex、artistTerm、ratingIndex、keywordsTerm、descriptionTerm

即使 Apple 提供了通过 feed url 进行搜索的功能,我也不会相信它 100% 的搜索,因为许多播客使用各种形式的 HTTP 重定向,这导致 Apple Podcast 中存储了不同的 feedUrl。例如:您的用户提供http://supercoolpodcast.com/feed,但 Apple 播客可能有https://podcasthost.com/user/supercoolpodcast/feed。因此,如果您在 URL 上进行搜索,它将失败。

您注意到您需要“使用 podcast feed url 进行搜索”,但我不确定您想从 iTunes Search API 获得什么值。由于您可以从 OPML 文件或手动输入的提要 url 获取 feedURL 中的大部分播客元数据,因此我假设您想要获取特定于 iTunes 的数据:collectionId、trackId 或 viewURL。

我建议根据播客提要的标题和剧集标题查询 iTunes 搜索 API,然后与用户的提要进行比较并选择最佳匹配。

  1. 从用户在您的应用程序中提供的播客提要 URL 中提取标题和剧集标题,该 URL 在标签中可用。
  2. 针对 iTunes 搜索 API 对播客标题执行搜索。这里有详细信息 [1],但这里是HTTP 请求的示例
  3. 您可能会得到多个结果。每个结果都提供一个标题,您可以将其与用户的 URL 进行比较,还提供一个 feedUrl,您可以查询剧集标题并用于比较。

    1. 一旦您知道哪个结果是匹配的,原始结果将包含 CollectionId(这是 Apple 用于该特定播客的标识符)以及 trackViewUrl(Apple 用于该播客的公共 URL)。

    [1] https://affiliate.itunes.apple.com/resources/documentation/itunes-store-web-service-search-ap

于 2020-01-07T19:59:20.523 回答