2023-12-06 10:24:26 +00:00
|
|
|
import os
|
|
|
|
import time
|
|
|
|
from pod2gen import Podcast, Episode, Media, Person
|
|
|
|
from mutagen import mp3, 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):
|
|
|
|
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]
|
|
|
|
except KeyError:
|
|
|
|
try:
|
|
|
|
description = mp4.MP4(file_path).tags["\xa9cmt"][0]
|
|
|
|
except KeyError:
|
|
|
|
description = filename.replace("_", " ")
|
|
|
|
return (
|
|
|
|
timedelta(
|
|
|
|
hours=int(time_split[0]),
|
|
|
|
minutes=int(time_split[1]),
|
|
|
|
seconds=int(time_split[2]),
|
|
|
|
),
|
|
|
|
description,
|
|
|
|
)
|
|
|
|
|
|
|
|
def add_episodes_from_folder(folder_path):
|
|
|
|
file_list = os.listdir(folder_path)
|
|
|
|
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
|
|
|
|
),
|
|
|
|
)
|
|
|
|
)
|
|
|
|
except Exception:
|
|
|
|
pass
|
|
|
|
|
|
|
|
owner = Person("Example", "email@example.com")
|
|
|
|
# Create the Podcast
|
|
|
|
p = Podcast(
|
|
|
|
name="Kurupt FM Podcast",
|
|
|
|
description="Kurupt FM Podcast",
|
|
|
|
website="https://kithub.k-world.me.uk/Karl/KFMPod",
|
|
|
|
explicit=False,
|
|
|
|
)
|
2023-12-06 10:38:29 +00:00
|
|
|
p.image = "https://kithub.k-world.me.uk/Karl/KFMPod/raw/master/Season%201/Ep.%201%ea%9e%89%20Music%20[B08DFKGFP8].jpg"
|
2023-12-06 10:24:26 +00:00
|
|
|
p.owner = owner
|
|
|
|
p.locked = True
|
|
|
|
p.withhold_from_itunes = True
|
|
|
|
|
|
|
|
add_episodes_from_folder("Season 1")
|
|
|
|
add_episodes_from_folder("Season 2")
|
|
|
|
add_episodes_from_folder("Season 3")
|
|
|
|
# file_list = os.listdir("mp3")
|
|
|
|
# # file_list.pop(0)
|
|
|
|
# for file in file_list:
|
|
|
|
# filename = file[:-4]
|
|
|
|
# ep_details = filename.split("_")
|
|
|
|
# file_size = os.stat(f"./mp3/{filename}.mp3").st_size
|
|
|
|
# file_length, description = get_mp3_metadata(f"./mp3/{filename}.mp3")
|
|
|
|
# p.add_episode(
|
|
|
|
# Episode(
|
|
|
|
# title=filename.replace("_", " "),
|
|
|
|
# media=Media(
|
|
|
|
# f"https://kithub.k-world.me.uk/Karl/RandJPod/raw/main/mp3/{filename}.mp3",
|
|
|
|
# size=file_size,
|
|
|
|
# ),
|
|
|
|
# summary=description,
|
|
|
|
# season=int(ep_details[0][1:]),
|
|
|
|
# episode_number=int(ep_details[1][2:]),
|
|
|
|
# publication_date=dt.fromtimestamp(
|
|
|
|
# os.stat(f"./mp3/{filename}.mp3").st_ctime, tz=UTC
|
|
|
|
# ),
|
|
|
|
# )
|
|
|
|
# )
|
|
|
|
|
|
|
|
# Generate the RSS feed
|
|
|
|
p.rss_file("feed.xml", minimize=True)
|