031eb6ce53
- /slixfeed/sqlitehandler.py - /slixfeed/xmpphandler.py - /slixfeed/opmlhandler.py - /slixfeed/datahandler.py - /slixfeed/datetimehandler.py - /slixfeed/__main__.py - /slixfeed/confighandler.py - /slixfeed/filterhandler.py
220 lines
5.4 KiB
Python
220 lines
5.4 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
|
|
TODO
|
|
|
|
1) Use file settings.csv and pathnames.txt instead:
|
|
See get_value_default and get_default_list
|
|
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
|
|
def get_default_dbdir():
|
|
"""
|
|
Determine the directory path where dbfile will be stored.
|
|
|
|
* If $XDG_DATA_HOME is defined, use it;
|
|
* else if $HOME exists, use it;
|
|
* else if the platform is Windows, use %APPDATA%;
|
|
* else use the current directory.
|
|
|
|
Returns
|
|
-------
|
|
str
|
|
Path to database file.
|
|
|
|
Note
|
|
----
|
|
This function was taken from project buku.
|
|
|
|
See https://github.com/jarun/buku
|
|
|
|
* Arun Prakash Jana (jarun)
|
|
* Dmitry Marakasov (AMDmi3)
|
|
"""
|
|
# data_home = xdg.BaseDirectory.xdg_data_home
|
|
data_home = os.environ.get('XDG_DATA_HOME')
|
|
if data_home is None:
|
|
if os.environ.get('HOME') is None:
|
|
if sys.platform == 'win32':
|
|
data_home = os.environ.get('APPDATA')
|
|
if data_home is None:
|
|
return os.path.abspath('.')
|
|
else:
|
|
return os.path.abspath('.')
|
|
else:
|
|
data_home = os.path.join(os.environ.get('HOME'), '.local', 'share')
|
|
return os.path.join(data_home, 'slixfeed')
|
|
|
|
|
|
def get_default_confdir():
|
|
"""
|
|
Determine the directory path where configuration will be stored.
|
|
|
|
* If $XDG_CONFIG_HOME is defined, use it;
|
|
* else if $HOME exists, use it;
|
|
* else if the platform is Windows, use %APPDATA%;
|
|
* else use the current directory.
|
|
|
|
Returns
|
|
-------
|
|
str
|
|
Path to configueation directory.
|
|
"""
|
|
# config_home = xdg.BaseDirectory.xdg_config_home
|
|
config_home = os.environ.get('XDG_CONFIG_HOME')
|
|
if config_home is None:
|
|
if os.environ.get('HOME') is None:
|
|
if sys.platform == 'win32':
|
|
config_home = os.environ.get('APPDATA')
|
|
if config_home is None:
|
|
return os.path.abspath('.')
|
|
else:
|
|
return os.path.abspath('.')
|
|
else:
|
|
config_home = os.path.join(os.environ.get('HOME'), '.config')
|
|
return os.path.join(config_home, 'slixfeed')
|
|
|
|
|
|
async def get_value_default(key):
|
|
"""
|
|
Get settings default value.
|
|
|
|
Parameters
|
|
----------
|
|
key : str
|
|
Key: enabled, filter-allow, filter-deny,
|
|
interval, quantum, random.
|
|
|
|
Returns
|
|
-------
|
|
result : int or str
|
|
Value.
|
|
"""
|
|
match key:
|
|
case "enabled":
|
|
result = 1
|
|
case "filter-allow":
|
|
result = "hitler,sadam,saddam"
|
|
case "filter-deny":
|
|
result = "crim,dead,death,disaster,holocaust,murder,war"
|
|
case "interval":
|
|
result = 30
|
|
case "quantum":
|
|
result = 4
|
|
case "random":
|
|
result = 0
|
|
return result
|
|
|
|
|
|
def get_list():
|
|
"""
|
|
Get dictionary file.
|
|
|
|
Returns
|
|
-------
|
|
paths : list
|
|
Dictionary of pathnames.
|
|
"""
|
|
paths = []
|
|
cfg_dir = get_default_confdir()
|
|
if not os.path.isdir(cfg_dir):
|
|
os.mkdir(cfg_dir)
|
|
cfg_file = os.path.join(cfg_dir, r"url_paths.txt")
|
|
if not os.path.isfile(cfg_file):
|
|
# confighandler.generate_dictionary()
|
|
list = get_default_list()
|
|
file = open(cfg_file, "w")
|
|
file.writelines("\n".join(list))
|
|
file.close()
|
|
file = open(cfg_file, "r")
|
|
lines = file.readlines()
|
|
for line in lines:
|
|
paths.extend([line.strip()])
|
|
return paths
|
|
|
|
|
|
# async def generate_dictionary():
|
|
def get_default_list():
|
|
"""
|
|
Generate a dictionary file.
|
|
|
|
Returns
|
|
-------
|
|
paths : list
|
|
Dictionary of pathnames.
|
|
"""
|
|
paths = [
|
|
".atom",
|
|
".rss",
|
|
".xml",
|
|
"/?feed=atom",
|
|
"/?feed=rdf",
|
|
"/?feed=rss",
|
|
"/?feed=xml", # wordpress
|
|
"/?format=atom",
|
|
"/?format=rdf",
|
|
"/?format=rss",
|
|
"/?format=xml", # phpbb
|
|
"/app.php/feed",
|
|
"/atom",
|
|
"/atom.php",
|
|
"/atom.xml",
|
|
"/blog/feed/",
|
|
"/content-feeds/",
|
|
"/external.php?type=RSS2",
|
|
"/en/feed/",
|
|
"/feed", # good practice
|
|
"/feed.atom",
|
|
# "/feed.json",
|
|
"/feed.php",
|
|
"/feed.rdf",
|
|
"/feed.rss",
|
|
"/feed.xml",
|
|
"/feed/atom/",
|
|
"/feeds/news_feed",
|
|
"/feeds/posts/default",
|
|
"/feeds/posts/default?alt=atom",
|
|
"/feeds/posts/default?alt=rss",
|
|
"/feeds/rss/news.xml.php",
|
|
"/forum_rss.php",
|
|
"/index.atom",
|
|
"/index.php/feed",
|
|
"/index.php?type=atom;action=.xml", #smf
|
|
"/index.php?type=rss;action=.xml", #smf
|
|
"/index.rss",
|
|
"/jekyll/feed.xml",
|
|
"/latest.rss",
|
|
"/news",
|
|
"/news.xml",
|
|
"/news.xml.php",
|
|
"/news/feed",
|
|
"/posts.rss", # discourse
|
|
"/rdf",
|
|
"/rdf.php",
|
|
"/rdf.xml",
|
|
"/rss",
|
|
# "/rss.json",
|
|
"/rss.php",
|
|
"/rss.xml",
|
|
"/syndication.php?type=atom1.0", #mybb
|
|
"/syndication.php?type=rss2.0",
|
|
"/timeline.rss",
|
|
"/videos.atom",
|
|
# "/videos.json",
|
|
"/videos.xml",
|
|
"/xml/feed.rss"
|
|
]
|
|
return paths
|
|
# cfg_dir = get_default_confdir()
|
|
# if not os.path.isdir(cfg_dir):
|
|
# os.mkdir(cfg_dir)
|
|
# cfg_file = os.path.join(cfg_dir, r"url_paths.txt")
|
|
# if not os.path.isfile(cfg_file):
|
|
# file = open(cfg_file, "w")
|
|
# file.writelines("\n".join(paths))
|
|
# file.close()
|