bump requirements and adapt todoist module accordingly
This commit is contained in:
parent
49741f9618
commit
9dff6e88cf
@ -111,6 +111,10 @@ class Feeds(inkycal_module):
|
|||||||
if "summary" in posts:
|
if "summary" in posts:
|
||||||
summary = posts["summary"]
|
summary = posts["summary"]
|
||||||
parsed_feeds.append(f"•{posts.title}: {re.sub('<[^<]+?>', '', posts.summary)}")
|
parsed_feeds.append(f"•{posts.title}: {re.sub('<[^<]+?>', '', posts.summary)}")
|
||||||
|
# if "description" in posts:
|
||||||
|
|
||||||
|
parsed_feeds = [i.split("\n") for i in parsed_feeds][0]
|
||||||
|
parsed_feeds = [i for i in parsed_feeds if i]
|
||||||
|
|
||||||
self._parsed_feeds = parsed_feeds
|
self._parsed_feeds = parsed_feeds
|
||||||
|
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
#!python3
|
#!python3
|
||||||
|
|
||||||
"""
|
"""
|
||||||
todoist module for Inky-Calendar Project
|
Inkycal Todoist Module
|
||||||
Copyright by aceisace
|
Copyright by aceisace
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from inkycal.modules.template import inkycal_module
|
from inkycal.modules.template import inkycal_module
|
||||||
from inkycal.custom import *
|
from inkycal.custom import *
|
||||||
|
|
||||||
import todoist
|
from todoist_api_python.api_async import TodoistAPIAsync
|
||||||
|
from todoist_api_python.api import TodoistAPI
|
||||||
|
|
||||||
filename = os.path.basename(__file__).split('.py')[0]
|
filename = os.path.basename(__file__).split('.py')[0]
|
||||||
logger = logging.getLogger(filename)
|
logger = logging.getLogger(filename)
|
||||||
@ -16,7 +17,7 @@ logger = logging.getLogger(filename)
|
|||||||
|
|
||||||
class Todoist(inkycal_module):
|
class Todoist(inkycal_module):
|
||||||
"""Todoist api class
|
"""Todoist api class
|
||||||
parses todos from api-key
|
parses todo's from api-key
|
||||||
"""
|
"""
|
||||||
|
|
||||||
name = "Todoist API - show your todos from todoist"
|
name = "Todoist API - show your todos from todoist"
|
||||||
@ -55,8 +56,7 @@ class Todoist(inkycal_module):
|
|||||||
else:
|
else:
|
||||||
self.project_filter = config['project_filter']
|
self.project_filter = config['project_filter']
|
||||||
|
|
||||||
self._api = todoist.TodoistAPI(config['api_key'])
|
self._api = TodoistAPI(config['api_key'])
|
||||||
self._api.sync()
|
|
||||||
|
|
||||||
# give an OK message
|
# give an OK message
|
||||||
print(f'{filename} loaded')
|
print(f'{filename} loaded')
|
||||||
@ -82,7 +82,6 @@ class Todoist(inkycal_module):
|
|||||||
# Check if internet is available
|
# Check if internet is available
|
||||||
if internet_available():
|
if internet_available():
|
||||||
logger.info('Connection test passed')
|
logger.info('Connection test passed')
|
||||||
self._api.sync()
|
|
||||||
else:
|
else:
|
||||||
raise NetworkNotReachableError
|
raise NetworkNotReachableError
|
||||||
|
|
||||||
@ -100,44 +99,40 @@ class Todoist(inkycal_module):
|
|||||||
(0, spacing_top + _ * line_height) for _ in range(max_lines)]
|
(0, spacing_top + _ * line_height) for _ in range(max_lines)]
|
||||||
|
|
||||||
# Get all projects by name and id
|
# Get all projects by name and id
|
||||||
all_projects = {project['id']: project['name']
|
all_projects = self._api.get_projects()
|
||||||
for project in self._api.projects.all()}
|
filtered_project_ids_and_names = {project.id: project.name for project in all_projects}
|
||||||
|
all_active_tasks = self._api.get_tasks()
|
||||||
|
|
||||||
logger.debug(f"all_projects: {all_projects}")
|
logger.debug(f"all_projects: {all_projects}")
|
||||||
|
|
||||||
# Filter entries in all_projects if filter was given
|
# Filter entries in all_projects if filter was given
|
||||||
if self.project_filter:
|
if self.project_filter:
|
||||||
for project_id in list(all_projects):
|
filtered_projects = [project for project in all_projects if project.name in self.project_filter]
|
||||||
if all_projects[project_id] not in self.project_filter:
|
filtered_project_ids_and_names = {project.id: project.name for project in filtered_projects}
|
||||||
del all_projects[project_id]
|
filtered_project_ids = [project for project in filtered_project_ids_and_names]
|
||||||
|
logger.debug(f"filtered projects: {filtered_projects}")
|
||||||
|
|
||||||
logger.debug(f"all_project: {all_projects}")
|
# If filter was activated and no project was found with that name,
|
||||||
|
|
||||||
# If filter was activated and no roject was found with that name,
|
|
||||||
# raise an exception to avoid showing a blank image
|
# raise an exception to avoid showing a blank image
|
||||||
if all_projects == {}:
|
if not filtered_projects:
|
||||||
logger.error('No project found from project filter!')
|
logger.error('No project found from project filter!')
|
||||||
logger.error('Please double check spellings in project_filter')
|
logger.error('Please double check spellings in project_filter')
|
||||||
raise Exception('No matching project found in filter. Please '
|
raise Exception('No matching project found in filter. Please '
|
||||||
'double check spellings in project_filter or leave'
|
'double check spellings in project_filter or leave'
|
||||||
'empty')
|
'empty')
|
||||||
|
# filtered version of all active tasks
|
||||||
# Create single-use generator to filter undone and non-deleted tasks
|
all_active_tasks = [task for task in all_active_tasks if task.project_id in filtered_project_ids]
|
||||||
tasks = (task.data for task in self._api.state['items'] if
|
|
||||||
task['checked'] == 0 and task['is_deleted'] == 0)
|
|
||||||
|
|
||||||
# Simplify the tasks for faster processing
|
# Simplify the tasks for faster processing
|
||||||
simplified = [
|
simplified = [
|
||||||
{
|
{
|
||||||
'name': task['content'],
|
'name': task.content,
|
||||||
'due': task['due']['string'] if task['due'] is not None else "",
|
'due': task.due,
|
||||||
'priority': task['priority'],
|
'priority': task.priority,
|
||||||
'project': all_projects[task['project_id']] if task['project_id'] in all_projects else "deleted"
|
'project': filtered_project_ids_and_names[task.project_id]
|
||||||
}
|
}
|
||||||
for task in tasks]
|
for task in all_active_tasks
|
||||||
|
]
|
||||||
# remove groups that have been deleted
|
|
||||||
simplified = [task for task in simplified if task['project'] != "deleted"]
|
|
||||||
|
|
||||||
logger.debug(f'simplified: {simplified}')
|
logger.debug(f'simplified: {simplified}')
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@ feedparser==6.0.8
|
|||||||
fonttools==4.32.0
|
fonttools==4.32.0
|
||||||
geojson==2.5.0
|
geojson==2.5.0
|
||||||
icalendar==4.0.9
|
icalendar==4.0.9
|
||||||
idna==3.3
|
|
||||||
kiwisolver==1.4.2
|
kiwisolver==1.4.2
|
||||||
lxml==4.8.0
|
lxml==4.8.0
|
||||||
matplotlib==3.5.1
|
matplotlib==3.5.1
|
||||||
@ -14,7 +13,7 @@ multitasking==0.0.10
|
|||||||
numpy==1.22.3
|
numpy==1.22.3
|
||||||
packaging==21.3
|
packaging==21.3
|
||||||
pandas==1.3.5
|
pandas==1.3.5
|
||||||
Pillow==9.1.0
|
Pillow==9.2.0
|
||||||
pyowm==3.3.0
|
pyowm==3.3.0
|
||||||
pyparsing==3.0.7
|
pyparsing==3.0.7
|
||||||
PySocks==1.7.1
|
PySocks==1.7.1
|
||||||
@ -26,7 +25,7 @@ RPi.GPIO==0.7.1
|
|||||||
sgmllib3k==1.0.0
|
sgmllib3k==1.0.0
|
||||||
six==1.16.0
|
six==1.16.0
|
||||||
spidev==3.5
|
spidev==3.5
|
||||||
todoist-python==8.1.3
|
todoist-api-python==2.0.0
|
||||||
typing_extensions==4.1.1
|
typing_extensions==4.1.1
|
||||||
urllib3==1.26.9
|
urllib3==1.26.9
|
||||||
yfinance==0.1.70
|
yfinance==0.1.70
|
Loading…
Reference in New Issue
Block a user