Browse Source

Izlabots USTVnow

Ivars 8 years ago
parent
commit
2d2b424345
6 changed files with 410 additions and 274 deletions
  1. 387
    267
      PlayStream.wpr
  2. 12
    2
      imake.bat
  3. 8
    2
      readme.md
  4. BIN
      release/enigma2-plugin-extensions-playstream_0.5k.ipk
  5. 1
    2
      sources/filmix.py
  6. 2
    1
      sources/ustvnow.py

+ 387
- 267
PlayStream.wpr View File

12
                         'watch_for_changes': True}]
12
                         'watch_for_changes': True}]
13
 proj.file-type = 'normal'
13
 proj.file-type = 'normal'
14
 proj.launch-config = {loc('ContentSources.py'): ('project',
14
 proj.launch-config = {loc('ContentSources.py'): ('project',
15
-        (u'ltc::home',
15
+        (u'config::home',
16
          '')),
16
          '')),
17
                       loc('filmix_decode2.py'): ('project',
17
                       loc('filmix_decode2.py'): ('project',
18
         (u'XRHzQZe3yvH32Z5ly1b3XakY7RUw7LYl7L60yM2n2ZQLOZtlfZUT2mUW2jkw2xtv2W20fxEMOZcLfW50yM=Va02lynHeDSYPDWDwQWwgDLsL2ZEMyVnmizlgkzkCHEGSXabNmLlzOZA4205laSYIQZch',
18
         (u'XRHzQZe3yvH32Z5ly1b3XakY7RUw7LYl7L60yM2n2ZQLOZtlfZUT2mUW2jkw2xtv2W20fxEMOZcLfW50yM=Va02lynHeDSYPDWDwQWwgDLsL2ZEMyVnmizlgkzkCHEGSXabNmLlzOZA4205laSYIQZch',
128
               None,
128
               None,
129
               1,
129
               1,
130
               0),
130
               0),
131
-        284: (0,
131
+        283: (0,
132
               None,
132
               None,
133
               1,
133
               1,
134
               0)},
134
               0)},
136
         None,
136
         None,
137
         1,
137
         1,
138
         0)},
138
         0)},
139
-                     loc('sources/kinofilmnet.py'): {172: (0,
139
+                     loc('sources/kinofilmnet.py'): {151: (0,
140
         None,
140
         None,
141
         1,
141
         1,
142
-        0)},
142
+        0),
143
+        172: (0,
144
+              None,
145
+              1,
146
+              0)},
143
                      loc('sources/ltc.py'): {73: (0,
147
                      loc('sources/ltc.py'): {73: (0,
144
         None,
148
         None,
145
         1,
149
         1,
288
               None,
292
               None,
289
               1,
293
               1,
290
               0)},
294
               0)},
291
-                     loc('sources/ustvnow.py'): {58: (0,
295
+                     loc('sources/ustvnow.py'): {59: (0,
292
         None,
296
         None,
293
         1,
297
         1,
294
         0)},
298
         0)},
339
                      loc('util.py'): {51: (0,
343
                      loc('util.py'): {51: (0,
340
         None,
344
         None,
341
         1,
345
         1,
346
+        0),
347
+                                      85: (0,
348
+        None,
349
+        1,
342
         0)},
350
         0)},
343
                      loc('viaplay/vialib.py'): {84: (0,
351
                      loc('viaplay/vialib.py'): {84: (0,
344
         None,
352
         None,
4949
                                     0)},
4957
                                     0)},
4950
                     loc('test_sources.py'): {},
4958
                     loc('test_sources.py'): {},
4951
                     loc('viaplay/vialib.py'): {}}
4959
                     loc('viaplay/vialib.py'): {}}
4952
-debug.recent-run-args = {loc('ContentSources.py'): [u'ltc::home',
4960
+debug.recent-run-args = {loc('ContentSources.py'): [u'config::home',
4961
+        u'filmix::home',
4962
+        u'ltc::home',
4953
         u'ltc::videonoma/raidijumi/littlest_pet_shop_s1e26?series',
4963
         u'ltc::videonoma/raidijumi/littlest_pet_shop_s1e26?series',
4954
-        u'config::home',
4955
         u'viaplay::home',
4964
         u'viaplay::home',
4956
         u'kinofilmnet::home',
4965
         u'kinofilmnet::home',
4957
         u'viaplay::kids',
4966
         u'viaplay::kids',
4962
         u'filmix::series',
4971
         u'filmix::series',
4963
         u'filmix::films',
4972
         u'filmix::films',
4964
         u'filmix::play/109175',
4973
         u'filmix::play/109175',
4965
-        u'filmix::home',
4966
         u'replay::home',
4974
         u'replay::home',
4967
         u'tvdom::home',
4975
         u'tvdom::home',
4968
         u'replay::search/?term=rondo\n',
4976
         u'replay::search/?term=rondo\n',
5056
         'type': 'dock',
5064
         'type': 'dock',
5057
         'view': {'area': 'tall',
5065
         'view': {'area': 'tall',
5058
                  'constraint': None,
5066
                  'constraint': None,
5059
-                 'current_pages': [1,
5067
+                 'current_pages': [0,
5060
                                    0],
5068
                                    0],
5061
                  'full-screen': False,
5069
                  'full-screen': False,
5062
                  'notebook_display': 'normal',
5070
                  'notebook_display': 'normal',
5063
-                 'notebook_percent': 0.18907736863880842,
5071
+                 'notebook_percent': 0.23133716160787532,
5064
                  'override_title': None,
5072
                  'override_title': None,
5065
                  'pagelist': [('project',
5073
                  'pagelist': [('project',
5066
                                'tall',
5074
                                'tall',
5067
                                0,
5075
                                0,
5068
                                {'tree-state': {'file-sort-method': 'by name',
5076
                                {'tree-state': {'file-sort-method': 'by name',
5069
         'list-files-first': False,
5077
         'list-files-first': False,
5070
-        'tree-states': {'deep': {'expanded-nodes': [(9,),
5071
-        (17,),
5072
-        (75,),
5073
-        (110,)],
5074
-                                 'selected-nodes': [(27,)],
5075
-                                 'top-node': (0,)}},
5078
+        'tree-states': {'deep': {'expanded-nodes': [(17,),
5079
+        (74,),
5080
+        (108,)],
5081
+                                 'selected-nodes': [(17,
5082
+        8)],
5083
+                                 'top-node': (17,
5084
+        1)}},
5076
         'tree-style': 'deep'}}),
5085
         'tree-style': 'deep'}}),
5077
                               ('snippets',
5086
                               ('snippets',
5078
                                'tall',
5087
                                'tall',
5108
                                {'tree-state': []})],
5117
                                {'tree-state': []})],
5109
                  'primary_view_state': {'area': 'wide',
5118
                  'primary_view_state': {'area': 'wide',
5110
         'constraint': None,
5119
         'constraint': None,
5111
-        'current_pages': [7,
5120
+        'current_pages': [1,
5112
                           1],
5121
                           1],
5113
         'notebook_display': 'normal',
5122
         'notebook_display': 'normal',
5114
         'notebook_percent': 0.40625,
5123
         'notebook_percent': 0.40625,
5159
                                        'fRegexFlags': 46,
5168
                                        'fRegexFlags': 46,
5160
                                        'fReplaceText': u'self.',
5169
                                        'fReplaceText': u'self.',
5161
                                        'fReverse': False,
5170
                                        'fReverse': False,
5162
-                                       'fSearchText': u'timer',
5171
+                                       'fSearchText': u'gst-',
5163
                                        'fStartPos': 0,
5172
                                        'fStartPos': 0,
5164
                                        'fStyle': 'text',
5173
                                        'fStyle': 'text',
5165
                                        'fWholeWords': False,
5174
                                        'fWholeWords': False,
5216
         -1,
5225
         -1,
5217
         -1),
5226
         -1),
5218
                        'attrib-starts': [],
5227
                        'attrib-starts': [],
5219
-                       'first-line': 82,
5228
+                       'first-line': 1215,
5220
                        'folded-linenos': [],
5229
                        'folded-linenos': [],
5221
                        'history': {u'file:C:/Data/Programming/enigma2/PlayStream2/ContentSources.py': ['u'\
5230
                        'history': {u'file:C:/Data/Programming/enigma2/PlayStream2/ContentSources.py': ['u'\
5222
         'rl\n',
5231
         'rl\n',
5223
-        'print url\n',
5224
-        'self\n',
5225
-        'self.api_url\n',
5226
-        'dir(self)\n',
5227
-        '"api_url" in dir(self)\n']},
5232
+        'print r\n',
5233
+        'print url\n']},
5228
                        'launch-id': None,
5234
                        'launch-id': None,
5229
-                       'sel-line': 93,
5230
-                       'sel-line-start': 1439,
5231
-                       'selection_end': 1439,
5232
-                       'selection_start': 1439}),
5235
+                       'sel-line': 1225,
5236
+                       'sel-line-start': 82159,
5237
+                       'selection_end': 82269,
5238
+                       'selection_start': 82159}),
5233
                      ('debug-watch',
5239
                      ('debug-watch',
5234
                       'wide',
5240
                       'wide',
5235
                       1,
5241
                       1,
5245
         u'tracks'),
5251
         u'tracks'),
5246
                                        ('eval',
5252
                                        ('eval',
5247
         u't')],
5253
         u't')],
5248
-                       'tree-state': {'expanded-nodes': [],
5254
+                       'tree-state': {'expanded-nodes': [(3,),
5255
+        (3,
5256
+         0)],
5249
                                       'selected-nodes': [(0,)],
5257
                                       'selected-nodes': [(0,)],
5250
                                       'top-node': (0,)}}),
5258
                                       'top-node': (0,)}}),
5251
                      ('debug-modules',
5259
                      ('debug-modules',
5281
                       {})],
5289
                       {})],
5282
         'primary_view_state': {'editor_states': ('vertical',
5290
         'primary_view_state': {'editor_states': ('vertical',
5283
         1.0,
5291
         1.0,
5284
-        ({'bookmarks': ([[loc('PlayStream.py'),
5285
-                          {'attrib-starts': [('PSPlayer',
5286
-        91),
5287
-        ('PSPlayer.service_info',
5288
-         225)],
5289
-                           'first-line': 215,
5290
-                           'folded-linenos': [],
5291
-                           'sel-line': 232,
5292
-                           'sel-line-start': 9024,
5293
-                           'selection_end': 9077,
5294
-                           'selection_start': 9072},
5295
-                          1480756796.863],
5296
-                         [loc('PlayStream.py'),
5297
-                          {'attrib-starts': [('MainScreen',
5298
-        318)],
5299
-                           'first-line': 311,
5292
+        ({'bookmarks': ([[loc('util.py'),
5293
+                          {'attrib-starts': [('play_video',
5294
+        49)],
5295
+                           'first-line': 0,
5300
                            'folded-linenos': [],
5296
                            'folded-linenos': [],
5301
-                           'sel-line': 328,
5302
-                           'sel-line-start': 12826,
5303
-                           'selection_end': 12897,
5304
-                           'selection_start': 12892},
5305
-                          1480756797.782],
5306
-                         [loc('PlayStream.py'),
5307
-                          {'attrib-starts': [('MainScreen',
5308
-        318),
5309
-        ('MainScreen.Ok',
5310
-         491)],
5311
-                           'first-line': 526,
5297
+                           'sel-line': 70,
5298
+                           'sel-line-start': 1928,
5299
+                           'selection_end': 1928,
5300
+                           'selection_start': 1928},
5301
+                          1481149538.99],
5302
+                         [loc('util.py'),
5303
+                          {'attrib-starts': [('play_video',
5304
+        49)],
5305
+                           'first-line': 66,
5312
                            'folded-linenos': [],
5306
                            'folded-linenos': [],
5313
-                           'sel-line': 532,
5314
-                           'sel-line-start': 22660,
5315
-                           'selection_end': 22728,
5316
-                           'selection_start': 22728},
5317
-                          1480756800.912],
5318
-                         [loc('PlayStream.py'),
5319
-                          {'attrib-starts': [('MainScreen',
5320
-        318),
5321
-        ('MainScreen.Ok',
5322
-         491)],
5323
-                           'first-line': 526,
5307
+                           'sel-line': 83,
5308
+                           'sel-line-start': 2447,
5309
+                           'selection_end': 2486,
5310
+                           'selection_start': 2485},
5311
+                          1481149540.094],
5312
+                         [loc('util.py'),
5313
+                          {'attrib-starts': [('player',
5314
+        86)],
5315
+                           'first-line': 76,
5324
                            'folded-linenos': [],
5316
                            'folded-linenos': [],
5325
-                           'sel-line': 534,
5326
-                           'sel-line-start': 22746,
5327
-                           'selection_end': 22766,
5328
-                           'selection_start': 22765},
5329
-                          1480756802.509],
5330
-                         [loc('PlayStream.py'),
5331
-                          {'attrib-starts': [],
5332
-                           'first-line': 9,
5317
+                           'sel-line': 97,
5318
+                           'sel-line-start': 3194,
5319
+                           'selection_end': 3215,
5320
+                           'selection_start': 3204},
5321
+                          1481371034.176],
5322
+                         [loc('ContentSources.py'),
5323
+                          {'attrib-starts': [('ContentSources',
5324
+        15),
5325
+        ('ContentSources.get_streams',
5326
+         74)],
5327
+                           'first-line': 87,
5333
                            'folded-linenos': [],
5328
                            'folded-linenos': [],
5334
-                           'sel-line': 14,
5335
-                           'sel-line-start': 466,
5336
-                           'selection_end': 513,
5337
-                           'selection_start': 513},
5338
-                          1480756808.806],
5339
-                         [loc('PlayStream.py'),
5340
-                          {'attrib-starts': [],
5341
-                           'first-line': 9,
5329
+                           'sel-line': 94,
5330
+                           'sel-line-start': 3796,
5331
+                           'selection_end': 3829,
5332
+                           'selection_start': 3829},
5333
+                          1481371054.748],
5334
+                         [loc('sources/replay.py'),
5335
+                          {'attrib-starts': [('Source',
5336
+        25),
5337
+        ('Source.get_content',
5338
+         36)],
5339
+                           'first-line': 233,
5342
                            'folded-linenos': [],
5340
                            'folded-linenos': [],
5343
-                           'sel-line': 14,
5344
-                           'sel-line-start': 466,
5345
-                           'selection_end': 520,
5346
-                           'selection_start': 514},
5347
-                          1480756809.501],
5348
-                         [loc('PlayStream.py'),
5349
-                          {'attrib-starts': [('PSPlayer',
5350
-        91),
5351
-        ('PSPlayer.__init__',
5352
-         92)],
5353
-                           'first-line': 104,
5341
+                           'sel-line': 245,
5342
+                           'sel-line-start': 13416,
5343
+                           'selection_end': 13416,
5344
+                           'selection_start': 13416},
5345
+                          1481371071.983],
5346
+                         [loc('sources/SourceBase.py'),
5347
+                          {'attrib-starts': [('SourceBase',
5348
+        18),
5349
+        ('SourceBase.get_streams',
5350
+         47)],
5351
+                           'first-line': 42,
5354
                            'folded-linenos': [],
5352
                            'folded-linenos': [],
5355
-                           'sel-line': 121,
5356
-                           'sel-line-start': 4996,
5357
-                           'selection_end': 5024,
5358
-                           'selection_start': 5018},
5359
-                          1480758158.263],
5360
-                         [loc('sniplets.py'),
5361
-                          {'attrib-starts': [],
5362
-                           'first-line': 0,
5353
+                           'sel-line': 59,
5354
+                           'sel-line-start': 2232,
5355
+                           'selection_end': 2232,
5356
+                           'selection_start': 2232},
5357
+                          1481371086.367],
5358
+                         [loc('ContentSources.py'),
5359
+                          {'attrib-starts': [('ContentSources',
5360
+        15),
5361
+        ('ContentSources.get_streams',
5362
+         74)],
5363
+                           'first-line': 87,
5363
                            'folded-linenos': [],
5364
                            'folded-linenos': [],
5364
-                           'sel-line': 0,
5365
-                           'sel-line-start': 0,
5366
-                           'selection_end': 0,
5367
-                           'selection_start': 0},
5368
-                          1480758171.285],
5369
-                         [loc('sniplets.py'),
5370
-                          {'attrib-starts': [],
5371
-                           'first-line': 0,
5365
+                           'sel-line': 94,
5366
+                           'sel-line-start': 3796,
5367
+                           'selection_end': 3796,
5368
+                           'selection_start': 3796},
5369
+                          1481371095.354],
5370
+                         [loc('util.py'),
5371
+                          {'attrib-starts': [('play_video',
5372
+        49)],
5373
+                           'first-line': 67,
5372
                            'folded-linenos': [],
5374
                            'folded-linenos': [],
5373
-                           'sel-line': 4,
5374
-                           'sel-line-start': 124,
5375
-                           'selection_end': 143,
5376
-                           'selection_start': 135},
5377
-                          1480758572.581],
5375
+                           'sel-line': 84,
5376
+                           'sel-line-start': 2507,
5377
+                           'selection_end': 2507,
5378
+                           'selection_start': 2507},
5379
+                          1481414443.715],
5378
                          [loc('ContentSources.py'),
5380
                          [loc('ContentSources.py'),
5379
-                          {'attrib-starts': [],
5380
-                           'first-line': 173,
5381
+                          {'attrib-starts': [('ContentSources',
5382
+        15),
5383
+        ('ContentSources.get_streams',
5384
+         74)],
5385
+                           'first-line': 87,
5381
                            'folded-linenos': [],
5386
                            'folded-linenos': [],
5382
-                           'sel-line': 192,
5383
-                           'sel-line-start': 6829,
5384
-                           'selection_end': 6829,
5385
-                           'selection_start': 6829},
5386
-                          1480758581.095],
5387
-                         [loc('sources/ltc.py'),
5387
+                           'sel-line': 94,
5388
+                           'sel-line-start': 3796,
5389
+                           'selection_end': 3796,
5390
+                           'selection_start': 3796},
5391
+                          1481414529.33],
5392
+                         [loc('sources/kinofilmnet.py'),
5388
                           {'attrib-starts': [('Source',
5393
                           {'attrib-starts': [('Source',
5389
-        24),
5390
-        ('Source.get_content',
5391
-         71)],
5392
-                           'first-line': 67,
5394
+        23),
5395
+        ('Source.get_streams',
5396
+         149)],
5397
+                           'first-line': 154,
5393
                            'folded-linenos': [],
5398
                            'folded-linenos': [],
5394
-                           'sel-line': 72,
5395
-                           'sel-line-start': 2705,
5396
-                           'selection_end': 2705,
5397
-                           'selection_start': 2705},
5398
-                          1480758647.62],
5399
-                         [loc('PlayStream.py'),
5400
-                          {'attrib-starts': [('PSPlayer',
5401
-        91),
5402
-        ('PSPlayer.__init__',
5403
-         92)],
5404
-                           'first-line': 109,
5399
+                           'sel-line': 166,
5400
+                           'sel-line-start': 7521,
5401
+                           'selection_end': 7521,
5402
+                           'selection_start': 7521},
5403
+                          1481415143.712],
5404
+                         [loc('ContentSources.py'),
5405
+                          {'attrib-starts': [('ContentSources',
5406
+        15),
5407
+        ('ContentSources.get_streams',
5408
+         74)],
5409
+                           'first-line': 87,
5405
                            'folded-linenos': [],
5410
                            'folded-linenos': [],
5406
-                           'sel-line': 124,
5407
-                           'sel-line-start': 5133,
5408
-                           'selection_end': 5147,
5409
-                           'selection_start': 5147},
5410
-                          1480758789.926],
5411
-                         [loc('sniplets.py'),
5412
-                          {'attrib-starts': [],
5413
-                           'first-line': 0,
5411
+                           'sel-line': 94,
5412
+                           'sel-line-start': 3796,
5413
+                           'selection_end': 3796,
5414
+                           'selection_start': 3796},
5415
+                          1481415159.443],
5416
+                         [loc('sources/ustvnow.py'),
5417
+                          {'attrib-starts': [('Source',
5418
+        28),
5419
+        ('Source.login',
5420
+         44)],
5421
+                           'first-line': 55,
5414
                            'folded-linenos': [],
5422
                            'folded-linenos': [],
5415
-                           'sel-line': 1,
5416
-                           'sel-line-start': 28,
5417
-                           'selection_end': 74,
5418
-                           'selection_start': 67},
5419
-                          1480758809.125],
5420
-                         [loc('PlayStream.py'),
5421
-                          {'attrib-starts': [('PSPlayer',
5422
-        91),
5423
-        ('PSPlayer.__init__',
5424
-         92)],
5425
-                           'first-line': 109,
5423
+                           'sel-line': 57,
5424
+                           'sel-line-start': 2180,
5425
+                           'selection_end': 2223,
5426
+                           'selection_start': 2223},
5427
+                          1481416133.375],
5428
+                         [loc('ContentSources.py'),
5429
+                          {'attrib-starts': [('ContentSources',
5430
+        15),
5431
+        ('ContentSources.get_streams',
5432
+         74)],
5433
+                           'first-line': 87,
5426
                            'folded-linenos': [],
5434
                            'folded-linenos': [],
5427
-                           'sel-line': 125,
5428
-                           'sel-line-start': 5157,
5429
-                           'selection_end': 5219,
5430
-                           'selection_start': 5219},
5431
-                          1480758825.135],
5432
-                         [loc('sniplets.py'),
5433
-                          {'attrib-starts': [],
5434
-                           'first-line': 0,
5435
+                           'sel-line': 94,
5436
+                           'sel-line-start': 3796,
5437
+                           'selection_end': 3796,
5438
+                           'selection_start': 3796},
5439
+                          1481416147.512],
5440
+                         [loc('sources/ustvnow.py'),
5441
+                          {'attrib-starts': [('Source',
5442
+        28),
5443
+        ('Source.login',
5444
+         44)],
5445
+                           'first-line': 47,
5435
                            'folded-linenos': [],
5446
                            'folded-linenos': [],
5436
-                           'sel-line': 1,
5437
-                           'sel-line-start': 28,
5438
-                           'selection_end': 82,
5439
-                           'selection_start': 51},
5440
-                          1480758835.647],
5441
-                         [loc('PlayStream.py'),
5442
-                          {'attrib-starts': [('PSPlayer',
5443
-        91),
5444
-        ('PSPlayer.__init__',
5445
-         92)],
5446
-                           'first-line': 131,
5447
+                           'sel-line': 63,
5448
+                           'sel-line-start': 2478,
5449
+                           'selection_end': 2478,
5450
+                           'selection_start': 2478},
5451
+                          1481416278.649],
5452
+                         [loc('ContentSources.py'),
5453
+                          {'attrib-starts': [('ContentSources',
5454
+        15),
5455
+        ('ContentSources.get_streams',
5456
+         74)],
5457
+                           'first-line': 87,
5458
+                           'folded-linenos': [],
5459
+                           'sel-line': 94,
5460
+                           'sel-line-start': 3796,
5461
+                           'selection_end': 3796,
5462
+                           'selection_start': 3796},
5463
+                          1481416290.17],
5464
+                         [loc('sources/ustvnow.py'),
5465
+                          {'attrib-starts': [('Source',
5466
+        28),
5467
+        ('Source.login',
5468
+         44)],
5469
+                           'first-line': 41,
5447
                            'folded-linenos': [],
5470
                            'folded-linenos': [],
5448
-                           'sel-line': 138,
5449
-                           'sel-line-start': 5629,
5450
-                           'selection_end': 5663,
5451
-                           'selection_start': 5663},
5452
-                          1480759343.704],
5453
-                         [loc('PlayStream.py'),
5454
-                          {'attrib-starts': [('MainScreen',
5455
-        324)],
5456
-                           'first-line': 327,
5471
+                           'sel-line': 53,
5472
+                           'sel-line-start': 2010,
5473
+                           'selection_end': 2040,
5474
+                           'selection_start': 2040},
5475
+                          1481416344.922],
5476
+                         [loc('ContentSources.py'),
5477
+                          {'attrib-starts': [('ContentSources',
5478
+        15),
5479
+        ('ContentSources.get_streams',
5480
+         74)],
5481
+                           'first-line': 87,
5457
                            'folded-linenos': [],
5482
                            'folded-linenos': [],
5458
-                           'sel-line': 331,
5459
-                           'sel-line-start': 12889,
5460
-                           'selection_end': 12909,
5461
-                           'selection_start': 12909},
5462
-                          1480761919.893],
5463
-                         [loc('PlayStream.py'),
5464
-                          {'attrib-starts': [('MainScreen',
5465
-        324)],
5466
-                           'first-line': 320,
5483
+                           'sel-line': 94,
5484
+                           'sel-line-start': 3796,
5485
+                           'selection_end': 3796,
5486
+                           'selection_start': 3796},
5487
+                          1481416358.672],
5488
+                         [loc('sources/ustvnow.py'),
5489
+                          {'attrib-starts': [('Source',
5490
+        28),
5491
+        ('Source.login',
5492
+         44)],
5493
+                           'first-line': 48,
5467
                            'folded-linenos': [],
5494
                            'folded-linenos': [],
5468
-                           'sel-line': 331,
5469
-                           'sel-line-start': 12889,
5470
-                           'selection_end': 12911,
5471
-                           'selection_start': 12910},
5472
-                          1480761920.764],
5473
-                         [loc('PlayStream.py'),
5474
-                          {'attrib-starts': [('MainScreen',
5475
-        324)],
5476
-                           'first-line': 320,
5495
+                           'sel-line': 56,
5496
+                           'sel-line-start': 2058,
5497
+                           'selection_end': 2066,
5498
+                           'selection_start': 2066},
5499
+                          1481416411.631],
5500
+                         [loc('ContentSources.py'),
5501
+                          {'attrib-starts': [('ContentSources',
5502
+        15),
5503
+        ('ContentSources.get_streams',
5504
+         74)],
5505
+                           'first-line': 87,
5477
                            'folded-linenos': [],
5506
                            'folded-linenos': [],
5478
-                           'sel-line': 331,
5479
-                           'sel-line-start': 12889,
5480
-                           'selection_end': 12930,
5481
-                           'selection_start': 12928},
5482
-                          1480761921.605],
5483
-                         [loc('PlayStream.py'),
5484
-                          {'attrib-starts': [],
5485
-                           'first-line': 9,
5507
+                           'sel-line': 94,
5508
+                           'sel-line-start': 3796,
5509
+                           'selection_end': 3796,
5510
+                           'selection_start': 3796},
5511
+                          1481416424.704],
5512
+                         [loc('sources/ustvnow.py'),
5513
+                          {'attrib-starts': [('Source',
5514
+        28),
5515
+        ('Source.login',
5516
+         44)],
5517
+                           'first-line': 48,
5486
                            'folded-linenos': [],
5518
                            'folded-linenos': [],
5487
-                           'sel-line': 14,
5488
-                           'sel-line-start': 466,
5489
-                           'selection_end': 520,
5490
-                           'selection_start': 515},
5491
-                          1480761922.368]],
5519
+                           'sel-line': 59,
5520
+                           'sel-line-start': 2351,
5521
+                           'selection_end': 2351,
5522
+                           'selection_start': 2351},
5523
+                          1481416464.308]],
5492
                         20),
5524
                         20),
5493
-          'current-loc': loc('PlayStream.py'),
5525
+          'current-loc': loc('ContentSources.py'),
5494
           'editor-state-list': [(loc('plugin.py'),
5526
           'editor-state-list': [(loc('plugin.py'),
5495
                                  {'attrib-starts': [('main',
5527
                                  {'attrib-starts': [('main',
5496
         4)],
5528
         4)],
5505
         91),
5537
         91),
5506
         ('PSPlayer.__init__',
5538
         ('PSPlayer.__init__',
5507
          92)],
5539
          92)],
5508
-                                  'first-line': 104,
5540
+                                  'first-line': 94,
5509
                                   'folded-linenos': [],
5541
                                   'folded-linenos': [],
5510
-                                  'sel-line': 125,
5511
-                                  'sel-line-start': 5157,
5512
-                                  'selection_end': 5188,
5513
-                                  'selection_start': 5188}),
5542
+                                  'sel-line': 100,
5543
+                                  'sel-line-start': 4102,
5544
+                                  'selection_end': 4110,
5545
+                                  'selection_start': 4110}),
5514
                                 (loc('util.py'),
5546
                                 (loc('util.py'),
5515
                                  {'attrib-starts': [('play_video',
5547
                                  {'attrib-starts': [('play_video',
5516
         49)],
5548
         49)],
5517
-                                  'first-line': 45,
5549
+                                  'first-line': 67,
5518
                                   'folded-linenos': [],
5550
                                   'folded-linenos': [],
5519
-                                  'sel-line': 50,
5520
-                                  'sel-line-start': 1408,
5521
-                                  'selection_end': 1408,
5522
-                                  'selection_start': 1408}),
5551
+                                  'sel-line': 84,
5552
+                                  'sel-line-start': 2507,
5553
+                                  'selection_end': 2507,
5554
+                                  'selection_start': 2507}),
5523
                                 (loc('ContentSources.py'),
5555
                                 (loc('ContentSources.py'),
5524
-                                 {'attrib-starts': [],
5525
-                                  'first-line': 173,
5556
+                                 {'attrib-starts': [('ContentSources',
5557
+        15),
5558
+        ('ContentSources.get_streams',
5559
+         74)],
5560
+                                  'first-line': 87,
5526
                                   'folded-linenos': [],
5561
                                   'folded-linenos': [],
5527
-                                  'sel-line': 192,
5528
-                                  'sel-line-start': 6829,
5529
-                                  'selection_end': 6829,
5530
-                                  'selection_start': 6829}),
5562
+                                  'sel-line': 94,
5563
+                                  'sel-line-start': 3796,
5564
+                                  'selection_end': 3796,
5565
+                                  'selection_start': 3796}),
5531
                                 (loc('sources/viaplay.py'),
5566
                                 (loc('sources/viaplay.py'),
5532
                                  {'attrib-starts': [('Source',
5567
                                  {'attrib-starts': [('Source',
5533
         26),
5568
         26),
5566
         23),
5601
         23),
5567
         ('Source.get_streams',
5602
         ('Source.get_streams',
5568
          149)],
5603
          149)],
5569
-                                  'first-line': 162,
5604
+                                  'first-line': 154,
5570
                                   'folded-linenos': [],
5605
                                   'folded-linenos': [],
5571
-                                  'sel-line': 172,
5572
-                                  'sel-line-start': 7708,
5573
-                                  'selection_end': 7732,
5574
-                                  'selection_start': 7724}),
5606
+                                  'sel-line': 166,
5607
+                                  'sel-line-start': 7521,
5608
+                                  'selection_end': 7521,
5609
+                                  'selection_start': 7521}),
5575
                                 (loc('sources/ltc.py'),
5610
                                 (loc('sources/ltc.py'),
5576
                                  {'attrib-starts': [('Source',
5611
                                  {'attrib-starts': [('Source',
5577
         24),
5612
         24),
5621
                                   'sel-line': 1,
5656
                                   'sel-line': 1,
5622
                                   'sel-line-start': 28,
5657
                                   'sel-line-start': 28,
5623
                                   'selection_end': 82,
5658
                                   'selection_end': 82,
5624
-                                  'selection_start': 51})],
5625
-          'has-focus': False,
5659
+                                  'selection_start': 51}),
5660
+                                (loc('sources/filmix.py'),
5661
+                                 {'attrib-starts': [('Source',
5662
+        24),
5663
+        ('Source.get_content',
5664
+         49)],
5665
+                                  'first-line': 106,
5666
+                                  'folded-linenos': [],
5667
+                                  'sel-line': 117,
5668
+                                  'sel-line-start': 4649,
5669
+                                  'selection_end': 4649,
5670
+                                  'selection_start': 4649}),
5671
+                                (loc('sources/replay.py'),
5672
+                                 {'attrib-starts': [('Source',
5673
+        25),
5674
+        ('Source.get_content',
5675
+         36)],
5676
+                                  'first-line': 233,
5677
+                                  'folded-linenos': [],
5678
+                                  'sel-line': 245,
5679
+                                  'sel-line-start': 13416,
5680
+                                  'selection_end': 13416,
5681
+                                  'selection_start': 13416}),
5682
+                                (loc('sources/ustvnow.py'),
5683
+                                 {'attrib-starts': [('Source',
5684
+        28),
5685
+        ('Source.login',
5686
+         44)],
5687
+                                  'first-line': 48,
5688
+                                  'folded-linenos': [],
5689
+                                  'sel-line': 59,
5690
+                                  'sel-line-start': 2351,
5691
+                                  'selection_end': 2351,
5692
+                                  'selection_start': 2351})],
5693
+          'has-focus': True,
5626
           'locked': False},
5694
           'locked': False},
5627
          [loc('plugin.py'),
5695
          [loc('plugin.py'),
5628
           loc('PlayStream.py'),
5696
           loc('PlayStream.py'),
5636
           loc('resolvers/hdgo.py'),
5704
           loc('resolvers/hdgo.py'),
5637
           loc('ChoiceBox.py'),
5705
           loc('ChoiceBox.py'),
5638
           loc('../python/Components/GUISkin.py'),
5706
           loc('../python/Components/GUISkin.py'),
5639
-          loc('sniplets.py')]),
5707
+          loc('sniplets.py'),
5708
+          loc('sources/filmix.py'),
5709
+          loc('sources/replay.py'),
5710
+          loc('sources/ustvnow.py')]),
5640
         ({'bookmarks': ([[loc('sources/viaplay.py'),
5711
         ({'bookmarks': ([[loc('sources/viaplay.py'),
5641
                           {'attrib-starts': [('Source',
5712
                           {'attrib-starts': [('Source',
5642
         19),
5713
         19),
5878
                                   'selection_start': 2626}),
5949
                                   'selection_start': 2626}),
5879
                                 (loc('sources/euronews.py'),
5950
                                 (loc('sources/euronews.py'),
5880
                                  {}),
5951
                                  {}),
5952
+                                (loc('sources/filmix.py'),
5953
+                                 {'attrib-starts': [('Source',
5954
+        24),
5955
+        ('Source.get_content',
5956
+         49)],
5957
+                                  'first-line': 97,
5958
+                                  'folded-linenos': [],
5959
+                                  'sel-line': 102,
5960
+                                  'sel-line-start': 3784,
5961
+                                  'selection_end': 3784,
5962
+                                  'selection_start': 3784}),
5881
                                 (loc('resolvers/hdgo.py'),
5963
                                 (loc('resolvers/hdgo.py'),
5882
                                  {'attrib-starts': [],
5964
                                  {'attrib-starts': [],
5883
                                   'first-line': 74,
5965
                                   'first-line': 74,
5928
                                   'selection_start': 112}),
6010
                                   'selection_start': 112}),
5929
                                 (loc('sniplets.py'),
6011
                                 (loc('sniplets.py'),
5930
                                  {}),
6012
                                  {}),
6013
+                                (loc('sources/ustvnow.py'),
6014
+                                 {'attrib-starts': [('Source',
6015
+        28),
6016
+        ('Source.login',
6017
+         44)],
6018
+                                  'first-line': 18,
6019
+                                  'folded-linenos': [],
6020
+                                  'sel-line': 47,
6021
+                                  'sel-line-start': 1703,
6022
+                                  'selection_end': 1730,
6023
+                                  'selection_start': 1730}),
5931
                                 (loc('util.py'),
6024
                                 (loc('util.py'),
5932
                                  {'attrib-starts': [('player',
6025
                                  {'attrib-starts': [('player',
5933
         86)],
6026
         86)],
5949
                                   'selection_end': 5488,
6042
                                   'selection_end': 5488,
5950
                                   'selection_start': 5476}),
6043
                                   'selection_start': 5476}),
5951
                                 (loc('../python/Components/GUISkin.py'),
6044
                                 (loc('../python/Components/GUISkin.py'),
5952
-                                 {})],
6045
+                                 {'attrib-starts': [],
6046
+                                  'first-line': 0,
6047
+                                  'folded-linenos': [],
6048
+                                  'sel-line': 0,
6049
+                                  'sel-line-start': 0,
6050
+                                  'selection_end': 0,
6051
+                                  'selection_start': 0}),
6052
+                                (loc('sources/replay.py'),
6053
+                                 {'attrib-starts': [('Source',
6054
+        25),
6055
+        ('Source.get_content',
6056
+         36)],
6057
+                                  'first-line': 224,
6058
+                                  'folded-linenos': [],
6059
+                                  'sel-line': 234,
6060
+                                  'sel-line-start': 12780,
6061
+                                  'selection_end': 12780,
6062
+                                  'selection_start': 12780})],
5953
           'has-focus': False,
6063
           'has-focus': False,
5954
           'locked': False},
6064
           'locked': False},
5955
          [loc('ChoiceBox.py'),
6065
          [loc('ChoiceBox.py'),
5956
           loc('ContentSources.py'),
6066
           loc('ContentSources.py'),
5957
           loc('sources/euronews.py'),
6067
           loc('sources/euronews.py'),
6068
+          loc('sources/filmix.py'),
5958
           loc('resolvers/hdgo.py'),
6069
           loc('resolvers/hdgo.py'),
5959
           loc('sources/iplayer.py'),
6070
           loc('sources/iplayer.py'),
5960
           loc('sources/kinofilmnet.py'),
6071
           loc('sources/kinofilmnet.py'),
5962
           loc('PlayStream.py'),
6073
           loc('PlayStream.py'),
5963
           loc('plugin.py'),
6074
           loc('plugin.py'),
5964
           loc('sniplets.py'),
6075
           loc('sniplets.py'),
6076
+          loc('sources/ustvnow.py'),
5965
           loc('util.py'),
6077
           loc('util.py'),
5966
           loc('sources/viaplay.py'),
6078
           loc('sources/viaplay.py'),
5967
-          loc('../python/Components/GUISkin.py')])),
6079
+          loc('../python/Components/GUISkin.py'),
6080
+          loc('sources/replay.py')])),
5968
                                'open_files': [u'ChoiceBox.py',
6081
                                'open_files': [u'ChoiceBox.py',
6082
+        u'PlayStream.py',
5969
         u'plugin.py',
6083
         u'plugin.py',
5970
         u'resolvers/hdgo.py',
6084
         u'resolvers/hdgo.py',
6085
+        u'sniplets.py',
5971
         u'sources/euronews.py',
6086
         u'sources/euronews.py',
6087
+        u'sources/filmix.py',
5972
         u'sources/iplayer.py',
6088
         u'sources/iplayer.py',
5973
-        u'sources/kinofilmnet.py',
6089
+        u'sources/ltc.py',
5974
         u'sources/viaplay.py',
6090
         u'sources/viaplay.py',
5975
         u'../python/Components/GUISkin.py',
6091
         u'../python/Components/GUISkin.py',
6092
+        u'sources/replay.py',
5976
         u'util.py',
6093
         u'util.py',
5977
-        u'ContentSources.py',
5978
-        u'sources/ltc.py',
5979
-        u'sniplets.py',
5980
-        u'PlayStream.py']},
6094
+        u'sources/kinofilmnet.py',
6095
+        u'sources/ustvnow.py',
6096
+        u'ContentSources.py']},
5981
         'saved_notebook_display': None,
6097
         'saved_notebook_display': None,
5982
-        'split_percents': {0: 0.2603027754415475},
6098
+        'split_percents': {0: 0.33756345177664976},
5983
         'splits': 2,
6099
         'splits': 2,
5984
         'tab_location': 'top',
6100
         'tab_location': 'top',
5985
         'user_data': {}},
6101
         'user_data': {}},
5992
                          0,
6108
                          0,
5993
                          2405,
6109
                          2405,
5994
                          1376)}]}
6110
                          1376)}]}
5995
-guimgr.recent-documents = [loc('PlayStream.py'),
5996
-                           loc('sniplets.py'),
5997
-                           loc('sources/ltc.py'),
5998
-                           loc('ContentSources.py'),
6111
+guimgr.recent-documents = [loc('ContentSources.py'),
6112
+                           loc('sources/ustvnow.py'),
6113
+                           loc('sources/kinofilmnet.py'),
5999
                            loc('util.py'),
6114
                            loc('util.py'),
6115
+                           loc('sources/replay.py'),
6116
+                           loc('PlayStream.py'),
6117
+                           loc('../python/Components/GUISkin.py'),
6118
+                           loc('sources/filmix.py'),
6119
+                           loc('sources/ltc.py'),
6120
+                           loc('sniplets.py'),
6000
                            loc('ChoiceBox.py'),
6121
                            loc('ChoiceBox.py'),
6001
                            loc('resolvers/hdgo.py'),
6122
                            loc('resolvers/hdgo.py'),
6002
                            loc('sources/viaplay.py'),
6123
                            loc('sources/viaplay.py'),
6003
                            loc('sources/iplayer.py'),
6124
                            loc('sources/iplayer.py'),
6004
                            loc('plugin.py'),
6125
                            loc('plugin.py'),
6005
-                           loc('sources/euronews.py'),
6006
-                           loc('sources/kinofilmnet.py')]
6126
+                           loc('sources/euronews.py')]
6007
 guimgr.visual-state = {loc('../../Kodi/test2/plugin.video.aaa/addon.py'): {'a'\
6127
 guimgr.visual-state = {loc('../../Kodi/test2/plugin.video.aaa/addon.py'): {'a'\
6008
         'ttrib-starts': [],
6128
         'ttrib-starts': [],
6009
         'first-line': 0,
6129
         'first-line': 0,
6664
         'sel-line-start': 0,
6784
         'sel-line-start': 0,
6665
         'selection_end': 0,
6785
         'selection_end': 0,
6666
         'selection_start': 0},
6786
         'selection_start': 0},
6667
-                       loc('../../../../Python27/Lib/re.py'): {'attrib-start'\
6668
-        's': [('findall',
6669
-               172)],
6670
-        'first-line': 162,
6671
-        'folded-linenos': [],
6672
-        'sel-line': 180,
6673
-        'sel-line-start': 8708,
6674
-        'selection_end': 8708,
6675
-        'selection_start': 8708},
6676
                        loc('../../../../Python27/Lib/site-packages/requests/adapters.py'): {'a'\
6787
                        loc('../../../../Python27/Lib/site-packages/requests/adapters.py'): {'a'\
6677
         'ttrib-starts': [('HTTPAdapter',
6788
         'ttrib-starts': [('HTTPAdapter',
6678
                           77),
6789
                           77),
6713
         'sel-line-start': 2478,
6824
         'sel-line-start': 2478,
6714
         'selection_end': 2478,
6825
         'selection_end': 2478,
6715
         'selection_start': 2478},
6826
         'selection_start': 2478},
6827
+                       loc('../../../../Python27/lib/re.py'): {'attrib-start'\
6828
+        's': [('findall',
6829
+               172)],
6830
+        'first-line': 162,
6831
+        'folded-linenos': [],
6832
+        'sel-line': 180,
6833
+        'sel-line-start': 8708,
6834
+        'selection_end': 8708,
6835
+        'selection_start': 8708},
6716
                        loc('../../../../Python27/lib/site-packages/gi/__init__.py'): {'a'\
6836
                        loc('../../../../Python27/lib/site-packages/gi/__init__.py'): {'a'\
6717
         'ttrib-starts': [],
6837
         'ttrib-starts': [],
6718
         'first-line': 24,
6838
         'first-line': 24,
6756
                       u'c:\\Data\\Programming\\enigma2\\python;')}
6876
                       u'c:\\Data\\Programming\\enigma2\\python;')}
6757
 search.replace-history = [u'self',
6877
 search.replace-history = [u'self',
6758
                           u'current']
6878
                           u'current']
6759
-search.search-history = [u'timer',
6879
+search.search-history = [u'gst',
6880
+                         u'timer',
6760
                          u'etimer',
6881
                          u'etimer',
6761
                          u'text=',
6882
                          u'text=',
6762
                          u'OptionsScreen',
6883
                          u'OptionsScreen',
6774
                          u'ChoiceEntryComponent',
6895
                          u'ChoiceEntryComponent',
6775
                          u'list',
6896
                          u'list',
6776
                          u'content',
6897
                          u'content',
6777
-                         u'autoResize',
6778
-                         u'font']
6898
+                         u'autoResize']
6779
 testing.stored-results = (1,
6899
 testing.stored-results = (1,
6780
                           [],
6900
                           [],
6781
                           {})
6901
                           {})

+ 12
- 2
imake.bat View File

1
 @echo off
1
 @echo off
2
 :=== Parameters ===
2
 :=== Parameters ===
3
-set ver=0.5j
3
+
4
+if ()==(%1%) (
5
+    set ver=0.5k
6
+	rem echo Please provide version
7
+	rem pause
8
+	rem GOTO:EOF
9
+) else (
10
+    set ver=%1
11
+)
12
+
4
 set prog=PlayStream
13
 set prog=PlayStream
5
 set pack_name=enigma2-plugin-extensions-playstream
14
 set pack_name=enigma2-plugin-extensions-playstream
6
 set desc=Play online streams from various sources, mostly Latvian
15
 set desc=Play online streams from various sources, mostly Latvian
18
 if exist %ipk_dir% rm -r -f %ipk_dir% 
27
 if exist %ipk_dir% rm -r -f %ipk_dir% 
19
 mkdir %ipk_dir%
28
 mkdir %ipk_dir%
20
 for %%f in (
29
 for %%f in (
21
-readme.txt
30
+readme.md
31
+changelog.md
22
 __init__.py
32
 __init__.py
23
 plugin.py
33
 plugin.py
24
 plugin.png
34
 plugin.png

+ 8
- 2
readme.md View File

10
 - **lattelecom.tv(shortcut.lv)** media portal content
10
 - **lattelecom.tv(shortcut.lv)** media portal content
11
 - **play24.lv** media portal content
11
 - **play24.lv** media portal content
12
 - **viaplay.lv**
12
 - **viaplay.lv**
13
+- **cinemalive.tv**
14
+- **kinofilmnet.lv**
13
 - **dom.tv**
15
 - **dom.tv**
16
+- **BBC iPlayer**
17
+- **Euronews**
14
 - **filmon.tv** media portal content
18
 - **filmon.tv** media portal content
15
 - **ustvnow.tv**
19
 - **ustvnow.tv**
16
 - **serialguru.ru**
20
 - **serialguru.ru**
19
 ---
23
 ---
20
 Copyright (c) 2016 ivars777 (ivars777@gmail.com)  
24
 Copyright (c) 2016 ivars777 (ivars777@gmail.com)  
21
 Distributed under the GNU GPL v3. For full terms see http://www.gnu.org/licenses/gpl-3.0.en.html  
25
 Distributed under the GNU GPL v3. For full terms see http://www.gnu.org/licenses/gpl-3.0.en.html  
22
-Used fragments of code from enigma2-plugin-tv3play by Taapat (https://github.com/Taapat/enigma2-plugin-tv3play)  
23
-Contains files from enigma2-plugin-youtube by Taapat (https://github.com/Taapat/enigma2-plugin-youtube), originally from https://github.com/rg3/youtube-dl/blob/master/youtube_dl  
26
+Used fragments of code from 
27
+- enigma2-plugin-tv3play by Taapat (https://github.com/Taapat/enigma2-plugin-tv3play)
28
+- Kodi plugin script.module.stream.resolver (https://github.com/kodi-czsk/script.module.stream.resolver)  
29
+- enigma2-plugin-youtube by Taapat (https://github.com/Taapat/enigma2-plugin-youtube), originally from https://github.com/rg3/youtube-dl/blob/master/youtube_dl  
24
 
30
 
25
 
31
 
26
 
32
 

BIN
release/enigma2-plugin-extensions-playstream_0.5k.ipk View File


+ 1
- 2
sources/filmix.py View File

236
         result = self._http_request(url,params,headers=headers)
236
         result = self._http_request(url,params,headers=headers)
237
         return result
237
         return result
238
 
238
 
239
-
240
-        
239
+    
241
     def decode_uppod_text(self, text): 
240
     def decode_uppod_text(self, text): 
242
         Client_codec_a = ["l", "u", "T", "D", "Q", "H", "0", "3", "G", "1", "f", "M", "p", "U", "a", "I", "6", "k", "d", "s", "b", "W", "5", "e", "y", "="]
241
         Client_codec_a = ["l", "u", "T", "D", "Q", "H", "0", "3", "G", "1", "f", "M", "p", "U", "a", "I", "6", "k", "d", "s", "b", "W", "5", "e", "y", "="]
243
         Client_codec_b = ["w", "g", "i", "Z", "c", "R", "z", "v", "x", "n", "N", "2", "8", "J", "X", "t", "9", "V", "7", "4", "B", "m", "Y", "o", "L", "h"]    
242
         Client_codec_b = ["w", "g", "i", "Z", "c", "R", "z", "v", "x", "n", "N", "2", "8", "J", "X", "t", "9", "V", "7", "4", "B", "m", "Y", "o", "L", "h"]    

+ 2
- 1
sources/ustvnow.py View File

55
         """)
55
         """)
56
 
56
 
57
         url = "http://m-api.ustvnow.com/iphone/1/live/login?username=%s&password=%s&device=gtv&redir=0"%(user,password)
57
         url = "http://m-api.ustvnow.com/iphone/1/live/login?username=%s&password=%s&device=gtv&redir=0"%(user,password)
58
-        r = self._http_request(url,headers)
58
+        #url = "http://m-api.ustvnow.com/gtv/1/live/login?username=%s&password=%s&device=gtv&redir=0"%(user,password)
59
+        r = self._http_request(url,headers=headers)
59
         if 'success' in r:
60
         if 'success' in r:
60
             self.token = re.search('"token":"([^"]+)',r).group(1)
61
             self.token = re.search('"token":"([^"]+)',r).group(1)
61
             return True
62
             return True