forked from chriszero/tvspielfilm2xmltv
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtvspielfilm2xmltv.py
executable file
·150 lines (112 loc) · 4.42 KB
/
tvspielfilm2xmltv.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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#!/usr/bin/python
# encoding: utf-8
'''
setup -- shortdesc
setup is a description
It defines classes_and_methods
@author: chris
@copyright: 2013 organization_name. All rights reserved.
@license: license
@contact: user_email
@deffield updated: Updated
'''
import sys
import os
import traceback
# Root path
base_path = os.path.realpath(__file__)
# Insert local directories into path
sys.path.append(os.path.join(base_path))
from argparse import ArgumentParser
from argparse import RawDescriptionHelpFormatter
from tvsp2xmltv import logger
from tvsp2xmltv import defaults
from tvsp2xmltv import tvsGrabber
__all__ = []
__version__ = 0.8
__date__ = '2014-10-19'
__updated__ = '2014-10-19'
DEBUG = 0
class CLIError(Exception):
'''Generic exception to raise and log different fatal errors.'''
def __init__(self, msg):
super(CLIError).__init__(type(self))
self.msg = "E: %s" % msg
def __str__(self):
return self.msg
def __unicode__(self):
return self.msg
def main(argv=None): # IGNORE:C0111
'''Command line options.'''
if argv is None:
argv = sys.argv
else:
sys.argv.extend(argv)
program_name = os.path.basename(sys.argv[0])
program_version = "v%s" % __version__
program_build_date = str(__updated__)
program_version_message = '%%(prog)s %s (%s)' % (program_version, program_build_date)
program_shortdesc = __import__('__main__').__doc__.split("\n")[1]
program_license = '''%s
Created by chris on %s.
Copyright 2013 organization_name. All rights reserved.
Licensed under the Apache License 2.0
http://www.apache.org/licenses/LICENSE-2.0
Distributed on an "AS IS" basis without warranties
or conditions of any kind, either express or implied.
USAGE
''' % (program_shortdesc, str(__date__))
try:
# Setup argument parser
parser = ArgumentParser(description=program_license, formatter_class=RawDescriptionHelpFormatter)
parser.add_argument("-c", "--controlfile", dest="cfile", action='store_true', help="create the controlfile")
parser.add_argument("-t", "--time", dest="time", default="00:00", help="The time for the control file")
parser.add_argument("-d", "--days", dest="days", default="14", help="numberof days for the control file")
parser.add_argument('-V', '--version', action='version', version=program_version_message)
parser.add_argument(dest="option", help="options from xmltv2vdr call [default: %(default)s]", metavar="option",
nargs='*')
parser.add_argument('-l', '--checkchannels', action='store_true', help='Go to http://www.vdr-wiki.de/wiki/index.php/Xmltv2vdr-plugin and safe the "Verbindliche EPG-Senderliste" to an text file called "channelids.txt"')
parser.add_argument('-m', '--checkchannelmap', action='store_true', help='Show the diff between channel map and server.')
# Process arguments
args = parser.parse_args()
argvline = ""
for a in sys.argv:
argvline += a
argvline += " "
logger.log('Called with following arguments: "' + argvline + '"', logger.DEBUG)
option = args.option
cfile = args.cfile
if args.checkchannels:
defaults.checkchannelids()
if args.checkchannelmap:
defaults.checkchannelmap()
if cfile:
defaults.write_controlfile(args.time, args.days)
if option:
logger.log('Prepare grabbing...')
grabber = tvsGrabber.TvsGrabber()
#<days> ‘‘ [<pictures>] ard.de zdf.de
grabber.grab_days = int(option.pop(0))
option.pop(0) # We do not use an PIN
if option[0] == '1':
grabber.pictures = True
option.pop(0)
elif option[0] == '0':
grabber.pictures = False
option.pop(0)
grabber.add_channel(option)
logger.log('Start grabbing...')
grabber.start_grab()
logger.log('Saving xml...')
grabber.save()
logger.log('End of grabbing...')
return 0
except Exception as e:
logger.log("{0}:\n{1}\n{2}".format(program_name, repr(e), traceback.format_exc()), logger.ERROR)
return 2
if __name__ == "__main__":
if DEBUG:
#sys.argv.append("-m")
#sys.argv.append("1 '' 0 ard.de zdf.de")
pass
sys.exit(main())