Measure function elapsed time period and display a warning for a period of over a second.

This commit is contained in:
Schimon Jehudah 2024-03-04 10:16:49 +00:00
parent f25cb70181
commit 6dd1089c37
6 changed files with 2454 additions and 262 deletions

View file

@ -87,8 +87,7 @@ except ImportError:
async def export_feeds(self, jid, jid_file, ext): async def export_feeds(self, jid, jid_file, ext):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid: {}: jid_file: {}: ext: {}'.format(function_name, jid, jid_file, ext))
.format(function_name, jid))
cache_dir = config.get_default_cache_directory() cache_dir = config.get_default_cache_directory()
if not os.path.isdir(cache_dir): if not os.path.isdir(cache_dir):
os.mkdir(cache_dir) os.mkdir(cache_dir)
@ -119,8 +118,7 @@ async def xmpp_send_status(self, jid):
Jabber ID. Jabber ID.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid: {}'.format(function_name, jid))
.format(function_name, jid))
status_text = '📜️ Slixfeed RSS News Bot' status_text = '📜️ Slixfeed RSS News Bot'
jid_file = jid.replace('/', '_') jid_file = jid.replace('/', '_')
db_file = config.get_pathname_to_database(jid_file) db_file = config.get_pathname_to_database(jid_file)
@ -173,8 +171,7 @@ async def xmpp_send_update(self, jid, num=None):
Number. The default is None. Number. The default is None.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid: {} num: {}'.format(function_name, jid, num))
.format(function_name, jid))
jid_file = jid.replace('/', '_') jid_file = jid.replace('/', '_')
db_file = config.get_pathname_to_database(jid_file) db_file = config.get_pathname_to_database(jid_file)
enabled = config.get_setting_value(db_file, 'enabled') enabled = config.get_setting_value(db_file, 'enabled')
@ -274,8 +271,7 @@ async def xmpp_send_update(self, jid, num=None):
def manual(filename, section=None, command=None): def manual(filename, section=None, command=None):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: filename: {}'.format(function_name, filename))
.format(function_name, filename))
config_dir = config.get_default_config_directory() config_dir = config.get_default_config_directory()
with open(config_dir + '/' + filename, mode="rb") as commands: with open(config_dir + '/' + filename, mode="rb") as commands:
cmds = tomllib.load(commands) cmds = tomllib.load(commands)
@ -326,8 +322,7 @@ def log_to_markdown(timestamp, filename, jid, message):
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: timestamp: {} filename: {} jid: {} message: {}'.format(function_name, timestamp, filename, jid, message))
.format(function_name, filename))
with open(filename + '.md', 'a') as file: with open(filename + '.md', 'a') as file:
# entry = "{} {}:\n{}\n\n".format(timestamp, jid, message) # entry = "{} {}:\n{}\n\n".format(timestamp, jid, message)
entry = ( entry = (
@ -355,7 +350,7 @@ def is_feed_json(document):
True or False. True or False.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated'.format(function_name)) logger.debug('{}'.format(function_name))
value = False value = False
try: try:
feed = json.loads(document) feed = json.loads(document)
@ -391,7 +386,7 @@ def is_feed(feed):
True or False. True or False.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated'.format(function_name)) logger.debug('{}'.format(function_name))
value = False value = False
# message = None # message = None
if not feed.entries: if not feed.entries:
@ -427,7 +422,8 @@ def is_feed(feed):
def list_unread_entries(result, feed_title, jid_file): def list_unread_entries(result, feed_title, jid_file):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated'.format(function_name)) logger.debug('{}: feed_title: {} jid_file: {}'
.format(function_name, feed_title, jid_file))
# TODO Add filtering # TODO Add filtering
# TODO Do this when entry is added to list and mark it as read # TODO Do this when entry is added to list and mark it as read
# DONE! # DONE!
@ -488,7 +484,7 @@ def list_unread_entries(result, feed_title, jid_file):
def list_search_results(query, results): def list_search_results(query, results):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for query {}.' logger.debug('{}: query: {}'
.format(function_name, query)) .format(function_name, query))
message = ("Search results for '{}':\n\n```" message = ("Search results for '{}':\n\n```"
.format(query)) .format(query))
@ -504,8 +500,8 @@ def list_search_results(query, results):
def list_feeds_by_query(db_file, query): def list_feeds_by_query(db_file, query):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for query {}.' logger.debug('{}: db_file: {} query: {}'
.format(function_name, query)) .format(function_name, db_file, query))
results = sqlite.search_feeds(db_file, query) results = sqlite.search_feeds(db_file, query)
message = ('Feeds containing "{}":\n\n```' message = ('Feeds containing "{}":\n\n```'
.format(query)) .format(query))
@ -536,7 +532,7 @@ async def list_statistics(db_file):
Statistics as message. Statistics as message.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {}'
.format(function_name, db_file)) .format(function_name, db_file))
entries_unread = await sqlite.get_number_of_entries_unread(db_file) entries_unread = await sqlite.get_number_of_entries_unread(db_file)
entries = await sqlite.get_number_of_items(db_file, 'entries') entries = await sqlite.get_number_of_items(db_file, 'entries')
@ -582,8 +578,8 @@ async def list_statistics(db_file):
# FIXME Replace counter by len # FIXME Replace counter by len
def list_last_entries(results, num): def list_last_entries(results, num):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated.' logger.debug('{}: num: {}'
.format(function_name)) .format(function_name, num))
message = "Recent {} titles:\n\n```".format(num) message = "Recent {} titles:\n\n```".format(num)
for result in results: for result in results:
message += ("\n{}\n{}\n" message += ("\n{}\n{}\n"
@ -597,8 +593,8 @@ def list_last_entries(results, num):
def pick_a_feed(lang=None): def pick_a_feed(lang=None):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated.' logger.debug('{}: lang: {}'
.format(function_name)) .format(function_name, lang))
config_dir = config.get_default_config_directory() config_dir = config.get_default_config_directory()
with open(config_dir + '/' + 'feeds.toml', mode="rb") as feeds: with open(config_dir + '/' + 'feeds.toml', mode="rb") as feeds:
urls = tomllib.load(feeds) urls = tomllib.load(feeds)
@ -609,8 +605,7 @@ def pick_a_feed(lang=None):
def list_feeds(results): def list_feeds(results):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated.' logger.debug('{}'.format(function_name))
.format(function_name))
message = "\nList of subscriptions:\n\n```\n" message = "\nList of subscriptions:\n\n```\n"
for result in results: for result in results:
message += ("Name : {}\n" message += ("Name : {}\n"
@ -634,8 +629,7 @@ def list_feeds(results):
async def list_bookmarks(self): async def list_bookmarks(self):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated.' logger.debug('{}'.format(function_name))
.format(function_name))
conferences = await XmppBookmark.get(self) conferences = await XmppBookmark.get(self)
message = '\nList of groupchats:\n\n```\n' message = '\nList of groupchats:\n\n```\n'
for conference in conferences: for conference in conferences:
@ -650,8 +644,8 @@ async def list_bookmarks(self):
def export_to_markdown(jid, filename, results): def export_to_markdown(jid, filename, results):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid: {} filename: {}'
.format(function_name, jid)) .format(function_name, jid, filename))
with open(filename, 'w') as file: with open(filename, 'w') as file:
file.write('# Subscriptions for {}\n'.format(jid)) file.write('# Subscriptions for {}\n'.format(jid))
file.write('## Set of feeds exported with Slixfeed\n') file.write('## Set of feeds exported with Slixfeed\n')
@ -665,8 +659,8 @@ def export_to_markdown(jid, filename, results):
# TODO Consider adding element jid as a pointer of import # TODO Consider adding element jid as a pointer of import
def export_to_opml(jid, filename, results): def export_to_opml(jid, filename, results):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{} jid: {} filename: {}'
.format(function_name, jid)) .format(function_name, jid, filename))
root = ET.Element("opml") root = ET.Element("opml")
root.set("version", "1.0") root.set("version", "1.0")
head = ET.SubElement(root, "head") head = ET.SubElement(root, "head")
@ -691,8 +685,8 @@ def export_to_opml(jid, filename, results):
async def import_opml(db_file, url): async def import_opml(db_file, url):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {} url: {}'
.format(function_name, db_file)) .format(function_name, db_file, url))
result = await fetch.http(url) result = await fetch.http(url)
if not result['error']: if not result['error']:
document = result['content'] document = result['content']
@ -716,8 +710,8 @@ async def import_opml(db_file, url):
async def add_feed(db_file, url): async def add_feed(db_file, url):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {} url: {}'
.format(function_name, db_file)) .format(function_name, db_file, url))
while True: while True:
exist = await sqlite.get_feed_id_and_name(db_file, url) exist = await sqlite.get_feed_id_and_name(db_file, url)
if not exist: if not exist:
@ -884,8 +878,8 @@ async def scan_json(db_file, url):
URL. The default is None. URL. The default is None.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {} url: {}'
.format(function_name, db_file)) .format(function_name, db_file, url))
if isinstance(url, tuple): url = url[0] if isinstance(url, tuple): url = url[0]
result = await fetch.http(url) result = await fetch.http(url)
if not result['error']: if not result['error']:
@ -924,6 +918,8 @@ async def scan_json(db_file, url):
return return
# new_entry = 0 # new_entry = 0
for entry in entries: for entry in entries:
logger.debug('{}: entry: {}'
.format(function_name, entry["title"]))
if "date_published" in entry.keys(): if "date_published" in entry.keys():
date = entry["date_published"] date = entry["date_published"]
date = dt.rfc2822_to_iso8601(date) date = dt.rfc2822_to_iso8601(date)
@ -993,10 +989,10 @@ async def scan_json(db_file, url):
media_link = trim_url(media_link) media_link = trim_url(media_link)
break break
except: except:
logger.info('KeyError: "url"\n' logger.error('KeyError: "url"\n'
'Missing "url" attribute for {}' 'Missing "url" attribute for {}'
.format(url)) .format(url))
logger.info('Continue scanning for next ' logger.error('Continue scanning for next '
'potential enclosure of {}' 'potential enclosure of {}'
.format(link)) .format(link))
entry = { entry = {
@ -1021,8 +1017,8 @@ async def scan_json(db_file, url):
async def view_feed(url): async def view_feed(url):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for URL {}.' logger.debug('{}: url: {}'
.format(function_name, url)) .format(function_name, url))
while True: while True:
result = await fetch.http(url) result = await fetch.http(url)
if not result['error']: if not result['error']:
@ -1086,8 +1082,8 @@ async def view_feed(url):
async def view_entry(url, num): async def view_entry(url, num):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for URL {}.' logger.debug('{}: url: {} num: {}'
.format(function_name, url)) .format(function_name, url, num))
while True: while True:
result = await fetch.http(url) result = await fetch.http(url)
if not result['error']: if not result['error']:
@ -1166,10 +1162,14 @@ async def scan(db_file, url):
URL. The default is None. URL. The default is None.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and URL {}.' logger.debug('{}: db_file: {} url: {}'
.format(function_name, db_file, url)) .format(function_name, db_file, url))
if isinstance(url, tuple): url = url[0] if isinstance(url, tuple): url = url[0]
result = await fetch.http(url) result = await fetch.http(url)
feed_id = await sqlite.get_feed_id(db_file, url)
feed_id = feed_id[0]
status_code = result['status_code']
await sqlite.update_feed_status(db_file, feed_id, status_code)
if not result['error']: if not result['error']:
document = result['content'] document = result['content']
status = result['status_code'] status = result['status_code']
@ -1212,6 +1212,7 @@ async def scan(db_file, url):
return return
# new_entry = 0 # new_entry = 0
for entry in entries: for entry in entries:
logger.debug('{}: entry: {}'.format(function_name, entry.title))
if entry.has_key("published"): if entry.has_key("published"):
date = entry.published date = entry.published
date = dt.rfc2822_to_iso8601(date) date = dt.rfc2822_to_iso8601(date)
@ -1276,10 +1277,10 @@ async def scan(db_file, url):
media_link = trim_url(media_link) media_link = trim_url(media_link)
break break
except: except:
logger.info('KeyError: "href"\n' logger.error('KeyError: "href"\n'
'Missing "href" attribute for {}' 'Missing "href" attribute for {}'
.format(url)) .format(url))
logger.info('Continue scanning for next ' logger.error('Continue scanning for next '
'potential enclosure of {}' 'potential enclosure of {}'
.format(link)) .format(link))
entry = { entry = {
@ -1305,8 +1306,7 @@ async def scan(db_file, url):
def get_document_title(data): def get_document_title(data):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated.' logger.debug('{}'.format(function_name))
.format(function_name))
try: try:
document = Document(data) document = Document(data)
title = document.short_title() title = document.short_title()
@ -1318,8 +1318,7 @@ def get_document_title(data):
def get_document_content(data): def get_document_content(data):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated.' logger.debug('{}'.format(function_name))
.format(function_name))
try: try:
document = Document(data) document = Document(data)
content = document.summary() content = document.summary()
@ -1331,8 +1330,7 @@ def get_document_content(data):
def get_document_content_as_text(data): def get_document_content_as_text(data):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated.' logger.debug('{}'.format(function_name))
.format(function_name))
try: try:
document = Document(data) document = Document(data)
content = document.summary() content = document.summary()
@ -1345,8 +1343,8 @@ def get_document_content_as_text(data):
def generate_document(data, url, ext, filename, readability=False): def generate_document(data, url, ext, filename, readability=False):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and URL {}.' logger.debug('{}: url: {} ext: {} filename: {}'
.format(function_name, filename, url)) .format(function_name, url, ext, filename))
error = None error = None
if readability: if readability:
try: try:
@ -1398,8 +1396,8 @@ def generate_document(data, url, ext, filename, readability=False):
async def extract_image_from_feed(db_file, feed_id, url): async def extract_image_from_feed(db_file, feed_id, url):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and URL {}.' logger.debug('{}: db_file: {} feed_id: {} url: {}'
.format(function_name, db_file, url)) .format(function_name, db_file, feed_id, url))
feed_url = sqlite.get_feed_url(db_file, feed_id) feed_url = sqlite.get_feed_url(db_file, feed_id)
feed_url = feed_url[0] feed_url = feed_url[0]
result = await fetch.http(feed_url) result = await fetch.http(feed_url)
@ -1421,8 +1419,7 @@ async def extract_image_from_feed(db_file, feed_id, url):
async def extract_image_from_html(url): async def extract_image_from_html(url):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for URL {}.' logger.debug('{}: url: {}'.format(function_name, url))
.format(function_name, url))
result = await fetch.http(url) result = await fetch.http(url)
if not result['error']: if not result['error']:
data = result['content'] data = result['content']
@ -1453,8 +1450,7 @@ async def extract_image_from_html(url):
def generate_epub(text, pathname): def generate_epub(text, pathname):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: text: {} pathname: {}'.format(function_name, text, pathname))
.format(function_name, pathname))
## create an empty eBook ## create an empty eBook
pathname_list = pathname.split("/") pathname_list = pathname.split("/")
filename = pathname_list.pop() filename = pathname_list.pop()
@ -1483,16 +1479,14 @@ def generate_epub(text, pathname):
def generate_html(text, filename): def generate_html(text, filename):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: text: {} filename: {}'.format(function_name, text, filename))
.format(function_name, filename))
with open(filename, 'w') as file: with open(filename, 'w') as file:
file.write(text) file.write(text)
def generate_markdown(text, filename): def generate_markdown(text, filename):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: text: {} filename: {}'.format(function_name, text, filename))
.format(function_name, filename))
h2m = html2text.HTML2Text() h2m = html2text.HTML2Text()
# Convert HTML to Markdown # Convert HTML to Markdown
markdown = h2m.handle(text) markdown = h2m.handle(text)
@ -1502,8 +1496,7 @@ def generate_markdown(text, filename):
def generate_pdf(text, filename): def generate_pdf(text, filename):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: text: {} filename: {}'.format(function_name, text, filename))
.format(function_name, filename))
try: try:
pdfkit.from_string(text, filename) pdfkit.from_string(text, filename)
except IOError as error: except IOError as error:
@ -1514,16 +1507,14 @@ def generate_pdf(text, filename):
def generate_txt(text, filename): def generate_txt(text, filename):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: text: {} filename: {}'.format(function_name, text, filename))
.format(function_name, filename))
text = remove_html_tags(text) text = remove_html_tags(text)
with open(filename, 'w') as file: with open(filename, 'w') as file:
file.write(text) file.write(text)
def remove_html_tags(data): def remove_html_tags(data):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated.' logger.debug('{}'.format(function_name))
.format(function_name))
data = BeautifulSoup(data, "lxml").text data = BeautifulSoup(data, "lxml").text
data = data.replace("\n\n", "\n") data = data.replace("\n\n", "\n")
return data return data
@ -1531,8 +1522,7 @@ def remove_html_tags(data):
# TODO Add support for eDonkey, Gnutella, Soulseek # TODO Add support for eDonkey, Gnutella, Soulseek
async def get_magnet(link): async def get_magnet(link):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for URL {}.' logger.debug('{}: {}'.format(function_name, link))
.format(function_name, link))
parted_link = urlsplit(link) parted_link = urlsplit(link)
queries = parse_qs(parted_link.query) queries = parse_qs(parted_link.query)
query_xt = queries["xt"][0] query_xt = queries["xt"][0]
@ -1574,7 +1564,7 @@ async def remove_nonexistent_entries(db_file, url, feed):
Parsed feed document. Parsed feed document.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and URL {}.' logger.debug('{}: db_file: {} url: {}'
.format(function_name, db_file, url)) .format(function_name, db_file, url))
feed_id = await sqlite.get_feed_id(db_file, url) feed_id = await sqlite.get_feed_id(db_file, url)
feed_id = feed_id[0] feed_id = feed_id[0]
@ -1683,7 +1673,7 @@ async def remove_nonexistent_entries_json(db_file, url, feed):
Parsed feed document. Parsed feed document.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and URL {}.' logger.debug('{}: db_file: {}: url: {}'
.format(function_name, db_file, url)) .format(function_name, db_file, url))
feed_id = await sqlite.get_feed_id(db_file, url) feed_id = await sqlite.get_feed_id(db_file, url)
feed_id = feed_id[0] feed_id = feed_id[0]

View file

@ -17,12 +17,12 @@ class Logger:
def __init__(self, name): def __init__(self, name):
self.logger = logging.getLogger(name) self.logger = logging.getLogger(name)
self.logger.setLevel(logging.DEBUG) self.logger.setLevel(logging.WARNING)
ch = logging.StreamHandler() ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG) ch.setLevel(logging.WARNING)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') formatter = logging.Formatter('[%(asctime)s] %(levelname)s: %(name)s: %(message)s')
ch.setFormatter(formatter) ch.setFormatter(formatter)
self.logger.addHandler(ch) self.logger.addHandler(ch)
@ -41,3 +41,7 @@ class Logger:
def warning(self, message): def warning(self, message):
self.logger.warning(message) self.logger.warning(message)
# def check_difference(function_name, difference):
# if difference > 1:
# Logger.warning(message)

View file

@ -54,16 +54,21 @@ def create_connection(db_file):
conn : object conn : object
Connection object or None. Connection object or None.
""" """
time_begin = time.time()
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' message_log = '{}'
.format(function_name, db_file)) logger.debug(message_log.format(function_name))
conn = None conn = None
try: try:
conn = connect(db_file) conn = connect(db_file)
conn.execute("PRAGMA foreign_keys = ON") conn.execute("PRAGMA foreign_keys = ON")
return conn # return conn
except Error as e: except Error as e:
print(e) print(e)
time_end = time.time()
difference = time_end - time_begin
if difference > 1: logger.warning('{} (time: {})'.format(function_name,
difference))
return conn return conn
@ -77,7 +82,7 @@ def create_tables(db_file):
Path to database file. Path to database file.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {}'
.format(function_name, db_file)) .format(function_name, db_file))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
archive_table_sql = ( archive_table_sql = (
@ -306,7 +311,7 @@ def get_cursor(db_file):
Cursor. Cursor.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {}'
.format(function_name, db_file)) .format(function_name, db_file))
if db_file in CURSORS: if db_file in CURSORS:
return CURSORS[db_file] return CURSORS[db_file]
@ -329,12 +334,14 @@ async def import_feeds(db_file, feeds):
Set of feeds (Title and URL). Set of feeds (Title and URL).
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {}'
.format(function_name, db_file)) .format(function_name, db_file))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
for feed in feeds: for feed in feeds:
logger.debug('{}: feed: {}'
.format(function_name, feed))
url = feed[0] url = feed[0]
title = feed[1] title = feed[1]
sql = ( sql = (
@ -366,7 +373,7 @@ async def add_metadata(db_file):
Path to database file. Path to database file.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {}'
.format(function_name, db_file)) .format(function_name, db_file))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -395,7 +402,7 @@ def insert_feed_status(cur, feed_id):
Cursor object. Cursor object.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for feed_id {}.' logger.debug('{}: feed_id: {}'
.format(function_name, feed_id)) .format(function_name, feed_id))
sql = ( sql = (
""" """
@ -425,7 +432,7 @@ def insert_feed_properties(cur, feed_id):
Cursor object. Cursor object.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for feed_id {}.' logger.debug('{}: feed_id: {}'
.format(function_name, feed_id)) .format(function_name, feed_id))
sql = ( sql = (
""" """
@ -473,7 +480,7 @@ async def insert_feed(db_file, url, title=None, entries=None, version=None,
Date feed was last updated. The default is None. Date feed was last updated. The default is None.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and URL {}.' logger.debug('{}: db_file: {} url: {}'
.format(function_name, db_file, url)) .format(function_name, db_file, url))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -560,7 +567,7 @@ async def insert_feed_(db_file, url, title=None, entries=None, version=None,
Date feed was last updated. The default is None. Date feed was last updated. The default is None.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and URL {}.' logger.debug('{}: db_file: {} url: {}'
.format(function_name, db_file, url)) .format(function_name, db_file, url))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -606,7 +613,7 @@ async def remove_feed_by_url(db_file, url):
URL of feed. URL of feed.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and URL {}.' logger.debug('{}: db_file: {} url: {}'
.format(function_name, db_file, url)) .format(function_name, db_file, url))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
async with DBLOCK: async with DBLOCK:
@ -634,7 +641,7 @@ async def remove_feed_by_index(db_file, ix):
Index of feed. Index of feed.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Index {}.' logger.debug('{}: db_file: {} ix: {}'
.format(function_name, db_file, ix)) .format(function_name, db_file, ix))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
async with DBLOCK: async with DBLOCK:
@ -682,7 +689,7 @@ def get_feeds_by_tag_id(db_file, tag_id):
List of tags. List of tags.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Tag ID {}.' logger.debug('{}: db_file: {} tag_id: {}'
.format(function_name, db_file, tag_id)) .format(function_name, db_file, tag_id))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -717,7 +724,7 @@ def get_tags_by_feed_id(db_file, feed_id):
List of tags. List of tags.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Feed ID {}.' logger.debug('{}: db_file: {} feed_id: {}'
.format(function_name, db_file, feed_id)) .format(function_name, db_file, feed_id))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -749,7 +756,7 @@ async def set_feed_id_and_tag_id(db_file, feed_id, tag_id):
Tag ID Tag ID
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}, Feed ID {} and Tag ID {}.' logger.debug('{}: db_file: {} feed_id: {} tag_id: {}'
.format(function_name, db_file, feed_id, tag_id)) .format(function_name, db_file, feed_id, tag_id))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -787,7 +794,7 @@ def get_tag_id(db_file, tag_name):
Tag ID. Tag ID.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Tag {}.' logger.debug('{}: db_file: {} tag_name: {}'
.format(function_name, db_file, tag_name)) .format(function_name, db_file, tag_name))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -820,7 +827,7 @@ def get_tag_name(db_file, ix):
Tag name. Tag name.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Index {}.' logger.debug('{}: db_file: {} ix: {}'
.format(function_name, db_file, ix)) .format(function_name, db_file, ix))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -853,7 +860,7 @@ def is_tag_id_associated(db_file, tag_id):
Tag ID. Tag ID.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Tag ID {}.' logger.debug('{}: db_file: {} tag_id: {}'
.format(function_name, db_file, tag_id)) .format(function_name, db_file, tag_id))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -873,7 +880,7 @@ def is_tag_id_associated(db_file, tag_id):
async def delete_tag_by_index(db_file, ix): async def delete_tag_by_index(db_file, ix):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Index {}.' logger.debug('{}: db_file: {} ix: {}'
.format(function_name, db_file, ix)) .format(function_name, db_file, ix))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -910,7 +917,7 @@ def is_tag_id_of_feed_id(db_file, tag_id, feed_id):
Tag ID. Tag ID.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}, Feed ID {} and Tag ID {}.' logger.debug('{}: db_file: {} tag_id: {} feed_id: {}'
.format(function_name, db_file, feed_id, tag_id)) .format(function_name, db_file, feed_id, tag_id))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -931,7 +938,7 @@ def is_tag_id_of_feed_id(db_file, tag_id, feed_id):
async def delete_feed_id_tag_id(db_file, feed_id, tag_id): async def delete_feed_id_tag_id(db_file, feed_id, tag_id):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}, Feed ID {} and Tag ID {}.' logger.debug('{}: db_file: {} tag_id: {} feed_id: {}'
.format(function_name, db_file, feed_id, tag_id)) .format(function_name, db_file, feed_id, tag_id))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -962,7 +969,7 @@ async def set_new_tag(db_file, tag):
Tag Tag
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Tag {}.' logger.debug('{}: db_file: {} tag: {}'
.format(function_name, db_file, tag)) .format(function_name, db_file, tag))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -1001,7 +1008,7 @@ async def get_feed_id_and_name(db_file, url):
List of ID and Name of feed. List of ID and Name of feed.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and URL {}.' logger.debug('{}: db_file: {} url: {}'
.format(function_name, db_file, url)) .format(function_name, db_file, url))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -1034,7 +1041,7 @@ async def get_number_of_items(db_file, table):
Number of rows. Number of rows.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Table {}.' logger.debug('{}: db_file: {} table: {}'
.format(function_name, db_file, table)) .format(function_name, db_file, table))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -1063,7 +1070,7 @@ async def get_number_of_feeds_active(db_file):
Number of rows. Number of rows.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {}'
.format(function_name, db_file)) .format(function_name, db_file))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -1093,7 +1100,7 @@ async def get_number_of_entries_unread(db_file):
Number of rows. Number of rows.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {}'
.format(function_name, db_file)) .format(function_name, db_file))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -1132,7 +1139,7 @@ async def get_unread_entries(db_file, num):
News items. News items.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Num {}.' logger.debug('{}: db_file: {} num: {}'
.format(function_name, db_file, num)) .format(function_name, db_file, num))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -1170,7 +1177,7 @@ def get_feed_id_by_entry_index(db_file, ix):
Feed index. Feed index.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Index {}.' logger.debug('{}: db_file: {} ix: {}'
.format(function_name, db_file, ix)) .format(function_name, db_file, ix))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -1203,7 +1210,7 @@ async def get_feed_id(db_file, url):
Feed index. Feed index.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and URL {}.' logger.debug('{}: db_file: {} url: {}'
.format(function_name, db_file, url)) .format(function_name, db_file, url))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -1231,8 +1238,8 @@ async def mark_entry_as_read(cur, ix):
Index of entry. Index of entry.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Index {}.' logger.debug('{}: ix: {}'
.format(function_name, db_file, ix)) .format(function_name, ix))
sql = ( sql = (
""" """
UPDATE entries UPDATE entries
@ -1256,7 +1263,7 @@ def get_number_of_unread_entries_by_feed(db_file, feed_id):
Feed Id. Feed Id.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Feed ID {}.' logger.debug('{}: db_file: {} feed_id: {}'
.format(function_name, db_file, feed_id)) .format(function_name, db_file, feed_id))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -1284,7 +1291,7 @@ async def mark_feed_as_read(db_file, feed_id):
Feed Id. Feed Id.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Feed ID {}.' logger.debug('{}: db_file: {} feed_id: {}'
.format(function_name, db_file, feed_id)) .format(function_name, db_file, feed_id))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -1312,7 +1319,7 @@ async def delete_entry_by_id(db_file, ix):
Index. Index.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Index {}.' logger.debug('{}: db_file: {} ix: {}'
.format(function_name, db_file, ix)) .format(function_name, db_file, ix))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -1340,7 +1347,7 @@ async def archive_entry(db_file, ix):
Index. Index.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Index {}.' logger.debug('{}: db_file: {} ix: {}'
.format(function_name, db_file, ix)) .format(function_name, db_file, ix))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -1379,7 +1386,7 @@ async def archive_entry(db_file, ix):
def get_feed_title(db_file, ix): def get_feed_title(db_file, ix):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Index {}.' logger.debug('{}: db_file: {} ix: {}'
.format(function_name, db_file, ix)) .format(function_name, db_file, ix))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -1409,7 +1416,7 @@ async def set_feed_title(db_file, feed_id, name):
New name. New name.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}, Feed ID {} and Name {}.' logger.debug('{}: db_file: {} feed_id: {} name: {}'
.format(function_name, db_file, feed_id, name)) .format(function_name, db_file, feed_id, name))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -1430,7 +1437,7 @@ async def set_feed_title(db_file, feed_id, name):
def get_entry_title(db_file, ix): def get_entry_title(db_file, ix):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Index {}.' logger.debug('{}: db_file: {} ix: {}'
.format(function_name, db_file, ix)) .format(function_name, db_file, ix))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -1448,7 +1455,7 @@ def get_entry_title(db_file, ix):
def get_entry_url(db_file, ix): def get_entry_url(db_file, ix):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Index {}.' logger.debug('{}: db_file: {} ix: {}'
.format(function_name, db_file, ix)) .format(function_name, db_file, ix))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -1466,7 +1473,7 @@ def get_entry_url(db_file, ix):
def get_feed_url(db_file, ix): def get_feed_url(db_file, ix):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Index {}.' logger.debug('{}: db_file: {} ix: {}'
.format(function_name, db_file, ix)) .format(function_name, db_file, ix))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -1484,7 +1491,7 @@ def get_feed_url(db_file, ix):
async def mark_as_read(db_file, ix): async def mark_as_read(db_file, ix):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Index {}.' logger.debug('{}: db_file: {} ix: {}'
.format(function_name, db_file, ix)) .format(function_name, db_file, ix))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -1509,7 +1516,7 @@ async def mark_all_as_read(db_file):
Path to database file. Path to database file.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {} ix: {}'
.format(function_name, db_file)) .format(function_name, db_file))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -1542,7 +1549,7 @@ async def delete_archived_entry(cur, ix):
Index of entry. Index of entry.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for Index {}.' logger.debug('{}: ix: {}'
.format(function_name, ix)) .format(function_name, ix))
sql = ( sql = (
""" """
@ -1565,8 +1572,7 @@ async def update_statistics(cur):
Cursor object. Cursor object.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated.' logger.debug('{}'.format(function_name))
.format(function_name))
stat_dict = {} stat_dict = {}
stat_dict["feeds"] = await get_number_of_items(cur, 'feeds') stat_dict["feeds"] = await get_number_of_items(cur, 'feeds')
stat_dict["entries"] = await get_number_of_items(cur, 'entries') stat_dict["entries"] = await get_number_of_items(cur, 'entries')
@ -1619,7 +1625,7 @@ async def set_enabled_status(db_file, feed_id, status):
0 or 1. 0 or 1.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}, Feed ID {} and Status {}.' logger.debug('{}: db_file: {} feed_id: {} status: {}'
.format(function_name, db_file, feed_id, status)) .format(function_name, db_file, feed_id, status))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -1672,8 +1678,8 @@ async def add_entry(db_file, title, link, entry_id, feed_id, date,
0 or 1. 0 or 1.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Feed ID {}.' logger.debug('{}: db_file: {} title: {} link: {} entry_id: {} feed_id: {} date: {} read_status: {}'
.format(function_name, db_file, feed_id)) .format(function_name, db_file, title, link, entry_id, feed_id, date, read_status))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -1724,12 +1730,14 @@ async def add_entries_and_update_timestamp(db_file, feed_id, new_entries):
Set of entries as dict. Set of entries as dict.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Feed ID {}.' logger.debug('{}: db_file: {} feed_id: {}'
.format(function_name, db_file, feed_id)) .format(function_name, db_file, feed_id))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
for entry in new_entries: for entry in new_entries:
logger.debug('{}: db_file: {} feed_id: {} entry: {}'
.format(function_name, db_file, feed_id, entry["title"]))
sql = ( sql = (
""" """
INSERT INSERT
@ -1776,7 +1784,7 @@ async def set_date(db_file, feed_id):
Feed Id. Feed Id.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Feed ID {}.' logger.debug('{}: db_file: {} feed_id: {}'
.format(function_name, db_file, feed_id)) .format(function_name, db_file, feed_id))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -1810,7 +1818,7 @@ async def update_feed_status(db_file, feed_id, status_code):
Status ID or message. Status ID or message.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}, Feed ID {} and Status Code {}.' print('{}: db_file: {} feed_id: {} status_code: {}'
.format(function_name, db_file, feed_id, status_code)) .format(function_name, db_file, feed_id, status_code))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -1844,7 +1852,7 @@ async def update_feed_validity(db_file, feed_id, valid):
0 or 1. 0 or 1.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}, Feed ID {} and Validity {}.' logger.debug('{}: db_file: {} feed_id: {} valid: {}'
.format(function_name, db_file, feed_id, valid)) .format(function_name, db_file, feed_id, valid))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -1879,8 +1887,8 @@ async def update_feed_properties(db_file, feed_id, entries, updated):
Date feed was last updated. Date feed was last updated.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Feed ID {}.' logger.debug('{}: db_file: {} feed_id: {} entries: {} updated: {}'
.format(function_name, db_file, feed_id)) .format(function_name, db_file, feed_id, entries, updated))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -1910,7 +1918,7 @@ async def maintain_archive(db_file, limit):
Number of maximum entries to store. Number of maximum entries to store.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Limit {}.' logger.debug('{}: db_file: {} limit: {}'
.format(function_name, db_file, limit)) .format(function_name, db_file, limit))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -1955,9 +1963,7 @@ async def maintain_archive(db_file, limit):
# table archive are not marked as read. # table archive are not marked as read.
async def get_entries_of_feed(db_file, feed_id): async def get_entries_of_feed(db_file, feed_id):
""" """
Remove entries that don't exist in a given parsed feed. Get entries of given feed.
Check the entries returned from feed and delete read non
existing entries, otherwise move to table archive, if unread.
Parameters Parameters
---------- ----------
@ -1967,7 +1973,7 @@ async def get_entries_of_feed(db_file, feed_id):
Feed Id. Feed Id.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Feed ID {}.' logger.debug('{} db_file: {} feed_id: {}'
.format(function_name, db_file, feed_id)) .format(function_name, db_file, feed_id))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -1976,6 +1982,7 @@ async def get_entries_of_feed(db_file, feed_id):
SELECT id, title, link, entry_id, timestamp, read SELECT id, title, link, entry_id, timestamp, read
FROM entries FROM entries
WHERE feed_id = ? WHERE feed_id = ?
ORDER BY timestamp DESC
""" """
) )
par = (feed_id,) par = (feed_id,)
@ -2024,7 +2031,7 @@ async def get_feeds_url(db_file):
URLs of active feeds. URLs of active feeds.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{} db_file: {}'
.format(function_name, db_file)) .format(function_name, db_file))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -2055,7 +2062,7 @@ def get_feeds_by_enabled_state(db_file, enabled_state):
List of URLs. List of URLs.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and State {}.' logger.debug('{}: db_file: {} enabled_state: {}'
.format(function_name, db_file, enabled_state)) .format(function_name, db_file, enabled_state))
if enabled_state: if enabled_state:
enabled_state = 1 enabled_state = 1
@ -2091,7 +2098,7 @@ async def get_active_feeds_url(db_file):
URLs of active feeds. URLs of active feeds.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {}'
.format(function_name, db_file)) .format(function_name, db_file))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -2122,7 +2129,7 @@ def get_tags(db_file):
List of tags. List of tags.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {}'
.format(function_name, db_file)) .format(function_name, db_file))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -2151,7 +2158,7 @@ async def get_feeds(db_file):
URLs of feeds. URLs of feeds.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {}'
.format(function_name, db_file)) .format(function_name, db_file))
# TODO # TODO
# 1) Select id from table feeds # 1) Select id from table feeds
@ -2187,7 +2194,7 @@ async def last_entries(db_file, num):
List of recent N entries as message. List of recent N entries as message.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Num {}.' logger.debug('{}: db_file: {} num: {}'
.format(function_name, db_file, num)) .format(function_name, db_file, num))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -2232,7 +2239,7 @@ def search_feeds(db_file, query):
Feeds of specified keywords as message. Feeds of specified keywords as message.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Query {}.' logger.debug('{}: db_file: {} query: {}'
.format(function_name, db_file, query)) .format(function_name, db_file, query))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -2267,7 +2274,7 @@ async def search_entries(db_file, query):
Entries of specified keywords as message. Entries of specified keywords as message.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Query {}.' logger.debug('{}: db_file: {} query: {}'
.format(function_name, db_file, query)) .format(function_name, db_file, query))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -2339,7 +2346,7 @@ def check_entry_exist(db_file, feed_id, entry_id=None, title=None, link=None,
True or None. True or None.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Feed ID {}.' logger.debug('{}: db_file: {} feed_id: {}'
.format(function_name, db_file, feed_id)) .format(function_name, db_file, feed_id))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -2416,18 +2423,18 @@ async def set_setting_value(db_file, key_value):
Numeric value. Numeric value.
""" """
key = key_value[0] key = key_value[0]
value = key_value[1] val = key_value[1]
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}, Key {} and Value {}.' logger.debug('{}: db_file: {} key: {} val: {}'
.format(function_name, db_file, key, value)) .format(function_name, db_file, key, val))
if not value: if not val:
match key: match key:
case 'interval': case 'interval':
value = 90 val = 90
case 'quantum': case 'quantum':
value = 3 val = 3
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -2438,12 +2445,12 @@ async def set_setting_value(db_file, key_value):
INTO settings( INTO settings(
key, value) key, value)
VALUES( VALUES(
:key, :value) :key, :val)
""" """
) )
par = { par = {
"key": key, "key": key,
"value": value "val": val
} }
cur.execute(sql, par) cur.execute(sql, par)
@ -2472,11 +2479,11 @@ async def update_setting_value(db_file, key_value):
# key = "enabled" # key = "enabled"
# val = 0 # val = 0
key = key_value[0] key = key_value[0]
value = key_value[1] val = key_value[1]
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}, Key {} and Value {}.' logger.debug('{}: db_file: {} key: {} val: {}'
.format(function_name, db_file, key, value)) .format(function_name, db_file, key, val))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -2484,13 +2491,13 @@ async def update_setting_value(db_file, key_value):
sql = ( sql = (
""" """
UPDATE settings UPDATE settings
SET value = :value SET value = :val
WHERE key = :key WHERE key = :key
""" """
) )
par = { par = {
"key": key, "key": key,
"value": value "val": val
} }
cur.execute(sql, par) cur.execute(sql, par)
# except: # except:
@ -2501,7 +2508,7 @@ async def update_setting_value(db_file, key_value):
async def delete_filter(db_file, key): async def delete_filter(db_file, key):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Key {}.' logger.debug('{}: db_file: {} key: {}'
.format(function_name, db_file, key)) .format(function_name, db_file, key))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -2519,7 +2526,7 @@ async def delete_filter(db_file, key):
async def delete_setting(db_file, key): async def delete_setting(db_file, key):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Key {}.' logger.debug('{}: db_file: {} key: {}'
.format(function_name, db_file, key)) .format(function_name, db_file, key))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -2537,7 +2544,7 @@ async def delete_setting(db_file, key):
async def delete_settings(db_file): async def delete_settings(db_file):
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {}'
.format(function_name, db_file)) .format(function_name, db_file))
async with DBLOCK: async with DBLOCK:
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
@ -2569,7 +2576,7 @@ def get_setting_value(db_file, key):
Numeric value. Numeric value.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Key {}.' logger.debug('{}: db_file: {} key: {}'
.format(function_name, db_file, key)) .format(function_name, db_file, key))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -2602,7 +2609,7 @@ def is_setting_key(db_file, key):
Key. Key.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Key {}.' logger.debug('{}: db_file: {} key: {}'
.format(function_name, db_file, key)) .format(function_name, db_file, key))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -2636,7 +2643,7 @@ async def set_filter_value(db_file, key_value):
val = key_value[1] val = key_value[1]
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}, Key {} and Value {}.' logger.debug('{}: db_file: {} key: {} val: {}'
.format(function_name, db_file, key, val)) .format(function_name, db_file, key, val))
async with DBLOCK: async with DBLOCK:
@ -2648,12 +2655,12 @@ async def set_filter_value(db_file, key_value):
INTO filters( INTO filters(
key, value) key, value)
VALUES( VALUES(
:key, :value) :key, :val)
""" """
) )
par = { par = {
"key": key, "key": key,
"value": val "val": val
} }
cur.execute(sql, par) cur.execute(sql, par)
@ -2685,7 +2692,7 @@ async def update_filter_value(db_file, key_value):
val = key_value[1] val = key_value[1]
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}, Key {} and Value {}.' logger.debug('{}: db_file: {} key: {} val: {}'
.format(function_name, db_file, key, val)) .format(function_name, db_file, key, val))
async with DBLOCK: async with DBLOCK:
@ -2722,7 +2729,7 @@ def is_filter_key(db_file, key):
Key. Key.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}, Key {}.' logger.debug('{}: db_file: {} key: {}'
.format(function_name, db_file, key)) .format(function_name, db_file, key))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -2755,7 +2762,7 @@ def get_filter_value(db_file, key):
List of strings. List of strings.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}, Key {}.' logger.debug('{}: db_file: {} key: {}'
.format(function_name, db_file, key)) .format(function_name, db_file, key))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -2785,7 +2792,7 @@ async def set_last_update_time(db_file):
None. None.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {}'
.format(function_name, db_file)) .format(function_name, db_file))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -2820,7 +2827,7 @@ async def get_last_update_time(db_file):
Time. Time.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {}'
.format(function_name, db_file)) .format(function_name, db_file))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -2855,7 +2862,7 @@ async def update_last_update_time(db_file):
None. None.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {}'
.format(function_name, db_file)) .format(function_name, db_file))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -2892,7 +2899,7 @@ def get_categories(db_file):
List of categories. List of categories.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {}'
.format(function_name, db_file)) .format(function_name, db_file))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -2922,7 +2929,7 @@ def get_locales(db_file):
List of locales. List of locales.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {}'
.format(function_name, db_file)) .format(function_name, db_file))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -2952,7 +2959,7 @@ def get_nations(db_file):
List of nations. List of nations.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {}'
.format(function_name, db_file)) .format(function_name, db_file))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -3009,7 +3016,7 @@ def get_titles_tags_urls(db_file):
List of titles and urls. List of titles and urls.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {}.' logger.debug('{}: db_file: {}'
.format(function_name, db_file)) .format(function_name, db_file))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()
@ -3040,7 +3047,7 @@ def get_titles_tags_urls_by_category(db_file, category):
List of titles and urls. List of titles and urls.
""" """
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for filename {} and Category {}.' logger.debug('{}: db_file: {} category: {}'
.format(function_name, db_file, category)) .format(function_name, db_file, category))
with create_connection(db_file) as conn: with create_connection(db_file) as conn:
cur = conn.cursor() cur = conn.cursor()

View file

@ -1,2 +1,2 @@
__version__ = '0.1.26' __version__ = '0.1.27'
__version_info__ = (0, 1, 26) __version_info__ = (0, 1, 27)

View file

@ -56,6 +56,7 @@ from slixfeed.xmpp.roster import XmppRoster
from slixfeed.xmpp.presence import XmppPresence from slixfeed.xmpp.presence import XmppPresence
from slixfeed.xmpp.utility import get_chat_type from slixfeed.xmpp.utility import get_chat_type
import sys import sys
import time
import asyncio import asyncio
from datetime import datetime from datetime import datetime
@ -181,10 +182,11 @@ class Slixfeed(slixmpp.ClientXMPP):
# TODO Test # TODO Test
async def on_groupchat_invite(self, message): async def on_groupchat_invite(self, message):
time_begin = time.time()
jid_full = str(message['from']) jid_full = str(message['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' message_log = '{}: jid_full: {}'
.format(function_name, jid_full)) logger.debug(message_log.format(function_name, jid_full))
inviter = message['from'].bare inviter = message['from'].bare
muc_jid = message['groupchat_invite']['jid'] muc_jid = message['groupchat_invite']['jid']
await XmppBookmark.add(self, muc_jid) await XmppBookmark.add(self, muc_jid)
@ -195,14 +197,19 @@ class Slixfeed(slixmpp.ClientXMPP):
'You may always reach me via xmpp:{}?message' 'You may always reach me via xmpp:{}?message'
.format(self.alias, self.boundjid.bare)) .format(self.alias, self.boundjid.bare))
XmppMessage.send(self, muc_jid, message_body, 'groupchat') XmppMessage.send(self, muc_jid, message_body, 'groupchat')
time_end = time.time()
difference = time_end - time_begin
if difference > 1: logger.warning('{} (time: {})'.format(function_name,
difference))
# NOTE Tested with Gajim and Psi # NOTE Tested with Gajim and Psi
async def on_groupchat_direct_invite(self, message): async def on_groupchat_direct_invite(self, message):
time_begin = time.time()
jid_full = str(message['from']) jid_full = str(message['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' message_log = '{}: jid_full: {}'
.format(function_name, jid_full)) logger.debug(message_log.format(function_name, jid_full))
inviter = message['from'].bare inviter = message['from'].bare
muc_jid = message['groupchat_invite']['jid'] muc_jid = message['groupchat_invite']['jid']
await XmppBookmark.add(self, muc_jid) await XmppBookmark.add(self, muc_jid)
@ -213,6 +220,10 @@ class Slixfeed(slixmpp.ClientXMPP):
'You may always reach me via xmpp:{}?message' 'You may always reach me via xmpp:{}?message'
.format(self.alias, self.boundjid.bare)) .format(self.alias, self.boundjid.bare))
XmppMessage.send(self, muc_jid, message_body, 'groupchat') XmppMessage.send(self, muc_jid, message_body, 'groupchat')
time_end = time.time()
difference = time_end - time_begin
if difference > 1: logger.warning('{} (time: {})'.format(function_name,
difference))
async def on_session_end(self, event): async def on_session_end(self, event):
@ -221,14 +232,23 @@ class Slixfeed(slixmpp.ClientXMPP):
async def on_connection_failed(self, event): async def on_connection_failed(self, event):
logger.info('Event connection_failed has been initiated.') time_begin = time.time()
function_name = sys._getframe().f_code.co_name
message_log = '{}'
logger.debug(message_log.format(function_name))
message = 'Connection has failed. Reason: {}'.format(event) message = 'Connection has failed. Reason: {}'.format(event)
XmppConnect.recover(self, message) XmppConnect.recover(self, message)
time_end = time.time()
difference = time_end - time_begin
if difference > 1: logger.warning('{} (time: {})'.format(function_name,
difference))
async def on_session_start(self, event): async def on_session_start(self, event):
time_begin = time.time()
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated.'.format(function_name)) message_log = '{}'
logger.debug(message_log.format(function_name))
# self.send_presence() # self.send_presence()
profile.set_identity(self, 'client') profile.set_identity(self, 'client')
# XmppCommand.adhoc_commands(self) # XmppCommand.adhoc_commands(self)
@ -244,32 +264,48 @@ class Slixfeed(slixmpp.ClientXMPP):
jid_op = config.get_value('accounts', 'XMPP', 'operator') jid_op = config.get_value('accounts', 'XMPP', 'operator')
status_message = 'Slixfeed version {}'.format(__version__) status_message = 'Slixfeed version {}'.format(__version__)
XmppPresence.send(self, jid_op, status_message) XmppPresence.send(self, jid_op, status_message)
time_end = time.time()
difference = time_end - time_begin
if difference > 1: logger.warning('{} (time: {})'.format(function_name,
difference))
def on_session_resumed(self, event): def on_session_resumed(self, event):
time_begin = time.time()
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated.'.format(function_name)) message_log = '{}'
logger.debug(message_log.format(function_name))
# self.send_presence() # self.send_presence()
profile.set_identity(self, 'client') profile.set_identity(self, 'client')
self['xep_0115'].update_caps() self['xep_0115'].update_caps()
XmppGroupchat.autojoin(self) XmppGroupchat.autojoin(self)
time_end = time.time()
difference = time_end - time_begin
if difference > 1: logger.warning('{} (time: {})'.format(function_name,
difference))
async def on_disco_info(self, DiscoInfo): async def on_disco_info(self, DiscoInfo):
time_begin = time.time()
jid_full = str(DiscoInfo['from']) jid_full = str(DiscoInfo['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' message_log = '{}: jid_full: {}'
.format(function_name, jid_full)) logger.debug(message_log.format(function_name, jid_full))
# self.service_reactions() # self.service_reactions()
# self.send_presence(pto=jid) # self.send_presence(pto=jid)
await self['xep_0115'].update_caps(jid=jid_full) await self['xep_0115'].update_caps(jid=jid_full)
time_end = time.time()
difference = time_end - time_begin
if difference > 1: logger.warning('{} (time: {})'.format(function_name,
difference))
async def on_message(self, message): async def on_message(self, message):
time_begin = time.time()
jid_full = str(message['from']) jid_full = str(message['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' message_log = '{}: jid_full: {}'
.format(function_name, jid_full)) logger.debug(message_log.format(function_name, jid_full))
jid_bare = message['from'].bare jid_bare = message['from'].bare
if jid_bare == self.boundjid.bare: if jid_bare == self.boundjid.bare:
status_type = 'dnd' status_type = 'dnd'
@ -296,13 +332,18 @@ class Slixfeed(slixmpp.ClientXMPP):
# chat_type = message["type"] # chat_type = message["type"]
# message_body = message["body"] # message_body = message["body"]
# message_reply = message.reply # message_reply = message.reply
time_end = time.time()
difference = time_end - time_begin
if difference > 1: logger.warning('{} (time: {})'.format(function_name,
difference))
async def on_changed_status(self, presence): async def on_changed_status(self, presence):
time_begin = time.time()
jid_full = str(presence['from']) jid_full = str(presence['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' message_log = '{}: jid_full: {}'
.format(function_name, jid_full)) logger.debug(message_log.format(function_name, jid_full))
# await task.check_readiness(self, presence) # await task.check_readiness(self, presence)
jid_bare = presence['from'].bare jid_bare = presence['from'].bare
if jid_bare in self.boundjid.bare: if jid_bare in self.boundjid.bare:
@ -312,13 +353,18 @@ class Slixfeed(slixmpp.ClientXMPP):
task.clean_tasks_xmpp(self, jid_bare, key_list) task.clean_tasks_xmpp(self, jid_bare, key_list)
key_list = ['status', 'check'] key_list = ['status', 'check']
await task.start_tasks_xmpp(self, jid_bare, key_list) await task.start_tasks_xmpp(self, jid_bare, key_list)
time_end = time.time()
difference = time_end - time_begin
if difference > 1: logger.warning('{} (time: {})'.format(function_name,
difference))
async def on_presence_subscribe(self, presence): async def on_presence_subscribe(self, presence):
time_begin = time.time()
jid_full = str(presence['from']) jid_full = str(presence['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' message_log = '{}: jid_full: {}'
.format(function_name, jid_full)) logger.debug(message_log.format(function_name, jid_full))
jid_bare = presence['from'].bare jid_bare = presence['from'].bare
if not self.client_roster[jid_bare]['to']: if not self.client_roster[jid_bare]['to']:
# XmppPresence.subscription(self, jid, 'subscribe') # XmppPresence.subscription(self, jid, 'subscribe')
@ -330,13 +376,18 @@ class Slixfeed(slixmpp.ClientXMPP):
message_body = 'Share online status to receive updates.' message_body = 'Share online status to receive updates.'
XmppMessage.send_headline(self, jid_bare, message_subject, XmppMessage.send_headline(self, jid_bare, message_subject,
message_body, 'chat') message_body, 'chat')
time_end = time.time()
difference = time_end - time_begin
if difference > 1: logger.warning('{} (time: {})'.format(function_name,
difference))
def on_presence_subscribed(self, presence): def on_presence_subscribed(self, presence):
time_begin = time.time()
jid_full = str(presence['from']) jid_full = str(presence['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' message_log = '{}: jid_full: {}'
.format(function_name, jid_full)) logger.debug(message_log.format(function_name, jid_full))
message_subject = 'RSS News Bot' message_subject = 'RSS News Bot'
message_body = ('Greetings! I am {}, the news anchor.\n' message_body = ('Greetings! I am {}, the news anchor.\n'
'My job is to bring you the latest ' 'My job is to bring you the latest '
@ -347,13 +398,18 @@ class Slixfeed(slixmpp.ClientXMPP):
# XmppPresence.subscription(self, jid, 'subscribed') # XmppPresence.subscription(self, jid, 'subscribed')
XmppMessage.send_headline(self, jid_bare, message_subject, XmppMessage.send_headline(self, jid_bare, message_subject,
message_body, 'chat') message_body, 'chat')
time_end = time.time()
difference = time_end - time_begin
if difference > 1: logger.warning('{} (time: {})'.format(function_name,
difference))
async def on_presence_available(self, presence): async def on_presence_available(self, presence):
time_begin = time.time()
jid_full = str(presence['from']) jid_full = str(presence['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' message_log = '{}: jid_full: {}'
.format(function_name, jid_full)) logger.debug(message_log.format(function_name, jid_full))
# TODO Add function to check whether task is already running or not # TODO Add function to check whether task is already running or not
# await task.start_tasks(self, presence) # await task.start_tasks(self, presence)
# NOTE Already done inside the start-task function # NOTE Already done inside the start-task function
@ -366,13 +422,19 @@ class Slixfeed(slixmpp.ClientXMPP):
await task.start_tasks_xmpp(self, jid_bare) await task.start_tasks_xmpp(self, jid_bare)
self.add_event_handler("presence_unavailable", self.add_event_handler("presence_unavailable",
self.on_presence_unavailable) self.on_presence_unavailable)
time_end = time.time()
difference = time_end - time_begin
if difference > 1: logger.warning('{}: jid_full: {} (time: {})'
.format(function_name, jid_full,
difference))
def on_presence_unsubscribed(self, presence): def on_presence_unsubscribed(self, presence):
time_begin = time.time()
jid_full = str(presence['from']) jid_full = str(presence['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' message_log = '{}: jid_full: {}'
.format(function_name, jid_full)) logger.debug(message_log.format(function_name, jid_full))
jid_bare = presence['from'].bare jid_bare = presence['from'].bare
message_body = 'You have been unsubscribed.' message_body = 'You have been unsubscribed.'
# status_message = '🖋️ Subscribe to receive updates' # status_message = '🖋️ Subscribe to receive updates'
@ -382,16 +444,19 @@ class Slixfeed(slixmpp.ClientXMPP):
# XmppPresence.send(self, jid, status_message, # XmppPresence.send(self, jid, status_message,
# presence_type='unsubscribed') # presence_type='unsubscribed')
XmppRoster.remove(self, jid_bare) XmppRoster.remove(self, jid_bare)
time_end = time.time()
difference = time_end - time_begin
if difference > 1: logger.warning('{} (time: {})'.format(function_name,
difference))
def on_presence_unavailable(self, presence): def on_presence_unavailable(self, presence):
time_begin = time.time()
jid_full = str(presence['from']) jid_full = str(presence['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' message_log = '{}: jid_full: {}'
.format(function_name, jid_full)) logger.debug(message_log.format(function_name, jid_full))
jid_bare = presence['from'].bare jid_bare = presence['from'].bare
logger.info('Event presence_unavailable has been initiated for JID {}.'
.format(jid_bare))
# await task.stop_tasks(self, jid) # await task.stop_tasks(self, jid)
task.clean_tasks_xmpp(self, jid_bare) task.clean_tasks_xmpp(self, jid_bare)
@ -402,6 +467,10 @@ class Slixfeed(slixmpp.ClientXMPP):
presence_type='unavailable') presence_type='unavailable')
self.del_event_handler("presence_unavailable", self.del_event_handler("presence_unavailable",
self.on_presence_unavailable) self.on_presence_unavailable)
time_end = time.time()
difference = time_end - time_begin
if difference > 1: logger.warning('{} (time: {})'.format(function_name,
difference))
# TODO # TODO
@ -410,12 +479,17 @@ class Slixfeed(slixmpp.ClientXMPP):
# If roster, remove contact JID into file # If roster, remove contact JID into file
# If bookmarks, remove groupchat JID into file # If bookmarks, remove groupchat JID into file
def on_presence_error(self, presence): def on_presence_error(self, presence):
time_begin = time.time()
jid_full = str(presence['from']) jid_full = str(presence['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' message_log = '{}: jid_full: {}'
.format(function_name, jid_full)) logger.debug(message_log.format(function_name, jid_full))
jid_bare = presence["from"].bare jid_bare = presence["from"].bare
task.clean_tasks_xmpp(self, jid_bare) task.clean_tasks_xmpp(self, jid_bare)
time_end = time.time()
difference = time_end - time_begin
if difference > 1: logger.warning('{} (time: {})'.format(function_name,
difference))
def on_reactions(self, message): def on_reactions(self, message):
@ -424,10 +498,11 @@ class Slixfeed(slixmpp.ClientXMPP):
async def on_chatstate_active(self, message): async def on_chatstate_active(self, message):
time_begin = time.time()
jid_full = str(message['from']) jid_full = str(message['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' message_log = '{}: jid_full: {}'
.format(function_name, jid_full)) logger.debug(message_log.format(function_name, jid_full))
jid_bare = message['from'].bare jid_bare = message['from'].bare
if jid_bare in self.boundjid.bare: if jid_bare in self.boundjid.bare:
return return
@ -439,13 +514,18 @@ class Slixfeed(slixmpp.ClientXMPP):
await asyncio.sleep(5) await asyncio.sleep(5)
key_list = ['status'] key_list = ['status']
await task.start_tasks_xmpp(self, jid_bare, key_list) await task.start_tasks_xmpp(self, jid_bare, key_list)
time_end = time.time()
difference = time_end - time_begin
if difference > 1: logger.warning('{} (time: {})'.format(function_name,
difference))
async def on_chatstate_composing(self, message): async def on_chatstate_composing(self, message):
time_begin = time.time()
jid_full = str(message['from']) jid_full = str(message['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' message_log = '{}: jid_full: {}'
.format(function_name, jid_full)) logger.debug(message_log.format(function_name, jid_full))
if message['type'] in ('chat', 'normal'): if message['type'] in ('chat', 'normal'):
jid_bare = message['from'].bare jid_bare = message['from'].bare
# NOTE: Required for Cheogram # NOTE: Required for Cheogram
@ -456,13 +536,18 @@ class Slixfeed(slixmpp.ClientXMPP):
status_message = ('💡 Send "help" for manual, or "info" for ' status_message = ('💡 Send "help" for manual, or "info" for '
'information.') 'information.')
XmppPresence.send(self, jid_bare, status_message) XmppPresence.send(self, jid_bare, status_message)
time_end = time.time()
difference = time_end - time_begin
if difference > 1: logger.warning('{} (time: {})'.format(function_name,
difference))
async def on_chatstate_gone(self, message): async def on_chatstate_gone(self, message):
time_begin = time.time()
jid_full = str(message['from']) jid_full = str(message['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' message_log = '{}: jid_full: {}'
.format(function_name, jid_full)) logger.debug(message_log.format(function_name, jid_full))
jid_bare = message['from'].bare jid_bare = message['from'].bare
if jid_bare in self.boundjid.bare: if jid_bare in self.boundjid.bare:
return return
@ -470,13 +555,18 @@ class Slixfeed(slixmpp.ClientXMPP):
# task.clean_tasks_xmpp(self, jid, ['status']) # task.clean_tasks_xmpp(self, jid, ['status'])
key_list = ['status'] key_list = ['status']
await task.start_tasks_xmpp(self, jid_bare, key_list) await task.start_tasks_xmpp(self, jid_bare, key_list)
time_end = time.time()
difference = time_end - time_begin
if difference > 1: logger.warning('{} (time: {})'.format(function_name,
difference))
async def on_chatstate_inactive(self, message): async def on_chatstate_inactive(self, message):
time_begin = time.time()
jid_full = str(message['from']) jid_full = str(message['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' message_log = '{}: jid_full: {}'
.format(function_name, jid_full)) logger.debug(message_log.format(function_name, jid_full))
jid_bare = message['from'].bare jid_bare = message['from'].bare
if jid_bare in self.boundjid.bare: if jid_bare in self.boundjid.bare:
return return
@ -484,13 +574,18 @@ class Slixfeed(slixmpp.ClientXMPP):
# task.clean_tasks_xmpp(self, jid, ['status']) # task.clean_tasks_xmpp(self, jid, ['status'])
key_list = ['status'] key_list = ['status']
await task.start_tasks_xmpp(self, jid_bare, key_list) await task.start_tasks_xmpp(self, jid_bare, key_list)
time_end = time.time()
difference = time_end - time_begin
if difference > 1: logger.warning('{} (time: {})'.format(function_name,
difference))
async def on_chatstate_paused(self, message): async def on_chatstate_paused(self, message):
time_begin = time.time()
jid_full = str(message['from']) jid_full = str(message['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' message_log = '{}: jid_full: {}'
.format(function_name, jid_full)) logger.debug(message_log.format(function_name, jid_full))
jid_bare = message['from'].bare jid_bare = message['from'].bare
if jid_bare in self.boundjid.bare: if jid_bare in self.boundjid.bare:
return return
@ -498,6 +593,10 @@ class Slixfeed(slixmpp.ClientXMPP):
# task.clean_tasks_xmpp(self, jid, ['status']) # task.clean_tasks_xmpp(self, jid, ['status'])
key_list = ['status'] key_list = ['status']
await task.start_tasks_xmpp(self, jid_bare, key_list) await task.start_tasks_xmpp(self, jid_bare, key_list)
time_end = time.time()
difference = time_end - time_begin
if difference > 1: logger.warning('{} (time: {})'.format(function_name,
difference))
@ -546,7 +645,8 @@ class Slixfeed(slixmpp.ClientXMPP):
def adhoc_commands(self): def adhoc_commands(self):
logger.info('Function adhoc_commands has been initiated.') function_name = sys._getframe().f_code.co_name
logger.debug('{}'.format(function_name))
# self["xep_0050"].add_command( # self["xep_0050"].add_command(
# node="updates_enable", # node="updates_enable",
# name="Enable/Disable News Updates", # name="Enable/Disable News Updates",
@ -598,7 +698,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_profile(self, iq, session): async def _handle_profile(self, iq, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
jid_bare = session['from'].bare jid_bare = session['from'].bare
jid_file = jid_bare jid_file = jid_bare
@ -693,7 +793,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_filters(self, iq, session): async def _handle_filters(self, iq, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
jid_bare = session['from'].bare jid_bare = session['from'].bare
chat_type = await get_chat_type(self, jid_bare) chat_type = await get_chat_type(self, jid_bare)
@ -746,7 +846,7 @@ class Slixfeed(slixmpp.ClientXMPP):
""" """
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
# Text is not displayed; only labels # Text is not displayed; only labels
form = payload form = payload
@ -784,7 +884,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_subscription_add(self, iq, session): async def _handle_subscription_add(self, iq, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
jid_bare = session['from'].bare jid_bare = session['from'].bare
chat_type = await get_chat_type(self, jid_bare) chat_type = await get_chat_type(self, jid_bare)
@ -825,7 +925,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_recent(self, iq, session): async def _handle_recent(self, iq, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
form = self['xep_0004'].make_form('form', 'Updates') form = self['xep_0004'].make_form('form', 'Updates')
form['instructions'] = 'Browse and read news' form['instructions'] = 'Browse and read news'
@ -850,7 +950,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_recent_result(self, payload, session): async def _handle_recent_result(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
jid_bare = session['from'].bare jid_bare = session['from'].bare
jid_file = jid_bare jid_file = jid_bare
@ -858,9 +958,9 @@ class Slixfeed(slixmpp.ClientXMPP):
num = 100 num = 100
match payload['values']['action']: match payload['values']['action']:
case 'all': case 'all':
results = await sqlite.get_entries(db_file, num) results = await sqlite.get_entries(db_file, num) # FIXME
case 'rejected': case 'rejected':
results = await sqlite.get_entries_rejected(db_file, num) results = await sqlite.get_entries_rejected(db_file, num) # FIXME
case 'unread': case 'unread':
results = await sqlite.get_unread_entries(db_file, num) results = await sqlite.get_unread_entries(db_file, num)
if results: if results:
@ -889,7 +989,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_recent_select(self, payload, session): async def _handle_recent_select(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
values = payload['values'] values = payload['values']
ix = values['update'] ix = values['update']
@ -956,7 +1056,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_recent_action(self, payload, session): async def _handle_recent_action(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
ext = payload['values']['filetype'] ext = payload['values']['filetype']
url = payload['values']['url'][0] url = payload['values']['url'][0]
@ -1010,7 +1110,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_subscription_new(self, payload, session): async def _handle_subscription_new(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
jid_bare = session['from'].bare jid_bare = session['from'].bare
jid_file = jid_bare jid_file = jid_bare
@ -1137,7 +1237,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_subscription_enable(self, payload, session): async def _handle_subscription_enable(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
form = payload form = payload
jid_bare = session['from'].bare jid_bare = session['from'].bare
@ -1171,7 +1271,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_subscription_disable(self, payload, session): async def _handle_subscription_disable(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
form = payload form = payload
jid_bare = session['from'].bare jid_bare = session['from'].bare
@ -1205,7 +1305,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_subscription_del_complete(self, payload, session): async def _handle_subscription_del_complete(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
form = payload form = payload
jid_bare = session['from'].bare jid_bare = session['from'].bare
@ -1239,7 +1339,7 @@ class Slixfeed(slixmpp.ClientXMPP):
def _handle_cancel(self, payload, session): def _handle_cancel(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
text_note = ('Operation has been cancelled.' text_note = ('Operation has been cancelled.'
'\n' '\n'
@ -1252,7 +1352,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_discover(self, iq, session): async def _handle_discover(self, iq, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
jid_bare = session['from'].bare jid_bare = session['from'].bare
chat_type = await get_chat_type(self, jid_bare) chat_type = await get_chat_type(self, jid_bare)
@ -1284,7 +1384,7 @@ class Slixfeed(slixmpp.ClientXMPP):
def _handle_discover_type(self, payload, session): def _handle_discover_type(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
values = payload['values'] values = payload['values']
search_type = values['search_type'] search_type = values['search_type']
@ -1340,7 +1440,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_discover_category(self, payload, session): async def _handle_discover_category(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
values = payload['values'] values = payload['values']
category = values['category'] category = values['category']
@ -1370,7 +1470,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_subscriptions(self, iq, session): async def _handle_subscriptions(self, iq, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
jid_bare = session['from'].bare jid_bare = session['from'].bare
chat_type = await get_chat_type(self, jid_bare) chat_type = await get_chat_type(self, jid_bare)
@ -1403,7 +1503,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_subscriptions_result(self, payload, session): async def _handle_subscriptions_result(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
jid_bare = session['from'].bare jid_bare = session['from'].bare
jid_file = jid_bare jid_file = jid_bare
@ -1507,7 +1607,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_subscription_tag(self, payload, session): async def _handle_subscription_tag(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
jid_bare = session['from'].bare jid_bare = session['from'].bare
jid_file = jid_bare jid_file = jid_bare
@ -1541,7 +1641,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_subscription(self, iq, session): async def _handle_subscription(self, iq, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
jid_bare = session['from'].bare jid_bare = session['from'].bare
form = self['xep_0004'].make_form('form', 'Subscription editor') form = self['xep_0004'].make_form('form', 'Subscription editor')
@ -1588,7 +1688,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_subscription_editor(self, payload, session): async def _handle_subscription_editor(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
jid_bare = session['from'].bare jid_bare = session['from'].bare
jid_file = jid_bare jid_file = jid_bare
@ -1684,7 +1784,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_subscription_complete(self, payload, session): async def _handle_subscription_complete(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
jid_bare = session['from'].bare jid_bare = session['from'].bare
values = payload['values'] values = payload['values']
@ -1749,7 +1849,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_subscription_selector(self, payload, session): async def _handle_subscription_selector(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
jid_bare = session['from'].bare jid_bare = session['from'].bare
form = self['xep_0004'].make_form('form', 'Add Subscription') form = self['xep_0004'].make_form('form', 'Add Subscription')
@ -1791,7 +1891,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_advanced(self, iq, session): async def _handle_advanced(self, iq, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
jid_bare = session['from'].bare jid_bare = session['from'].bare
chat_type = await get_chat_type(self, jid_bare) chat_type = await get_chat_type(self, jid_bare)
@ -1826,7 +1926,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_advanced_result(self, payload, session): async def _handle_advanced_result(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
match payload['values']['option']: match payload['values']['option']:
case 'activity': case 'activity':
@ -1931,7 +2031,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_about(self, iq, session): async def _handle_about(self, iq, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
form = self['xep_0004'].make_form('form', 'About') form = self['xep_0004'].make_form('form', 'About')
form['instructions'] = 'Information about Slixfeed and related projects' form['instructions'] = 'Information about Slixfeed and related projects'
@ -1960,7 +2060,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_about_result(self, payload, session): async def _handle_about_result(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
match payload['values']['option']: match payload['values']['option']:
case 'about': case 'about':
@ -2043,7 +2143,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_motd(self, iq, session): async def _handle_motd(self, iq, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
# TODO add functionality to attach image. # TODO add functionality to attach image.
# Here you can add groupchat rules,post schedule, tasks or # Here you can add groupchat rules,post schedule, tasks or
@ -2056,7 +2156,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_help(self, iq, session): async def _handle_help(self, iq, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
import tomllib import tomllib
@ -2098,7 +2198,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_import_complete(self, payload, session): async def _handle_import_complete(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
form = payload form = payload
url = payload['values']['url'] url = payload['values']['url']
@ -2135,7 +2235,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_export_complete(self, payload, session): async def _handle_export_complete(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
form = payload form = payload
jid_bare = session['from'].bare jid_bare = session['from'].bare
@ -2168,7 +2268,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_promoted(self, iq, session): async def _handle_promoted(self, iq, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
jid_bare = session['from'].bare jid_bare = session['from'].bare
jid_full = str(session['from']) jid_full = str(session['from'])
@ -2235,7 +2335,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_admin_action(self, payload, session): async def _handle_admin_action(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
jid_bare = session['from'].bare jid_bare = session['from'].bare
jid_file = jid_bare jid_file = jid_bare
@ -2319,7 +2419,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_subscribers_complete(self, payload, session): async def _handle_subscribers_complete(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
values = payload['values'] values = payload['values']
jid_bare = values['jid'] jid_bare = values['jid']
@ -2367,7 +2467,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_contact_action(self, payload, session): async def _handle_contact_action(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
jid_bare = payload['values']['jid'] jid_bare = payload['values']['jid']
form = self['xep_0004'].make_form('form', 'Contacts') form = self['xep_0004'].make_form('form', 'Contacts')
@ -2434,7 +2534,7 @@ class Slixfeed(slixmpp.ClientXMPP):
def _handle_contacts_complete(self, payload, session): def _handle_contacts_complete(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
values = payload['values'] values = payload['values']
jid_bare = values['jid'] jid_bare = values['jid']
@ -2458,7 +2558,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_bookmarks_editor(self, payload, session): async def _handle_bookmarks_editor(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
jid_bare = payload['values']['jid'] jid_bare = payload['values']['jid']
properties = await XmppBookmark.properties(self, jid_bare) properties = await XmppBookmark.properties(self, jid_bare)
@ -2523,7 +2623,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_bookmarks_complete(self, payload, session): async def _handle_bookmarks_complete(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
# form = self['xep_0004'].make_form('result', 'Done') # form = self['xep_0004'].make_form('result', 'Done')
# form['instructions'] = ('✅️ Bookmark has been saved') # form['instructions'] = ('✅️ Bookmark has been saved')
@ -2558,7 +2658,7 @@ class Slixfeed(slixmpp.ClientXMPP):
""" """
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
jid_bare = session['from'].bare jid_bare = session['from'].bare
chat_type = await get_chat_type(self, jid_bare) chat_type = await get_chat_type(self, jid_bare)
@ -2671,7 +2771,7 @@ class Slixfeed(slixmpp.ClientXMPP):
async def _handle_settings_complete(self, payload, session): async def _handle_settings_complete(self, payload, session):
jid_full = str(session['from']) jid_full = str(session['from'])
function_name = sys._getframe().f_code.co_name function_name = sys._getframe().f_code.co_name
logger.info('Function {} has been initiated for JID {}.' logger.debug('{}: jid_full: {}'
.format(function_name, jid_full)) .format(function_name, jid_full))
jid_bare = session['from'].bare jid_bare = session['from'].bare
form = payload form = payload

2091
slixfeed/xmpp/command.py Normal file

File diff suppressed because it is too large Load diff