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,
)
p.image = "https://kithub.k-world.me.uk/Karl/KFMPod/src/master/Season%201/Ep.%201%ea%9e%89%20Music%20[B08DFKGFP8].jpg"
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)