diff options
author | ComradeCrow <comradecrow@vivaldi.net> | 2025-03-28 15:13:49 -0700 |
---|---|---|
committer | ComradeCrow <comradecrow@vivaldi.net> | 2025-03-28 15:13:49 -0700 |
commit | 412d18a95da47c428ab65f4ba3b7a2553076d7f4 (patch) | |
tree | abb722e14bf07bb74d514fe08b790e2b0b67160e | |
parent | 69d187c002e13c6f1626d7e8e93d22ab90d20011 (diff) | |
download | podweb-412d18a95da47c428ab65f4ba3b7a2553076d7f4.tar.gz |
fix syncing
-rwxr-xr-x | PodWeb.py | 70 |
1 files changed, 37 insertions, 33 deletions
diff --git a/PodWeb.py b/PodWeb.py index d24f149..3cd87d3 100755 --- a/PodWeb.py +++ b/PodWeb.py @@ -16,8 +16,6 @@ import podcastparser from ruamel.yaml import YAML global options -global serverlen -serverlen = 0 options = { "DEBUG": False, "serverlist": os.path.normpath( @@ -231,12 +229,9 @@ class PodWeb: if do_return: return content if content: - global serverlen for i in content: i["url"] = podcastparser.normalize_feed_url(i["url"]) self.servers = content - serverlen = len(self.servers) - breakpoint() def _create_serverlist(self) -> None: """Checks if the serverlist does not exist and creates it if not""" @@ -248,12 +243,10 @@ class PodWeb: """Overwrites the current serverlist with the stored serverlist""" serverlist = self._load_serverlist(True) if len(self.servers): - global serverlen with open(self.options["serverlist"], "w") as f: if serverlist is None: f.write(self.DEFAULT_SERVERLIST_HEADING) yaml.dump(self.servers, f) - serverlen = len(self.servers) def add_podcast( self, feedurl: str, name=None, category=None, site=None, img=None @@ -308,12 +301,9 @@ class PodWeb: break guid_list = [] parsed["episodes"].reverse() - if progressbar: - bar = click.progressbar( - length=len(parsed["episodes"]), - label=f"Fetching {parsed['title']} episodes", - ).__enter_() - try: + with click.progressbar( + length=len(parsed["episodes"]), label=f"Fetching {parsed['title']} episodes" + ) if progressbar else nullcontext() as bar: number = 1 for i in parsed["episodes"]: enclosure_list = sorted( @@ -347,10 +337,10 @@ class PodWeb: "GUID": i["guid"], "PODCAST_URL": feedurl, "TITLE": i["title"], - "DESCRIPTION": i["description"], - "IMG": i["episode_art_url"], + "DESCRIPTION": i.get("description"), + "IMG": i.get("episode_art_url"), "URL": episode_url, - "WEBSITE": i["link"], + "WEBSITE": i.get("link"), "SEASON": i.get("number", -1), "DELETED": False, "NUMBER": number, @@ -359,10 +349,8 @@ class PodWeb: self.con.commit() number += 1 guid_list.append(i["guid"]) - bar.update(1) - finally: - if progressbar: - bar.__exit__() + if progressbar: + bar.update(1) self.data.execute( """ SELECT \"guid\" @@ -383,6 +371,22 @@ class PodWeb: {"GUID": i}, ) + def download_episode_index( + self, title: str, number: int, overwrite: bool = False + ) -> None: + response = self.data.execute( + """ + SELECT "guid" + FROM "episodes" + WHERE title = :TITLE + AND number = :NUMBER; + """, + {"TITLE": title, "NUMBER": number}, + ) + guid = response.fetchone()[0] + if guid != None: + self.download_episode(guid, overwrite) + def download_episode(self, guid: str, overwrite: bool = False) -> None: response = self.data.execute( """ @@ -583,25 +587,25 @@ def import_opml(obj, opml_file: str): @cli.command() @click.pass_obj -@click.option("-i", "--index", type=click.IntRange(min=1, max=serverlen, clamp=False)) +def ls(obj): + for i in range(1, len(obj.servers) + 1): + click.echo(f"{i}: {obj.servers[i-1]['name']}") + + +@cli.command() +@click.pass_obj +@click.option("-i", "--index", type=click.IntRange(min=1, max=None, clamp=False)) def fetch(obj, index: str | None): - global serverlen - if serverlen == 0: - click.echo("OUUUUUUUUUUUUUUGH") + serverlen = len(obj.servers) + if index != None and index > serverlen: + click.echo(f"Podcast {index} does not exist.", err=True) elif index == None and serverlen != 1: - with click.progressbar(obj.servers, label="fetching episodes") as bar: + with click.progressbar(obj.servers, label="Fetching episodes") as bar: for i in bar: click.echo(i["name"]) obj._sync_episodes(i["url"]) else: - obj._sync_episodes(obj.servers[index - 1], progressbar=True) - - -@cli.command() -@click.pass_obj -def list(obj): - for i in range(1, len(obj.servers) + 1): - click.echo(f"{i}: {obj.servers[i-1]['name']}") + obj._sync_episodes(obj.servers[index - 1]["url"], progressbar=True) if __name__ == "__main__": |