Сопоставление идентификатора эпизода подкаста Apple с элементом RSS-канала - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь сопоставить идентификатор эпизода подкаста Apple с указанной c записью подкаста в RSS-потоке. Скажем, у меня есть эпизод со следующей ссылкой https://podcasts.apple.com/us/podcast/the-numberphile-podcast/id1441474794?i=1000475383420, так что podcast_id=1441474794 и episode_id=1000475383420. Теперь я могу получить RSS-канал с идентификатором подкаста с помощью этого кода:

from urllib.request import urlopen
import json
import xmltodict

podcast_id = "1441474794"
ITUNES_URL = 'https://itunes.apple.com/lookup?id='
with urlopen(ITUNES_URL + podcast_id) as response:
    res = json.load(response)
    feedUrl = res['results'][0]['feedUrl']
    print(feedUrl)

with urlopen(feedUrl) as response:
    res = xmltodict.parse(response)

with open('res.json', "w") as f:
    f.write(json.dumps(res))

Это дает мне JSON с некоторой общей информацией о подкасте и массивом со всеми эпизодами. Для определенного эпизода c результат выглядит следующим образом:

"item": [
        {
          "title": "The Parker Quiz - with Matt Parker",
          "dc:creator": "Brady Haran",
          "pubDate": "Thu, 21 May 2020 16:59:08 +0000",
          "link": "https://www.numberphile.com/podcast/matt-parker-quiz",
          "guid": {
            "@isPermaLink": "false",
            "#text": "5b2cf993266c07b1ca7a812f:5bd2f1a04785d353e1b39d76:5ec683354f70a700f9f04555"
          },
          "description": "some description here...",
          "itunes:author": "Numberphile Podcast",
          "itunes:subtitle": "Matt Parker takes a quiz prepared by Brady. The YouTube version of this quiz contains a few visuals at https://youtu.be/hMwQwppzrys",
          "itunes:explicit": "no",
          "itunes:duration": "00:55:34",
          "itunes:image": {
            "@href": "https://images.squarespace-cdn.com/content/5b2cf993266c07b1ca7a812f/1541821254439-PW3116VHYDC1Y3V7GI0A/podcast_square2_2000x2000.jpg?format=1500w&content-type=image%2Fjpeg"
          },
          "itunes:title": "The Parker Quiz - with Matt Parker",
          "enclosure": {
            "@url": "https://traffic.libsyn.com/secure/numberphile/numberphile_parker_quiz.mp3",
            "@type": "audio/mpeg"
          },
          "media:content": {
            "@url": "https://traffic.libsyn.com/secure/numberphile/numberphile_parker_quiz.mp3",
            "@type": "audio/mpeg",
            "@isDefault": "true",
            "@medium": "audio",
            "media:title": {
              "@type": "plain",
              "#text": "The Parker Quiz - with Matt Parker"
            }
          }
        },
...]

episode_id=1000475383420 нигде не отображается в ответе RSS-канала, поэтому нет способа найти, какой эпизод соответствует этому идентификатору. Есть ли чистый способ найти серию по идентификатору? Например, вызов API Apple с идентификатором эпизода, который предоставит мне информацию об эпизоде, а затем я смогу сопоставить эту информацию с записью RSS-канала.

1 Ответ

0 голосов
/ 29 мая 2020

Элемент / тег, который должен однозначно идентифицировать выпуск в RSS-канале подкаста:

<guid>

Вот некоторая связанная информация из Apple Podcasts Connect Руководство по RSS , которое может быть полезным.

Если вы можете получить <guid>, вы можете получить доступ к эпизоду из ленты.

Менее надежным вариантом будет чтобы попробовать тег <link> для эпизода. На указанном вами URL-адресе есть ссылка в конце страницы с названием «Веб-сайт эпизода»

enter image description here

Это также может вы уникальный ключ к выпуску в ленте RSS. Но это может работать не так, как вы ожидаете, во всех случаях. т.е. скажем, что создатель / издатель RSS подкаста просто помещает один и тот же URL-адрес в каждый выпуск вместо уникального URL-адреса для каждого эпизода.

...