def channel_playlist(): global _channel_group_, _channel_groupname_, _myscript_, _myscript_name_, _channel_logo_, \ _playlist_type_, _channel_epgname_, _channel_epgid_, _ffmpeg_, _no_error_ channels, _code = _fetch_channels() if not channels: return _code, -1, -1 channels_sorted = sorted(channels.values(), key=lambda _channel: _channel.weight) if _channel_group_ == 1: group = c.default_group_name else: group = _channel_groupname_ if _myscript_ == 1: streamer = c.pipe + os.path.join(_playlist_path_, _myscript_name_) else: streamer = c.pipe + os.path.join(_playlist_path_, _playlist_streamer_) playlist_src = '#EXTM3U\n' playlist_dst = '#EXTM3U\n' _num = 0 _err = 0 for channel in channels_sorted: try: log_not("Adding: " + channel.name) playlist_src += '#EXTINF:-1, %s\n%s\n' % (c.to_string( channel.name), c.to_string(channel.url())) playlist_dst += c.build_channel_lines( channel, _channel_logo_, _logo_path_file(channel.name), streamer, group, _playlist_type_, _channel_epgname_, _channel_epgid_, _channel_group_) _num += 1 except ChannelIsNotBroadcastingError: log_not("... Not broadcasting. Skipped.") _err += 1 except AuthenticationError: return _authent_error_, 0, 0 except TooManyDevicesError: return _toomany_error_, 0, 0 except NoPlaylistUrlsError: log_not("... No playlist URL provided. Skipped.") _err += 1 c.write_file(playlist_src, xbmc.translatePath(os.path.join(_profile_, _playlist_src_)), _log_dbg) c.write_file(playlist_dst, xbmc.translatePath(os.path.join(_profile_, _playlist_dst_)), _log_dbg) if _playlist_type_ == 3: c.write_streamer( xbmc.translatePath(os.path.join(_profile_, _playlist_streamer_)), xbmc.translatePath(os.path.join(_profile_, _playlist_src_)), _ffmpeg_, _log_dbg) set_setting('last_time', time.strftime('%Y-%m-%d %H:%M')) set_setting('last_downloaded', c.to_string(_num)) set_setting('last_skipped', c.to_string(_err)) return _no_error_, _num, _err
login_error, start_error, param_error = test_settings() continue else: break load_settings(True) if not _device_id_: first_device_id = c.device_id() second_device_id = c.device_id() if first_device_id == second_device_id: _device_id_ = first_device_id else: _device_id_ = c.random_hex16() set_setting("device_id", _device_id_) c.write_streamer( xbmc.translatePath(os.path.join(_profile_, _playlist_streamer_)), xbmc.translatePath(os.path.join(_profile_, _playlist_src_)), _ffmpeg_, _log_dbg) try: if _stream_quality_ == 0: _quality_ = _quality_low_ else: _quality_ = _quality_high_ _o2tvgo_ = O2TVGO(_device_id_, _username_, _password_, _quality_, _log_dbg) log_not('Waiting %s s for Service' % _start_delay_) xbmc.sleep(_start_delay_ * 1000) log_not('START Service')
device_id = _get_id(c.id_file) if not (device_id or cfg.device_id): first_device_id = c.device_id() second_device_id = c.device_id() if first_device_id == second_device_id: cfg.device_id = first_device_id else: _device_id_ = c.random_hex16() _log('New Device Id: %s' % cfg.device_id) else: if device_id: cfg.device_id = device_id c.write_file(cfg.device_id, c.id_file, _log) if cfg.stream_quality == 'PC': _quality_ = 'PC' else: _quality_ = 'MOBILE' _o2tvgo_ = O2TVGO(cfg.device_id, cfg.username, cfg.password, _quality_, _log) if cfg.playlist_type == 3: c.write_streamer(os.path.join(cfg.playlist_path, cfg.playlist_streamer), os.path.join(cfg.playlist_path, cfg.playlist_src), cfg.ffmpeg_command, _log) code, num, err = channel_playlist() _log('Download done with result EXIT: %s , DOWNLOADED: %d, SKIPPED: %d' % (code, num, err)) _log('Finished')
if config.getint('Common', 'stream_quality') == 1: _quality_ = 'STB' else: _quality_ = 'TABLET' _o2tvgo_ = O2TVGO(config.get('Login', 'device_id'), config.get('Login', 'username'), config.get('Login', 'password'), _quality_, _log) _o2tvgo_.access_token = config.get('Login', 'access_token') _o2tvgo_.expires_in = config.get('Login', 'token_expire_date') _o2tvgo_.app_id = 'O2TVKodi Playlist' if config.getint('Playlist', 'playlist_type') == 3: c.write_streamer( os.path.join(config.get('Playlist', 'playlist_path'), config.get('Common', 'playlist_streamer')), os.path.join(config.get('Playlist', 'playlist_path'), config.get('Playlist', 'playlist_src')), config.get('Common', 'ffmpeg_command'), _log) code, num, err, cached = channel_playlist() _log( 'Download done with result EXIT: %s , DOWNLOADED: %d, SKIPPED: %d, CACHED: %d' % (code, num, err, cached)) _log('Updating config...') config.set('Login', 'access_token', _o2tvgo_.access_token) config.set('Login', 'token_expire_date', str(_o2tvgo_.expires_in)) with codecs.open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'config.ini'), 'wb+', encoding='utf-8')\ as configfile: config.write(configfile) _log('Finished')