#!/usr/bin/env python
import sys
import argparse
import json
from jinja2 import Template
import requests

parser = argparse.ArgumentParser(description="PocketFM downloader")
parser.add_argument("show_id", type=str, help="Show ID of series")
parser.add_argument("start", type=int, default=1, help="Start episode", nargs=argparse.OPTIONAL)
parser.add_argument("end", type=int, default=-1, help="End episode", nargs=argparse.OPTIONAL)
args = parser.parse_args()

show_id = args.show_id

url = f"https://api.pocketfm.in/v2/content_api/show.get_details?show_id={show_id}"

show_info = requests.get(url).json()["result"][0]
show_title = show_info["show_title"]
total_episodes = show_info["episodes_count"]
stories_dict = {}
stories_dict[""] = {}

start_num = args.start
end_num = args.end if args.end != -1 else total_episodes
end_num = end_num if end_num < total_episodes else total_episodes
start_ptr = ((start_num-1) // 10) * 10
end_ptr = ((end_num-1) // 10) * 10

for i in range(start_ptr, end_ptr+1, 10):
    stories = requests.get(f"{url}&curr_ptr={i}", headers={"app-version":"509"}).json()["result"][0]["stories"]
    for story in stories:
        story_num = story["natural_sequence_number"]
        if story_num < start_num or story_num > end_num:
            continue
        story_title = story["story_title"]
        story_url = story["media_url"]
        if story_url.startswith("http://"):
            story_url = story_url.replace("http://", "https://")
        stories_dict[""][story_title] = story_url

template = Template(open("template.html").read())
json_file = f"{show_title}.json"
open(json_file, "w").write(json.dumps(stories_dict, indent=4))
html_title = f"{show_title}"
html_file = f"{show_title}.html"
with open(html_file,"w") as f:
    f.write(template.render(title=html_title, batch=html_title, topics=stories_dict))
