about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorComradeCrow <comradecrow@vivaldi.net>2025-03-06 14:30:48 -0800
committerComradeCrow <comradecrow@vivaldi.net>2025-03-06 14:47:28 -0800
commit26ce625938e095fc7b139a2f44fdbd01255bf8ef (patch)
treefe6a9e48a2949031f1d79f7bb56febff21b796fb
parent114698608467f055a4f2177b05597fa5c84cdc36 (diff)
downloadpodweb-26ce625938e095fc7b139a2f44fdbd01255bf8ef.tar.gz
implement newLocation
-rwxr-xr-xPodWeb.py31
1 files changed, 22 insertions, 9 deletions
diff --git a/PodWeb.py b/PodWeb.py
index 602de3d..753e479 100755
--- a/PodWeb.py
+++ b/PodWeb.py
@@ -5,12 +5,12 @@ import os
 import pprint
 import sqlite3
 import urllib
+import urllib.parse
 import urllib.request
 import xml.etree.ElementTree as xmlet
 
 import click
 import podcastparser
-import urllib.parse
 from ruamel.yaml import YAML
 
 global options
@@ -145,6 +145,15 @@ class PodWeb:
                             FOREIGN KEY("guid") REFERENCES "episodes"("guid")
         )"""
         )
+        self.data.execute(
+            """CREATE TABLE IF NOT EXISTS "podcasts" (
+            "url" TEXT NOT NULL UNIQUE,
+            "title" TEXT,
+            "image" TEXT,
+            "episodes" TEXT,
+            PRIMARY KEY("url)
+            )"""
+        )
 
     def _load_config(self) -> None:
         """Loads current config"""
@@ -202,20 +211,21 @@ class PodWeb:
         self, feedurl: str, name=None, category=None, site=None, img=None
     ) -> None:
         feedurl = podcastparser.normalize_feed_url(feedurl)
+        parsed = podcastparser.parse(feedurl, urllib.request.urlopen(feedurl))
+        if parsed.get("newLocation") != None:
+            feedurl = podcastparser.normalize_feed_url(parsed.get("newLocation"))
         feedparse = urllib.parse.urlparse(feedurl)
         for i in self.servers:
             iparse = urllib.parse.urlparse(i["url"])
             if iparse.hostname == feedparse.hostname and iparse.path == feedparse.path:
                 return None
         new_feed = {"url": feedurl}
-        if name is None or img is None or site is None:
-            parsed = podcastparser.parse(feedurl, urllib.request.urlopen(feedurl))
-            if name is None:
-                name = parsed.get("title")
-            if img is None:
-                img = parsed.get("cover_url")
-            if site is None:
-                site = parsed.get("link")
+        if name is None:
+            name = parsed.get("title")
+        if img is None:
+            img = parsed.get("cover_url")
+        if site is None:
+            site = parsed.get("link")
         if name:
             new_feed.update({"name": name})
         if site:
@@ -227,6 +237,9 @@ class PodWeb:
         self.servers.append(new_feed)
         self._update_serverlist()
 
+    def sync_episodes(self) -> None:
+        pass
+
     def import_opml(self, opml_path: str) -> None:
         body = xmlet.parse(source=opml_path).getroot().find("body")
         if body is None: