示例#1
0
class RSSFeeds:
    def __init__(self, db_name='feeds'):
        try:
            db_name = ek.ek(os.path.join, sickbeard.CACHE_DIR, 'rss', db_name) + '.db'
            if not os.path.exists(os.path.dirname(db_name)):
                sickbeard.helpers.makeDir(os.path.dirname(db_name))

            self.rssDB = SQLiteShelf(db_name)
        except Exception as e:
            logger.log(u"FeedParser error: " + ex(e), logger.DEBUG)

    def clearCache(self, age=None):
        try:
            Cache(self.rssDB).purge(age)
        finally:
            self.rssDB.close()

    def getFeed(self, url, post_data=None, request_headers=None, items=None, handlers=[]):


        if post_data:
            url += urllib.urlencode(post_data)

        try:
            resp = Cache(self.rssDB, userAgent=sickbeard.common.USER_AGENT).fetch(url, force_update=True, request_headers=request_headers, handlers=handlers)
        finally:
            self.rssDB.close()

        return resp
示例#2
0
class RSSFeeds:
    def __init__(self, db_name='feeds'):
        try:
            db_name = ek(os.path.join, sickbeard.CACHE_DIR, 'rss', db_name) + '.db'
            if not os.path.exists(os.path.dirname(db_name)):
                sickbeard.helpers.makeDir(os.path.dirname(db_name))

            self.rssDB = SQLiteShelf(db_name)
        except Exception as e:
            logger.log(u"FeedParser error: " + ex(e), logger.DEBUG)

    def clearCache(self, age=None):
        try:
            Cache(self.rssDB).purge(age)
        finally:
            self.rssDB.close()

    def getFeed(self, url, post_data=None, request_headers=None, items=None, handlers=[]):

        if post_data:
            url += urllib.urlencode(post_data)

        try:
            resp = Cache(self.rssDB, userAgent=sickbeard.common.USER_AGENT).fetch(url, force_update=True, request_headers=request_headers, handlers=handlers)
        finally:
            self.rssDB.close()

        return resp
示例#3
0
    def __init__(self, db_name='feeds'):
        try:
            db_name = ek(os.path.join, sickbeard.CACHE_DIR, 'rss', db_name) + '.db'
            if not os.path.exists(os.path.dirname(db_name)):
                sickbeard.helpers.makeDir(os.path.dirname(db_name))

            self.rssDB = SQLiteShelf(db_name)
        except Exception as e:
            logger.log(u"FeedParser error: " + ex(e), logger.DEBUG)
示例#4
0
    def __init__(self, db_name='feeds'):
        try:
            db_name = ek.ek(os.path.join, sickbeard.CACHE_DIR, 'rss', db_name) + '.db'
            if not os.path.exists(os.path.dirname(db_name)):
                sickbeard.helpers.makeDir(os.path.dirname(db_name))

            self.rssDB = SQLiteShelf(db_name)
        except Exception as e:
            logger.log(u"FeedParser error: " + ex(e), logger.DEBUG)
示例#5
0
class RSSFeeds:
    def __init__(self, db_name):
        try:
            db_name = ek.ek(os.path.join, sickbeard.CACHE_DIR, 'rss',
                            db_name) + '.db'
            if not os.path.exists(os.path.dirname(db_name)):
                sickbeard.helpers.makeDir(os.path.dirname(db_name))

            self.rssDB = SQLiteShelf(db_name)
        except Exception as e:
            logger.log(u"RSS error: " + ex(e), logger.DEBUG)

    def clearCache(self, age=None):
        try:
            fc = Cache(self.rssDB).purge(age)
            fc.purge(age)
        finally:
            self.rssDB.close()

    def getFeed(self, url, post_data=None, request_headers=None, items=[]):
        parsed = list(urlparse.urlparse(url))
        parsed[2] = re.sub("/{2,}", "/",
                           parsed[2])  # replace two or more / with one

        if post_data:
            url += urllib.urlencode(post_data)

        data = dict.fromkeys(items, None)

        try:
            fc = Cache(self.rssDB)
            resp = fc.fetch(url, False, False, request_headers)

            for item in items:
                try:
                    data[item] = resp[item]
                except:
                    continue

        finally:
            self.rssDB.close()

        return data
示例#6
0
class RSSFeeds:
    def __init__(self, db_name):
        try:
            db_name = ek.ek(os.path.join, sickbeard.CACHE_DIR, 'rss', db_name) + '.db'
            if not os.path.exists(os.path.dirname(db_name)):
                sickbeard.helpers.makeDir(os.path.dirname(db_name))

            self.rssDB = SQLiteShelf(db_name)
        except Exception as e:
            logger.log(u"RSS error: " + ex(e), logger.DEBUG)

    def clearCache(self, age=None):
        try:
            fc = Cache(self.rssDB).purge(age)
            fc.purge(age)
        finally:
            self.rssDB.close()

    def getFeed(self, url, post_data=None, request_headers=None, items=[]):
        parsed = list(urlparse.urlparse(url))
        parsed[2] = re.sub("/{2,}", "/", parsed[2])  # replace two or more / with one

        if post_data:
            url += urllib.urlencode(post_data)

        data = dict.fromkeys(items, None)

        try:
            fc = Cache(self.rssDB)
            resp = fc.fetch(url, False, False, request_headers=request_headers)

            for item in items:
                try:
                    data[item] = resp[item]
                except:
                    continue

        finally:
            self.rssDB.close()

        return data