diff options
author | ComradeCrow <comradecrow@vivaldi.net> | 2025-03-06 14:30:48 -0800 |
---|---|---|
committer | ComradeCrow <comradecrow@vivaldi.net> | 2025-03-06 14:47:28 -0800 |
commit | 26ce625938e095fc7b139a2f44fdbd01255bf8ef (patch) | |
tree | fe6a9e48a2949031f1d79f7bb56febff21b796fb | |
parent | 114698608467f055a4f2177b05597fa5c84cdc36 (diff) | |
download | podweb-26ce625938e095fc7b139a2f44fdbd01255bf8ef.tar.gz |
implement newLocation
-rwxr-xr-x | PodWeb.py | 31 |
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: |