From 4e575a1f4ab4fce2f38fddc5efbf942c06986335 Mon Sep 17 00:00:00 2001 From: Karl Hudgell Date: Wed, 6 Dec 2023 10:46:59 +0000 Subject: [PATCH] cleaned up code --- feed.xml | 2 +- generator.py | 67 +++++++++++++++++++++++++++++----------------------- 2 files changed, 39 insertions(+), 30 deletions(-) diff --git a/feed.xml b/feed.xml index d0d0f08..beaaf21 100644 --- a/feed.xml +++ b/feed.xml @@ -1,2 +1,2 @@ -Kurupt FM Podcasthttps://kithub.k-world.me.uk/Karl/KFMPodKurupt FM Podcastnohttp://www.rssboard.org/rss-specificationpod2gen v1.0.3 https://pod2gen.caproni.fmWed, 06 Dec 2023 10:41:47 +0000Wed, 06 Dec 2023 09:34:07 +0000YesExampleemail@example.comyesEp. 1: Musichttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 1꞉ Music [B08DFKGFP8].m4bWed, 06 Dec 2023 09:34:06 +00001111Ep. 2: Relationshipshttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 2꞉ Relationships [B08DFQCQYJ].m4bWed, 06 Dec 2023 09:34:07 +00001122Ep. 3: Survivalhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 3꞉ Survival [B08DFMWZVQ].m4bWed, 06 Dec 2023 09:34:07 +00001133Ep. 4: Supernaturalhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 4꞉ Supernatural [B08DFCH3C9].m4bWed, 06 Dec 2023 09:34:07 +00001144Ep. 5: Fashionhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 5꞉ Fashion [B08DF4YCBF].m4bWed, 06 Dec 2023 09:34:07 +00001155Ep. 6: Technologyhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 6꞉ Technology [B08DFK8VQ1].m4bWed, 06 Dec 2023 09:34:07 +00001166Ep. 1: Naturehttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 1꞉ Nature [B08MLNKS5R].m4bWed, 06 Dec 2023 09:34:07 +00002211Ep. 2: TV & Filmhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 2꞉ TV & Film [B08ML3WVDX].m4bWed, 06 Dec 2023 09:34:07 +00002222Ep. 3: Futurehttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 3꞉ Future [B08MKT16TC].m4bWed, 06 Dec 2023 09:34:07 +00002233Ep. 4: Politicshttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 4꞉ Politics [B08MKNC8VC].m4bWed, 06 Dec 2023 09:34:07 +00002244Ep. 5: Historyhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 5꞉ History [B08MKJM64J].m4bWed, 06 Dec 2023 09:34:07 +00002255Ep. 6: Travelhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 6꞉ Travel [B08MLBYY41].m4bWed, 06 Dec 2023 09:34:07 +00002266Ep 1: Crimehttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 1꞉ Crime [B0C1CW3G4P].m4bWed, 06 Dec 2023 09:34:07 +00003311Ep 2: Businesshttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 2꞉ Business [B0C1CV93NH].m4bWed, 06 Dec 2023 09:34:07 +00003322Ep 3: Bookshttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 3꞉ Books [B0C1D9KKDJ].m4bWed, 06 Dec 2023 09:34:07 +00003333Ep 4: Parentinghttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 4꞉ Parenting [B0C1CX7VJR].m4bWed, 06 Dec 2023 09:34:07 +00003344Ep 5: Celebritieshttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 5꞉ Celebrities [B0C1CVTP3C].m4bWed, 06 Dec 2023 09:34:07 +00003355Ep 6: Healthhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 6꞉ Health [B0C1CXCP6B].m4bWed, 06 Dec 2023 09:34:07 +00003366 \ No newline at end of file +Kurupt FM Podcasthttps://kithub.k-world.me.uk/Karl/KFMPodKurupt FM Podcastnohttp://www.rssboard.org/rss-specificationpod2gen v1.0.3 https://pod2gen.caproni.fmWed, 06 Dec 2023 10:46:36 +0000Wed, 06 Dec 2023 09:34:07 +0000YesExampleemail@example.comyesEp. 1: Musichttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 1꞉ Music [B08DFKGFP8].m4bWed, 06 Dec 2023 09:34:06 +00001111Ep. 2: Relationshipshttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 2꞉ Relationships [B08DFQCQYJ].m4bWed, 06 Dec 2023 09:34:07 +00001122Ep. 3: Survivalhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 3꞉ Survival [B08DFMWZVQ].m4bWed, 06 Dec 2023 09:34:07 +00001133Ep. 4: Supernaturalhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 4꞉ Supernatural [B08DFCH3C9].m4bWed, 06 Dec 2023 09:34:07 +00001144Ep. 5: Fashionhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 5꞉ Fashion [B08DF4YCBF].m4bWed, 06 Dec 2023 09:34:07 +00001155Ep. 6: Technologyhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 6꞉ Technology [B08DFK8VQ1].m4bWed, 06 Dec 2023 09:34:07 +00001166Ep. 1: Naturehttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 1꞉ Nature [B08MLNKS5R].m4bWed, 06 Dec 2023 09:34:07 +00002211Ep. 2: TV & Filmhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 2꞉ TV & Film [B08ML3WVDX].m4bWed, 06 Dec 2023 09:34:07 +00002222Ep. 3: Futurehttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 3꞉ Future [B08MKT16TC].m4bWed, 06 Dec 2023 09:34:07 +00002233Ep. 4: Politicshttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 4꞉ Politics [B08MKNC8VC].m4bWed, 06 Dec 2023 09:34:07 +00002244Ep. 5: Historyhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 5꞉ History [B08MKJM64J].m4bWed, 06 Dec 2023 09:34:07 +00002255Ep. 6: Travelhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 6꞉ Travel [B08MLBYY41].m4bWed, 06 Dec 2023 09:34:07 +00002266Ep 1: Crimehttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 1꞉ Crime [B0C1CW3G4P].m4bWed, 06 Dec 2023 09:34:07 +00003311Ep 2: Businesshttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 2꞉ Business [B0C1CV93NH].m4bWed, 06 Dec 2023 09:34:07 +00003322Ep 3: Bookshttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 3꞉ Books [B0C1D9KKDJ].m4bWed, 06 Dec 2023 09:34:07 +00003333Ep 4: Parentinghttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 4꞉ Parenting [B0C1CX7VJR].m4bWed, 06 Dec 2023 09:34:07 +00003344Ep 5: Celebritieshttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 5꞉ Celebrities [B0C1CVTP3C].m4bWed, 06 Dec 2023 09:34:07 +00003355Ep 6: Healthhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 6꞉ Health [B0C1CXCP6B].m4bWed, 06 Dec 2023 09:34:07 +00003366 \ No newline at end of file diff --git a/generator.py b/generator.py index 012046a..436d8e4 100644 --- a/generator.py +++ b/generator.py @@ -1,22 +1,27 @@ import os import time from pod2gen import Podcast, Episode, Media, Person -from mutagen import mp3, mp4 +from mutagen import mp4 from datetime import timedelta, datetime as dt from dateutil.tz import UTC -from stat import S_ISREG, ST_CTIME, ST_MODE -def get_mp3_metadata(file_path, filename): +def get_mp4_metadata(file_path:str, filename:str) -> (timedelta, str): + """Extract MP4 metadata from a file. + + Args: + file_path (_type_): File path to the MP4 file. + str (_type_): Name of the MP4 file. + + Returns: + _type_: Timedelta and description of the MP4 file. + """ track_seconds = round(mp4.MP4(file_path).info.length) time_split = time.strftime("%H:%M:%S", time.gmtime(track_seconds)).split(":") try: - description = mp4.MP4(file_path).tags["COMM::eng"].text[0] + description = mp4.MP4(file_path).tags["\xa9cmt"][0] except KeyError: - try: - description = mp4.MP4(file_path).tags["\xa9cmt"][0] - except KeyError: - description = filename.replace("_", " ") + description = filename.replace("_", " ") return ( timedelta( hours=int(time_split[0]), @@ -26,34 +31,38 @@ def get_mp3_metadata(file_path, filename): description, ) -def add_episodes_from_folder(folder_path): + +def add_episodes_from_folder(folder_path:str) -> None: + """Loop over all files in a folder and add them to the Podcast. + + Args: + folder_path (str): Folder to loop over. + """ file_list = os.listdir(folder_path) - list_of_episodes = [ x for x in file_list if "m4b" in x ] + list_of_episodes = [x for x in file_list if "m4b" in x] # file_list.pop(0) for file in list_of_episodes: filename = file[:-4] ep_details = filename.split(" ") file_size = os.stat(f"./{folder_path}/{file}").st_size - file_length, description = get_mp3_metadata(f"./{folder_path}/{file}", filename) - try: - p.add_episode( - Episode( - title=mp4.MP4(f"./{folder_path}/{file}").tags["\xa9nam"][0], - media=Media( - f"https://kithub.k-world.me.uk/Karl/KFMPod/raw/master/{folder_path}/{file}", - size=file_size, - type='mp3' - ), - summary=description, - season=[int(i) for i in folder_path.split() if i.isdigit()][0], - episode_number=int(ep_details[1][-0]), - publication_date=dt.fromtimestamp( - os.stat(f"./{folder_path}/{file}").st_ctime, tz=UTC - ), - ) + file_length, description = get_mp4_metadata(f"./{folder_path}/{file}", filename) + p.add_episode( + Episode( + title=mp4.MP4(f"./{folder_path}/{file}").tags["\xa9nam"][0], + media=Media( + f"https://kithub.k-world.me.uk/Karl/KFMPod/raw/master/{folder_path}/{file}", + size=file_size, + type="mp3", + ), + summary=description, + season=[int(i) for i in folder_path.split() if i.isdigit()][0], + episode_number=int(ep_details[1][-0]), + publication_date=dt.fromtimestamp( + os.stat(f"./{folder_path}/{file}").st_ctime, tz=UTC + ), ) - except Exception: - pass + ) + owner = Person("Example", "email@example.com") # Create the Podcast