-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathimdb_to_todoist.py
99 lines (85 loc) · 3.13 KB
/
imdb_to_todoist.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import argparse
from src.imdb import ImdbPort
from src import configuration
from src.todoist import TodoistPort
from src.exceptions import MissingAttributeException
def add_task(args):
config = configuration.load_configuration()
config.check_if_complete()
project_name = None
if args.project:
project_name = args.project
elif config.default_project_name:
project_name = config.default_project_name
else:
raise MissingAttributeException(
"Project Name",
message="Project name must be passed as an argument or a default must be set.",
)
labels = None
if args.labels:
if args.labels == "-":
labels = None
else:
labels = args.labels
elif config.default_label_name:
if config.default_label_name == "-":
labels = None
else:
labels = config.default_label_name
imdb = ImdbPort(config.IMDB_API_KEY)
todoist = TodoistPort(config.TODOIST_API_KEY)
for media_name in args.media:
media = imdb.get_media(media_name)
todoist.make_task(media, labels=labels, project_name=project_name)
if labels:
print(
f"\nAdded {media.title} to project {project_name} with label(s): {' '.join(labels)}\n"
)
else:
print(
f"\nAdded {media.title} to project {project_name} without labels\n"
)
def configure(args):
configuration.configure(args)
def main():
parser = argparse.ArgumentParser(
description="Takes a movie/show from IMDB and assigns it as a Todoist task")
subparsers = parser.add_subparsers()
# Add task parser
add_task_parser = subparsers.add_parser("add")
add_task_parser.add_argument(
"-m",
"--media",
help="media title / id / url",
type=str,
required=True,
nargs="*",
)
add_task_parser.add_argument("-p",
"--project",
help="override default project name",
type=str)
add_task_parser.add_argument("-l",
"--labels",
help="override default label with given labels",
type=str,
nargs="*")
add_task_parser.set_defaults(func=add_task)
# Config parser
config_parser = subparsers.add_parser("config")
config_parser.add_argument("-i", "--imdb", help="Assign IMDB Api Key", type=str)
config_parser.add_argument("-t", "--todoist", help="Assign Todoist Api Key", type=str)
config_parser.add_argument("-p",
"--project",
help="Assign default project name",
type=str)
config_parser.add_argument("-l",
"--label",
help="Assign default label name",
type=str)
config_parser.set_defaults(func=configure)
args = parser.parse_args()
args.func(args)
if __name__ == "__main__":
main()