1
0
mirror of https://github.com/moparisthebest/SickRage synced 2024-08-13 16:53:54 -04:00
SickRage/sickbeard/rssfeeds.py
echel0n 3d7e460079 Fixed issues with newznab/torrent provider searches.
Fixed issues with browser launches at startup.
Fixed issues with feedparser and feedcache relating to provider searches.
2014-12-11 10:06:50 -08:00

59 lines
1.5 KiB
Python

from __future__ import with_statement
import os
import urllib
import urlparse
import re
import collections
import sickbeard
from sickbeard import logger
from sickbeard import encodingKludge as ek
from sickbeard.exceptions import ex
from feedcache.cache import Cache
from sqliteshelf import SQLiteShelf
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