aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorComradeCrow <comradecrow@vivaldi.net>2025-03-28 15:13:49 -0700
committerComradeCrow <comradecrow@vivaldi.net>2025-03-28 15:13:49 -0700
commit412d18a95da47c428ab65f4ba3b7a2553076d7f4 (patch)
treeabb722e14bf07bb74d514fe08b790e2b0b67160e
parent69d187c002e13c6f1626d7e8e93d22ab90d20011 (diff)
downloadpodweb-412d18a95da47c428ab65f4ba3b7a2553076d7f4.tar.gz
fix syncing
-rwxr-xr-xPodWeb.py70
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__":