2022-12-07 19:09:05 -05:00
|
|
|
from catalog.common import *
|
2022-12-08 16:59:03 +00:00
|
|
|
from catalog.models import *
|
2022-12-07 19:09:05 -05:00
|
|
|
import logging
|
|
|
|
|
|
|
|
|
2022-12-08 16:59:03 +00:00
|
|
|
_logger = logging.getLogger(__name__)
|
2022-12-07 19:09:05 -05:00
|
|
|
|
|
|
|
|
2022-12-15 17:29:35 -05:00
|
|
|
@SiteManager.register
|
2022-12-07 19:09:05 -05:00
|
|
|
class ApplePodcast(AbstractSite):
|
2022-12-16 01:08:10 -05:00
|
|
|
SITE_NAME = SiteName.ApplePodcast
|
2022-12-07 19:09:05 -05:00
|
|
|
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={
|
2022-12-07 19:09:05 -05:00
|
|
|
'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:
|
2022-12-08 16:59:03 +00:00
|
|
|
_logger.debug(f'failed to download cover for {self.url} from {pd.metadata["cover_image_url"]}')
|
2022-12-07 19:09:05 -05:00
|
|
|
return pd
|