diff options
Diffstat (limited to 'podweb.py')
-rwxr-xr-x | podweb.py | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/podweb.py b/podweb.py deleted file mode 100755 index 4ac83ea..0000000 --- a/podweb.py +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/env python3 -import os -import copy -import click -import yaml -import xml - -import podcastparser -import urllib - -global options -options = {"DEBUG": False, "serverlist": os.path.normpath(os.path.join(os.path.expanduser("~/.config/podweb"), "serverlist")), "podcastpath": ""} - -class PodWeb(): - - def __init__(self, DEBUG : bool = False) -> None: - self.options = options - self.options.update({"DEBUG": DEBUG}) - self.servers = [] - self.DEFAULT_SERVERLIST_HEADING = '''## You can add podcast xml feeds here. -## You can also optionally add categories and names for the podcasts. -## The order of category, name, and url does not matter. -## Here are some example entries: -## - category: example category -## name: example podcast 1 -## url: https://example.com/feed.xml -## - name: example podcast 2 -## url: example.com/feed2.xml -''' - - if self.options["DEBUG"]: - self.config_path = "." - self.config_filepath = "debug_config.yaml" - self.options["serverlist"] = "debug_serverlist" - else: - self.config_path = os.path.normpath(os.path.expanduser("~/.config/podweb")) - self.config_filepath = os.path.join(self.config_path, "config.yaml") - - self._load_config() - self._load_serverlist() - - def _load_config(self) -> None: - - if not os.path.exists(self.config_path): os.makedirs(self.config_path) - - if not os.path.isfile(self.config_filepath): - with open(self.config_filepath, "w+") as f: - yaml.dump(self.options, f) - - else: - with open(self.config_filepath, "r+") as f: - self.options.update(yaml.full_load(f)) - - def _update_config(self, changed_option : dict) -> None: - '''Makes a change to the config file''' - with open(self.options["serverlist"], "w+") as f: - config_options = yaml.full_load(f) - config_options.update(changed_option) - f.write(config_options) - - def _load_serverlist(self) -> list: - '''Loads the contents of the serverlist''' - self._create_serverlist() - with open(self.options["serverlist"], "r+") as f: - content = yaml.full_load(f) - if content: - self.servers = content - - def _create_serverlist(self) -> None: - '''Checks if the serverlist does not exist and creates it if not''' - if not os.path.isfile(self.options["serverlist"]): - with open(self.options["serverlist"], "w+") as f: - f.write(self.DEFAULT_SERVERLIST_HEADING) - - def _update_serverlist(self) -> None: - '''This is destructive and overwrites the current serverlist with the stored serverlist''' - with open(self.options["serverlist"], "w+") as f: - f.write(self.DEFAULT_SERVERLIST_HEADING) - if len(self.servers): - with open(self.options["serverlist"], "a") as f: - yaml.dump(self.servers, f) - - def add_podcast(self, feedurl : str, name = None, category = None) -> None: - for i in self.servers: - iparse = urllib.parse.urlparse(i["url"]) - feedparse = urllib.parse.urlparse(feedurl) - if iparse.hostname == feedparse.hostname and iparse.path == feedparse.path: - return None - parsed = podcastparser.parse(feedurl, urllib.request.urlopen(feedurl)) - if name: - new_feed = {"url": feedurl, "name": name} - else: - new_feed = {"url": feedurl, "name": parsed["title"]} - if category: new_feed.update({"category": category}) - self.servers.append(new_feed) - self._update_serverlist() - - def import_opml(self, opml_path : str): - pass - - -testweb = PodWeb(DEBUG = True) \ No newline at end of file |