Exemplo n.º 1
0
def update_network_dict():
    """Update timezone information from SR repositories"""

    url = 'https://cdn.sickrage.ca/network_timezones/'

    try:
        url_data = WebSession().get(url).text
    except Exception:
        sickrage.app.log.warning(
            'Updating network timezones failed, this can happen from time to time. URL: %s'
            % url)
        return

    d = {}
    try:
        for line in url_data.splitlines():
            (key, val) = line.strip().rsplit(':', 1)
            if key is None or val is None:
                continue
            d[key] = val
    except (IOError, OSError):
        pass

    queries = []
    for network, timezone in d.items():
        existing = network in network_dict
        if not existing:
            try:
                sickrage.app.cache_db.get('network_timezones', network)
            except RecordNotFound:
                sickrage.app.cache_db.insert({
                    '_t': 'network_timezones',
                    'network_name': ss(network),
                    'timezone': timezone
                })
        elif network_dict[network] is not timezone:
            try:
                dbData = sickrage.app.cache_db.get('network_timezones',
                                                   network)
                dbData['timezone'] = timezone
                sickrage.app.cache_db.update(dbData)
            except RecordNotFound:
                continue

        if existing:
            del network_dict[network]

    for x in network_dict:
        try:
            sickrage.app.cache_db.delete(
                sickrage.app.cache_db.get('network_timezones', x))
        except RecordNotFound:
            continue

    load_network_dict()
Exemplo n.º 2
0
    def update_network_timezones(self):
        """Update timezone information from SR repositories"""

        session = sickrage.app.cache_db.session()

        network_timezones = {}

        try:
            url_data = WebSession().get('https://cdn.sickrage.ca/network_timezones/').text
        except Exception:
            sickrage.app.log.warning('Updating network timezones failed.')
            return

        try:
            for line in url_data.splitlines():
                (key, val) = line.strip().rsplit(':', 1)
                if all([key, val]):
                    network_timezones[key] = val
        except (IOError, OSError):
            pass

        for x in session.query(CacheDB.NetworkTimezone):
            if x.network_name not in network_timezones:
                session.query(CacheDB.NetworkTimezone).filter_by(network_name=x.network_name).delete()
                session.commit()

        sql_to_add = []
        sql_to_update = []

        for network, timezone in network_timezones.items():
            try:
                dbData = session.query(CacheDB.NetworkTimezone).filter_by(network_name=network).one()
                if dbData.timezone != timezone:
                    dbData.timezone = timezone
                    sql_to_update.append(dbData.as_dict())
            except orm.exc.NoResultFound:
                sql_to_add.append({
                    'network_name': network,
                    'timezone': timezone
                })

        if len(sql_to_add):
            session.bulk_insert_mappings(CacheDB.NetworkTimezone, sql_to_add)
            session.commit()

        if len(sql_to_update):
            session.bulk_update_mappings(CacheDB.NetworkTimezone, sql_to_update)
            session.commit()

        # cleanup
        del network_timezones
Exemplo n.º 3
0
    def update_network_timezones(self, session=None):
        """Update timezone information from SR repositories"""

        network_timezones = {}

        try:
            url_data = WebSession().get(
                'https://cdn.sickrage.ca/network_timezones/').text
        except Exception:
            sickrage.app.log.warning('Updating network timezones failed.')
            return

        try:
            for line in url_data.splitlines():
                (key, val) = line.strip().rsplit(':', 1)
                if all([key, val]):
                    network_timezones[key] = val
        except (IOError, OSError):
            pass

        for x in session.query(CacheDB.NetworkTimezone):
            if x.network_name not in network_timezones:
                session.query(CacheDB.NetworkTimezone).filter_by(
                    network_name=x.network_name).delete()

        for network, timezone in network_timezones.items():
            try:
                dbData = session.query(CacheDB.NetworkTimezone).filter_by(
                    network_name=network).one()
                if dbData.timezone != timezone:
                    dbData.timezone = timezone
            except orm.exc.NoResultFound:
                session.add(
                    CacheDB.NetworkTimezone(**{
                        'network_name': network,
                        'timezone': timezone
                    }))

        # cleanup
        del network_timezones
Exemplo n.º 4
0
    def update_network_timezones(self):
        """Update timezone information from SR repositories"""

        network_timezones = {}

        try:
            url_data = WebSession().get('https://cdn.sickrage.ca/network_timezones/').text
        except Exception:
            sickrage.app.log.warning('Updating network timezones failed.')
            return

        try:
            for line in url_data.splitlines():
                (key, val) = line.strip().rsplit(':', 1)
                if all([key, val]):
                    network_timezones[key] = val
        except (IOError, OSError):
            pass

        for x in sickrage.app.cache_db.all('network_timezones'):
            if x['network_name'] not in network_timezones:
                sickrage.app.cache_db.delete(x)

        for network, timezone in network_timezones.items():
            dbData = sickrage.app.cache_db.get('network_timezones', network)
            if not dbData:
                sickrage.app.cache_db.insert({
                    '_t': 'network_timezones',
                    'network_name': ss(network),
                    'timezone': timezone
                })
            elif dbData['timezone'] != timezone:
                dbData['timezone'] = timezone
                sickrage.app.cache_db.update(dbData)

        # cleanup
        del network_timezones