Merge branch 'bluray_rss' of https://github.com/bwq/CouchPotatoServer into bwq-bluray_rss
This commit is contained in:
commit
c069b01913
6 files changed
+180
-2
No files matched your search
@@ -2,6 +2,7 @@ from couchpotato.core.event import addEvent, fireEvent
|
|||||||
from couchpotato.core.logger import CPLog
|
from couchpotato.core.logger import CPLog
|
||||||
from couchpotato.core.plugins.base import Plugin
|
from couchpotato.core.plugins.base import Plugin
|
||||||
from couchpotato.environment import Env
|
from couchpotato.environment import Env
|
||||||
|
from couchpotato.core.helpers.encoding import simplifyString
|
||||||
import time
|
import time
|
||||||
|
|
||||||
log = CPLog(__name__)
|
log = CPLog(__name__)
|
||||||
@@ -36,18 +37,38 @@ class Automation(Plugin):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def isMinimal(self, identifier):
|
def isMinimal(self, identifier):
|
||||||
|
|
||||||
movie = fireEvent('movie.info', identifier = identifier, merge = True)
|
movie = fireEvent('movie.info', identifier = identifier, merge = True)
|
||||||
|
return self.isMinimalMovie(movie)
|
||||||
|
|
||||||
|
def isMinimalMovie(self, movie):
|
||||||
|
if movie['rating']:
|
||||||
|
rating = movie['rating']['imdb'][0]
|
||||||
|
movie['votes'] = movie['rating']['imdb'][1]
|
||||||
|
movie['rating'] = movie['rating']['imdb'][0]
|
||||||
|
identifier = movie['imdb']
|
||||||
for minimal_type in ['year', 'rating', 'votes']:
|
for minimal_type in ['year', 'rating', 'votes']:
|
||||||
type_value = movie.get(minimal_type, 0)
|
type_value = movie.get(minimal_type, 0)
|
||||||
type_min = self.getMinimal(minimal_type)
|
type_min = self.getMinimal(minimal_type)
|
||||||
if type_value < type_min:
|
if type_value < type_min:
|
||||||
log.info('%s to low for %s, need %s has %s', (minimal_type, identifier, type_min, type_value))
|
log.info('%s too low for %s, need %s has %s', (minimal_type, identifier, type_min, type_value))
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def getIMDBFromTitle(self, title):
|
||||||
|
cache_key = u'%s/%s' % (__name__, simplifyString(title))
|
||||||
|
movies = Env.get('cache').get(cache_key)
|
||||||
|
|
||||||
|
if not movies:
|
||||||
|
movies = fireEvent('movie.searchimdb', q = title, merge = True)
|
||||||
|
Env.get('cache').set(cache_key, movies)
|
||||||
|
|
||||||
|
try:
|
||||||
|
return movies[0]
|
||||||
|
|
||||||
|
except:
|
||||||
|
log.info("No results for " + title)
|
||||||
|
|
||||||
def getMinimal(self, min_type):
|
def getMinimal(self, min_type):
|
||||||
return Env.setting(min_type, 'automation')
|
return Env.setting(min_type, 'automation')
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
from .main import Bluray
|
||||||
|
|
||||||
|
def start():
|
||||||
|
return Bluray()
|
||||||
|
|
||||||
|
config = [{
|
||||||
|
'name': 'bluray',
|
||||||
|
'groups': [
|
||||||
|
{
|
||||||
|
'tab': 'automation',
|
||||||
|
'name': 'bluray_automation',
|
||||||
|
'label': 'Blu-ray.com',
|
||||||
|
'description': 'imports movies from blu-ray.com',
|
||||||
|
'options': [
|
||||||
|
{
|
||||||
|
'name': 'automation_enabled',
|
||||||
|
'default': False,
|
||||||
|
'type': 'enabler',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}]
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
from couchpotato.core.helpers.rss import RSS
|
||||||
|
from couchpotato.core.helpers.variable import md5
|
||||||
|
from couchpotato.core.logger import CPLog
|
||||||
|
from couchpotato.core.providers.automation.base import Automation
|
||||||
|
from couchpotato.environment import Env
|
||||||
|
import traceback
|
||||||
|
import xml.etree.ElementTree as XMLTree
|
||||||
|
import json
|
||||||
|
|
||||||
|
log = CPLog(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class Bluray(Automation, RSS):
|
||||||
|
|
||||||
|
interval = 1800
|
||||||
|
rss_url = 'http://www.blu-ray.com/rss/newreleasesfeed.xml'
|
||||||
|
|
||||||
|
def getIMDBids(self):
|
||||||
|
|
||||||
|
if self.isDisabled():
|
||||||
|
return
|
||||||
|
|
||||||
|
movies = []
|
||||||
|
RSSMovie = {'name': 'placeholder', 'year' : 'placeholder'}
|
||||||
|
RSSMovies = []
|
||||||
|
|
||||||
|
cache_key = 'bluray.%s' % md5(self.rss_url)
|
||||||
|
rss_data = self.getCache(cache_key, self.rss_url)
|
||||||
|
data = XMLTree.fromstring(rss_data)
|
||||||
|
|
||||||
|
if data:
|
||||||
|
rss_movies = self.getElements(data, 'channel/item')
|
||||||
|
|
||||||
|
for movie in rss_movies:
|
||||||
|
RSSMovie['name'] = self.getTextElement(movie, "title").lower().split("blu-ray")[0].strip("(").rstrip()
|
||||||
|
RSSMovie['year'] = self.getTextElement(movie, "description").split("|")[1].strip("(").strip()
|
||||||
|
|
||||||
|
if not RSSMovie['name'].find("/") == -1: # make sure it is not a double movie release
|
||||||
|
continue
|
||||||
|
|
||||||
|
if int(RSSMovie['year']) < Env.setting('year', 'automation'): #do year filtering
|
||||||
|
continue
|
||||||
|
|
||||||
|
for test in RSSMovies:
|
||||||
|
if test.values() == RSSMovie.values(): # make sure we did not already include it...
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
log.info('Release found: %s.' % RSSMovie)
|
||||||
|
RSSMovies.append(RSSMovie.copy())
|
||||||
|
|
||||||
|
if not RSSMovies:
|
||||||
|
log.info('No movies found.')
|
||||||
|
return
|
||||||
|
|
||||||
|
log.info("Applying IMDB filter to found movies...")
|
||||||
|
|
||||||
|
for RSSMovie in RSSMovies:
|
||||||
|
imdb = self.getIMDBFromTitle(RSSMovie['name'] + ' ' + RSSMovie['year'])
|
||||||
|
|
||||||
|
if imdb:
|
||||||
|
if self.isMinimalMovie(imdb):
|
||||||
|
movies.append(imdb['imdb'])
|
||||||
|
|
||||||
|
return movies
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
from .main import Kinepolis
|
||||||
|
|
||||||
|
def start():
|
||||||
|
return Kinepolis()
|
||||||
|
|
||||||
|
config = [{
|
||||||
|
'name': 'kinepolis',
|
||||||
|
'groups': [
|
||||||
|
{
|
||||||
|
'tab': 'automation',
|
||||||
|
'name': 'kinepolis_automation',
|
||||||
|
'label': 'Kinepolis',
|
||||||
|
'description': 'imports movies from the current top 10 of kinepolis',
|
||||||
|
'options': [
|
||||||
|
{
|
||||||
|
'name': 'automation_enabled',
|
||||||
|
'default': False,
|
||||||
|
'type': 'enabler',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}]
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
from couchpotato.core.helpers.rss import RSS
|
||||||
|
from couchpotato.core.helpers.variable import md5
|
||||||
|
from couchpotato.core.logger import CPLog
|
||||||
|
from couchpotato.core.providers.automation.base import Automation
|
||||||
|
from couchpotato.environment import Env
|
||||||
|
from dateutil.parser import parse
|
||||||
|
import time
|
||||||
|
import traceback
|
||||||
|
import xml.etree.ElementTree as XMLTree
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
log = CPLog(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class Kinepolis(Automation, RSS):
|
||||||
|
|
||||||
|
interval = 1800
|
||||||
|
rss_url = 'http://kinepolis.be/nl/top10-box-office/feed'
|
||||||
|
|
||||||
|
def getIMDBids(self):
|
||||||
|
|
||||||
|
if self.isDisabled():
|
||||||
|
return
|
||||||
|
|
||||||
|
movies = []
|
||||||
|
RSSMovie = {'name': 'placeholder', 'year' : 'placeholder'}
|
||||||
|
|
||||||
|
cache_key = 'kinepolis.%s' % md5(self.rss_url)
|
||||||
|
rss_data = self.getCache(cache_key, self.rss_url)
|
||||||
|
data = XMLTree.fromstring(rss_data)
|
||||||
|
|
||||||
|
if data:
|
||||||
|
rss_movies = self.getElements(data, 'channel/item')
|
||||||
|
|
||||||
|
for movie in rss_movies:
|
||||||
|
RSSMovie['name'] = self.getTextElement(movie, "title")
|
||||||
|
currentYear = datetime.datetime.now().strftime("%Y")
|
||||||
|
RSSMovie['year'] = currentYear
|
||||||
|
|
||||||
|
log.info('Release found: %s.' % RSSMovie)
|
||||||
|
imdb = self.getIMDBFromTitle(RSSMovie['name'] + ' ' + RSSMovie['year'])
|
||||||
|
|
||||||
|
if imdb:
|
||||||
|
movies.append(imdb['imdb'])
|
||||||
|
|
||||||
|
return movies
|
||||||
@@ -21,6 +21,7 @@ class IMDBAPI(MovieProvider):
|
|||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
addEvent('movie.search', self.search)
|
addEvent('movie.search', self.search)
|
||||||
|
addEvent('movie.searchimdb', self.search)
|
||||||
addEvent('movie.info', self.getInfo)
|
addEvent('movie.info', self.getInfo)
|
||||||
|
|
||||||
def search(self, q, limit = 12):
|
def search(self, q, limit = 12):
|
||||||
|
|||||||
Reference in new issue
Block a user