forked from simokivimaki/viihdepython
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmove_simpsonit.py
executable file
·86 lines (71 loc) · 3.25 KB
/
move_simpsonit.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
#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function, unicode_literals
import cli
import elisaviihde
import simpsonitorgparser
from datetime import datetime
from user_input import get_input
def main():
parser = cli.init_argparser()
parser.add_argument('-f', '--folder_name', help='Elisa Viihde Simpsonit folder name')
parser.add_argument('-s', '--season_prefix', help='prefix for season folder name')
params = parser.parse_args()
username = cli.read_input(params.user, 'Elisa Viihde Username')
password = cli.read_password(params.passfile, 'Elisa Viihde Password')
e = elisaviihde.Elisaviihde()
if not e.login(username, password):
return
folder_name = cli.read_input(params.folder_name,
'Elisa Viihde Simpsonit folder name [Simpsonit]',
u'Simpsonit')
season_folder_name = cli.read_input(params.season_prefix,
'prefix for season folder name or "None" [Season ]',
u'Season ')
if season_folder_name == 'None':
season_folder_name = u''
simpsonit_folder = e.find_folder_by_name(folder_name)
if simpsonit_folder is None:
print('Folder', folder_name, 'not found')
return
episodes = simpsonitorgparser.parse_schedule()
simpsonit_folder_id = simpsonit_folder['id']
root_simponit_recordings = e.recordings(simpsonit_folder_id)
to_be_moved = [] # list of (recording, episode) pairs
for recording in root_simponit_recordings:
episode = find_episode(episodes, recording)
if episode:
to_be_moved.append((recording, episode))
print('Found', len(to_be_moved), 'episodes to be moved')
answer = get_input("Enter 'y' to continue, anything else to cancel: ")
if answer == 'y':
for move in to_be_moved:
recording = move[0]
episode = move[1]
target_folder = e.find_or_create_subfolder(season_folder_name + str(episode['season']),
simpsonit_folder_id)
try:
status = e.move(recording['programId'], target_folder['id'])
except TypeError:
print("Failed to move", recording['programId'])
continue
print('MOVED:', status, recording['startTime'], episode['name'], 'to', target_folder['name'])
print("Moving done.")
else:
print("Moving canceled.")
def find_episode(episodes, recording):
result = []
recording_dt = datetime.strptime(recording['startTime'], "%d.%m.%Y %H.%M")
for episode in episodes:
if recording['name'].startswith('Simpsonit') and episode['datetime'] == recording_dt:
result.append(episode)
if len(result) > 1:
print('SKIPPED: found more than 1 episodes for', recording['startTime'], result)
elif len(result) == 1:
episode = result[0]
print('MATCH:', recording['startTime'], episode['datetime'], episode['name'], '->', 'Season', episode['season'])
return episode
else:
print('SKIPPED: found 0 episodes for', recording['startTime'])
if __name__ == '__main__':
main()