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.comyes- Ep. 1: Musichttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 1꞉ Music [B08DFKGFP8].m4bWed, 06 Dec 2023 09:34:06 +00001111
- Ep. 2: Relationshipshttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 2꞉ Relationships [B08DFQCQYJ].m4bWed, 06 Dec 2023 09:34:07 +00001122
- Ep. 3: Survivalhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 3꞉ Survival [B08DFMWZVQ].m4bWed, 06 Dec 2023 09:34:07 +00001133
- Ep. 4: Supernaturalhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 4꞉ Supernatural [B08DFCH3C9].m4bWed, 06 Dec 2023 09:34:07 +00001144
- Ep. 5: Fashionhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 5꞉ Fashion [B08DF4YCBF].m4bWed, 06 Dec 2023 09:34:07 +00001155
- Ep. 6: Technologyhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 6꞉ Technology [B08DFK8VQ1].m4bWed, 06 Dec 2023 09:34:07 +00001166
- Ep. 1: Naturehttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 1꞉ Nature [B08MLNKS5R].m4bWed, 06 Dec 2023 09:34:07 +00002211
- Ep. 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 +00002222
- Ep. 3: Futurehttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 3꞉ Future [B08MKT16TC].m4bWed, 06 Dec 2023 09:34:07 +00002233
- Ep. 4: Politicshttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 4꞉ Politics [B08MKNC8VC].m4bWed, 06 Dec 2023 09:34:07 +00002244
- Ep. 5: Historyhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 5꞉ History [B08MKJM64J].m4bWed, 06 Dec 2023 09:34:07 +00002255
- Ep. 6: Travelhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 6꞉ Travel [B08MLBYY41].m4bWed, 06 Dec 2023 09:34:07 +00002266
- Ep 1: Crimehttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 1꞉ Crime [B0C1CW3G4P].m4bWed, 06 Dec 2023 09:34:07 +00003311
- Ep 2: Businesshttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 2꞉ Business [B0C1CV93NH].m4bWed, 06 Dec 2023 09:34:07 +00003322
- Ep 3: Bookshttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 3꞉ Books [B0C1D9KKDJ].m4bWed, 06 Dec 2023 09:34:07 +00003333
- Ep 4: Parentinghttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 4꞉ Parenting [B0C1CX7VJR].m4bWed, 06 Dec 2023 09:34:07 +00003344
- Ep 5: Celebritieshttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 5꞉ Celebrities [B0C1CVTP3C].m4bWed, 06 Dec 2023 09:34:07 +00003355
- Ep 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.comyes- Ep. 1: Musichttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 1꞉ Music [B08DFKGFP8].m4bWed, 06 Dec 2023 09:34:06 +00001111
- Ep. 2: Relationshipshttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 2꞉ Relationships [B08DFQCQYJ].m4bWed, 06 Dec 2023 09:34:07 +00001122
- Ep. 3: Survivalhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 3꞉ Survival [B08DFMWZVQ].m4bWed, 06 Dec 2023 09:34:07 +00001133
- Ep. 4: Supernaturalhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 4꞉ Supernatural [B08DFCH3C9].m4bWed, 06 Dec 2023 09:34:07 +00001144
- Ep. 5: Fashionhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 5꞉ Fashion [B08DF4YCBF].m4bWed, 06 Dec 2023 09:34:07 +00001155
- Ep. 6: Technologyhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 1/Ep. 6꞉ Technology [B08DFK8VQ1].m4bWed, 06 Dec 2023 09:34:07 +00001166
- Ep. 1: Naturehttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 1꞉ Nature [B08MLNKS5R].m4bWed, 06 Dec 2023 09:34:07 +00002211
- Ep. 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 +00002222
- Ep. 3: Futurehttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 3꞉ Future [B08MKT16TC].m4bWed, 06 Dec 2023 09:34:07 +00002233
- Ep. 4: Politicshttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 4꞉ Politics [B08MKNC8VC].m4bWed, 06 Dec 2023 09:34:07 +00002244
- Ep. 5: Historyhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 5꞉ History [B08MKJM64J].m4bWed, 06 Dec 2023 09:34:07 +00002255
- Ep. 6: Travelhttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 2/Ep. 6꞉ Travel [B08MLBYY41].m4bWed, 06 Dec 2023 09:34:07 +00002266
- Ep 1: Crimehttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 1꞉ Crime [B0C1CW3G4P].m4bWed, 06 Dec 2023 09:34:07 +00003311
- Ep 2: Businesshttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 2꞉ Business [B0C1CV93NH].m4bWed, 06 Dec 2023 09:34:07 +00003322
- Ep 3: Bookshttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 3꞉ Books [B0C1D9KKDJ].m4bWed, 06 Dec 2023 09:34:07 +00003333
- Ep 4: Parentinghttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 4꞉ Parenting [B0C1CX7VJR].m4bWed, 06 Dec 2023 09:34:07 +00003344
- Ep 5: Celebritieshttps://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season 3/Ep 5꞉ Celebrities [B0C1CVTP3C].m4bWed, 06 Dec 2023 09:34:07 +00003355
- Ep 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