Exemple #1
0
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')