#!/usr/bin/python3 import sys,importlib from utils import debug,notify,warn,error,success network = True verbosity = 3 args = {} arg_count = 0 config = None try: from pathlib import Path home = str(Path.home()) local_config_path = home + "/.config/rsstube/config" config = open(local_config_path,"r") except FileNotFoundError: try: global_config_path = "/etc/rsstube/config" config = open(global_config_path,"r") except FileNotFoundError: # no change config = None file_params = None if not config is None: for line in config: line = line.strip() # comment lines should begin with # after stripping if line[0] != "#": file_params += " " + line from options import options def process_args (network,verbosity,args,arg_count,network_new,verbosity_new,args_new,arg_count_new): if network_new == False: network = network_new if not verbosity_new is None: verbosity = verbosity_new for i in args_new: args[i] = args_new[i] arg_count = arg_count_new return network,verbosity,args,arg_count # config file options if not file_params == "" and not file_params is None: network_new,verbosity_new,args_new,arg_count_new = options(file_params.split()) network,verbosity,args,arg_count = process_args(network,verbosity,args,arg_count,network_new,verbosity_new,args_new,arg_count_new) # command-line options network_new,verbosity_new,args_new,arg_count_new = options(sys.argv[1:]) network,verbosity,args,arg_count = process_args(network,verbosity,args,arg_count,network_new,verbosity_new,args_new,arg_count_new) #if not verbosity_temp is None: # verbosity = verbosity_temp if len(sys.argv) == arg_count+1: error ("Please provide one or more URL.", verbosity) for url in sys.argv[arg_count+1:]: from determine_site import determine_site debug ("Attempting to determine site...", verbosity) site = determine_site (url) if not site is None: debug ("Site identified as " + site, verbosity) notify ("Trying " + site + " extractor...", verbosity) # get appropriate extractor extractor = importlib.import_module("extractors." + site) feed = extractor.extract(url, None, network, verbosity, args) if feed is None: error ("Unable to get RSS feed for " + url, verbosity, site) else: success (feed) elif network: from download_page import download page = download (None, url, args, verbosity) if page is None: error ("Failed to download " + url, verbosity) continue # try to get feed for common software like PeerTube debug ("Attempting to determine software from page...", verbosity) from determine_software import determine_software software = determine_software (page) if not software is None: debug ("Software identified as " + software, verbosity) notify ("Trying " + software + " extractor...", verbosity) extractor = importlib.import_module("extractors." + software) feed = extractor.extract(url, page, network, verbosity, args) if feed is None: notify ("Unable to get RSS feed for " + url + " with " + software + " extractor", verbosity, software) else: success (feed) continue # try generic extractor even if software is known debug ("Trying generic extractor...", verbosity) extractor = importlib.import_module("extractors.generic") feed = extractor.extract(url, page, network, verbosity, args) if feed is None: error ("Unable to get RSS feed for " + url, verbosity, "generic") else: success (feed) else: error ("Unable to get RSS feed for " + url + " without downloading page", verbosity)