forked from sch/Slixfeed
Fix statistics
This commit is contained in:
parent
219c23a648
commit
c04a1b6534
5 changed files with 52 additions and 57 deletions
|
@ -69,6 +69,10 @@ TODO
|
|||
|
||||
17) Make the program portable (directly use the directory assets) -- Thorsten
|
||||
|
||||
18) The operator account will be given reports from the bot about its
|
||||
activities every X minutes.
|
||||
When a suspicious activity is detected, it will be reported immediately.
|
||||
|
||||
"""
|
||||
|
||||
# vars and their meanings:
|
||||
|
|
|
@ -16,6 +16,12 @@ TODO
|
|||
2) Call sqlite function from function statistics.
|
||||
Returning a list of values doesn't' seem to be a good practice.
|
||||
|
||||
3) Special statistics for operator:
|
||||
* Size of database(s);
|
||||
* Amount of JIDs subscribed;
|
||||
* Amount of feeds of all JIDs;
|
||||
* Amount of entries of all JIDs.
|
||||
|
||||
"""
|
||||
|
||||
from asyncio.exceptions import IncompleteReadError
|
||||
|
@ -225,7 +231,15 @@ def list_feeds_by_query(query, results):
|
|||
return message
|
||||
|
||||
|
||||
def list_statistics(values):
|
||||
async def get_setting_value(db_file, key):
|
||||
value = (
|
||||
await sqlite.get_settings_value(db_file, key) or
|
||||
config.get_value_default("settings", "Settings", key)
|
||||
)
|
||||
return value
|
||||
|
||||
|
||||
async def list_statistics(db_file):
|
||||
"""
|
||||
Return table statistics.
|
||||
|
||||
|
@ -239,6 +253,27 @@ def list_statistics(values):
|
|||
msg : str
|
||||
Statistics as message.
|
||||
"""
|
||||
entries_unread = await sqlite.get_number_of_entries_unread(db_file)
|
||||
entries = await sqlite.get_number_of_items(db_file, 'entries')
|
||||
archive = await sqlite.get_number_of_items(db_file, 'archive')
|
||||
entries_all = entries + archive
|
||||
feeds_active = await sqlite.get_number_of_feeds_active(db_file)
|
||||
feeds_all = await sqlite.get_number_of_items(db_file, 'feeds')
|
||||
key_archive = await get_setting_value(db_file, "archive")
|
||||
key_interval = await get_setting_value(db_file, "interval")
|
||||
key_quantum = await get_setting_value(db_file, "quantum")
|
||||
key_enabled = await get_setting_value(db_file, "enabled")
|
||||
|
||||
# msg = """You have {} unread news items out of {} from {} news sources.
|
||||
# """.format(unread_entries, entries, feeds)
|
||||
|
||||
# try:
|
||||
# value = cur.execute(sql, par).fetchone()[0]
|
||||
# except:
|
||||
# print("Error for key:", key)
|
||||
# value = "Default"
|
||||
# values.extend([value])
|
||||
|
||||
message = (
|
||||
"```"
|
||||
"\nSTATISTICS\n"
|
||||
|
@ -250,8 +285,16 @@ def list_statistics(values):
|
|||
"Items per update : {}\n"
|
||||
"Operation status : {}\n"
|
||||
"```"
|
||||
).format(values[0], values[1], values[2], values[3],
|
||||
values[4], values[5], values[6], values[7])
|
||||
).format(
|
||||
entries_unread,
|
||||
entries_all,
|
||||
feeds_active,
|
||||
feeds_all,
|
||||
key_archive,
|
||||
key_interval,
|
||||
key_quantum,
|
||||
key_enabled
|
||||
)
|
||||
return message
|
||||
|
||||
|
||||
|
|
|
@ -16,9 +16,7 @@ TODO
|
|||
|
||||
3) Add "if utility.is_feed(url, feed)" to view_entry and view_feed
|
||||
|
||||
4) Refactor view_entry and view_feed - Why "if" twice?
|
||||
|
||||
5) Replace sqlite.remove_nonexistent_entries by sqlite.check_entry_exist
|
||||
4) Replace sqlite.remove_nonexistent_entries by sqlite.check_entry_exist
|
||||
Same check, just reverse.
|
||||
|
||||
"""
|
||||
|
|
|
@ -961,48 +961,6 @@ async def delete_archived_entry(cur, ix):
|
|||
cur.execute(sql, par)
|
||||
|
||||
|
||||
async def statistics(db_file):
|
||||
"""
|
||||
Return table statistics.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
db_file : str
|
||||
Path to database file.
|
||||
|
||||
Returns
|
||||
-------
|
||||
values : list
|
||||
List of values.
|
||||
"""
|
||||
values = []
|
||||
values.extend([await get_number_of_entries_unread(db_file)])
|
||||
entries = await get_number_of_items(db_file, 'entries')
|
||||
archive = await get_number_of_items(db_file, 'archive')
|
||||
values.extend([entries + archive])
|
||||
values.extend([await get_number_of_feeds_active(db_file)])
|
||||
values.extend([await get_number_of_items(db_file, 'feeds')])
|
||||
# msg = """You have {} unread news items out of {} from {} news sources.
|
||||
# """.format(unread_entries, entries, feeds)
|
||||
with create_connection(db_file) as conn:
|
||||
cur = conn.cursor()
|
||||
for key in ["archive", "interval",
|
||||
"quantum", "enabled"]:
|
||||
sql = (
|
||||
"SELECT value "
|
||||
"FROM settings "
|
||||
"WHERE key = ?"
|
||||
)
|
||||
par = (key,)
|
||||
try:
|
||||
value = cur.execute(sql, par).fetchone()[0]
|
||||
except:
|
||||
print("Error for key:", key)
|
||||
value = "Default"
|
||||
values.extend([value])
|
||||
return values
|
||||
|
||||
|
||||
async def update_statistics(cur):
|
||||
"""
|
||||
Update table statistics.
|
||||
|
|
|
@ -756,13 +756,6 @@ async def message(self, message):
|
|||
# "Every update will contain {} news items."
|
||||
# ).format(response)
|
||||
db_file = get_pathname_to_database(jid)
|
||||
a = await sqlite.get_settings_value(db_file, key)
|
||||
print(a)
|
||||
print(key)
|
||||
print(val)
|
||||
print(a)
|
||||
print(a)
|
||||
print(a)
|
||||
if await sqlite.get_settings_value(
|
||||
db_file, key):
|
||||
await sqlite.update_settings_value(
|
||||
|
@ -927,8 +920,7 @@ async def message(self, message):
|
|||
send_reply_message(self, message, response)
|
||||
case "stats":
|
||||
db_file = get_pathname_to_database(jid)
|
||||
result = await sqlite.statistics(db_file)
|
||||
response = action.list_statistics(result)
|
||||
response = await action.list_statistics(db_file)
|
||||
send_reply_message(self, message, response)
|
||||
case _ if message_lowercase.startswith("disable "):
|
||||
ix = message_text[8:]
|
||||
|
|
Loading…
Reference in a new issue