lib.itmens/catalog/sites/apple_podcast.py

41 lines
1.4 KiB
Python
Raw Normal View History

from catalog.common import *
from catalog.podcast.models import *
import logging
logger = logging.getLogger(__name__)
@SiteList.register
class ApplePodcast(AbstractSite):
ID_TYPE = IdType.ApplePodcast
URL_PATTERNS = [r"https://[^.]+.apple.com/\w+/podcast/*[^/?]*/id(\d+)"]
WIKI_PROPERTY_ID = 'P5842'
DEFAULT_MODEL = Podcast
@classmethod
def id_to_url(self, id_value):
return "https://podcasts.apple.com/us/podcast/id" + id_value
def scrape(self):
api_url = f'https://itunes.apple.com/lookup?id={self.id_value}'
dl = BasicDownloader(api_url)
resp = dl.download()
r = resp.json()['results'][0]
2022-12-08 16:08:59 +00:00
pd = ResourceContent(metadata={
'title': r['trackName'],
'feed_url': r['feedUrl'],
'hosts': [r['artistName']],
'genres': r['genres'],
'cover_image_url': r['artworkUrl600'],
})
pd.lookup_ids[IdType.Feed] = pd.metadata.get('feed_url')
if pd.metadata["cover_image_url"]:
imgdl = BasicImageDownloader(pd.metadata["cover_image_url"], self.url)
try:
pd.cover_image = imgdl.download().content
pd.cover_image_extention = imgdl.extention
except Exception:
logger.debug(f'failed to download cover for {self.url} from {pd.metadata["cover_image_url"]}')
return pd