Merge branch 'refs/heads/develop'

This commit is contained in:
Ruud
2012-09-16 21:32:16 +02:00
7 changed files with 92 additions and 18 deletions
@@ -1,4 +1,5 @@
from couchpotato.core.event import addEvent
from couchpotato.core.helpers.request import jsonified
from couchpotato.core.logger import CPLog
from couchpotato.core.notifications.base import Notification
import subprocess
@@ -9,13 +10,14 @@ log = CPLog(__name__)
class Synoindex(Notification):
def __init__(self):
super(Synoindex, self).__init__()
addEvent('renamer.after', self.addToLibrary)
def addToLibrary(self, group = {}):
if self.isDisabled(): return
command = ['/usr/syno/bin/synoindex', '-A', group.get('destination_dir')]
log.info(u'Executing synoindex command: %s ', command)
command = ['/usr/syno/bin/synoindex', '-A', group.get('destination_dir', '')]
log.info('Executing synoindex command: %s ', command)
try:
p = subprocess.Popen(command, stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
out = p.communicate()
@@ -26,3 +28,7 @@ class Synoindex(Notification):
return False
return True
def test(self):
success = self.addToLibrary()
return jsonified({'success': success})
+20
View File
@@ -8,6 +8,7 @@ from couchpotato.core.plugins.base import Plugin
from couchpotato.core.settings.model import FileType, File
from couchpotato.environment import Env
import os.path
import time
import traceback
log = CPLog(__name__)
@@ -28,6 +29,25 @@ class FileManager(Plugin):
'return': {'type': 'file'}
})
addEvent('app.load', self.cleanup)
def cleanup(self):
# Wait a bit after starting before cleanup
time.sleep(3)
log.debug('Cleaning up unused files')
try:
db = get_session()
for root, dirs, walk_files in os.walk(Env.get('cache_dir')):
for filename in walk_files:
file_path = os.path.join(root, filename)
f = db.query(File).filter(File.path == toUnicode(file_path)).first()
if not f:
os.remove(file_path)
except:
log.error('Failed removing unused file: %s', traceback.format_exc())
def showCacheFile(self, filename = ''):
cache_dir = Env.get('cache_dir')
+6 -4
View File
@@ -111,18 +111,20 @@ class LibraryPlugin(Plugin):
# Files
images = info.get('images', [])
for type in images:
for image in images[type]:
if not isinstance(image, str):
for image_type in ['poster']:
for image in images.get(image_type, []):
if not isinstance(image, (str, unicode)):
continue
file_path = fireEvent('file.download', url = image, single = True)
if file_path:
file_obj = fireEvent('file.add', path = file_path, type_tuple = ('image', type), single = True)
file_obj = fireEvent('file.add', path = file_path, type_tuple = ('image', image_type), single = True)
try:
file_obj = db.query(File).filter_by(id = file_obj.get('id')).one()
library.files.append(file_obj)
db.commit()
break
except:
log.debug('Failed to attach to library: %s', traceback.format_exc())
@@ -74,9 +74,18 @@ class MetaDataBase(Plugin):
if file_type.get('identifier') == wanted_file_type:
break
# See if it is in current files
for cur_file in data['library'].get('files', []):
if cur_file.get('type_id') is file_type.get('id') and os.path.isfile(cur_file.get('path')):
return cur_file.get('path')
# Download using existing info
try:
images = data['library']['info']['images'][wanted_file_type]
file_path = fireEvent('file.download', url = images[0], single = True)
return file_path
except:
pass
def getFanart(self, movie_info = {}, data = {}):
return self.getThumbnail(movie_info = movie_info, data = data, wanted_file_type = 'backdrop_original')
@@ -1,10 +1,12 @@
from couchpotato import get_session
from couchpotato.core.event import addEvent, fireEvent
from couchpotato.core.helpers.encoding import tryUrlencode
from couchpotato.core.helpers.request import jsonified, getParams
from couchpotato.core.logger import CPLog
from couchpotato.core.providers.movie.base import MovieProvider
from couchpotato.core.settings.model import Movie
from flask.helpers import json
import traceback
log = CPLog(__name__)
@@ -12,28 +14,57 @@ log = CPLog(__name__)
class CouchPotatoApi(MovieProvider):
api_url = 'http://couchpota.to/api/%s/'
urls = {
'search': 'https://couchpota.to/api/search/%s/',
'info': 'https://couchpota.to/api/info/%s/',
'eta': 'https://couchpota.to/api/eta/%s/',
}
http_time_between_calls = 0
api_version = 1
def __init__(self):
#addApiView('movie.suggest', self.suggestView)
addEvent('movie.info', self.getInfo)
addEvent('movie.info', self.getInfo, priority = 1)
addEvent('movie.search', self.search, priority = 1)
addEvent('movie.release_date', self.getReleaseDate)
def search(self, q, limit = 12):
cache_key = 'cpapi.cache.%s' % q
cached = self.getCache(cache_key, self.urls['search'] % tryUrlencode(q), timeout = 3, headers = self.getRequestHeaders())
if cached:
try:
movies = json.loads(cached)
return movies
except:
log.error('Failed parsing search results: %s', traceback.format_exc())
return []
def getInfo(self, identifier = None):
return {
'release_date': self.getReleaseDate(identifier)
}
if not identifier:
return
cache_key = 'cpapi.cache.info.%s' % identifier
cached = self.getCache(cache_key, self.urls['info'] % identifier, timeout = 3, headers = self.getRequestHeaders())
if cached:
try:
movie = json.loads(cached)
return movie
except:
log.error('Failed parsing info results: %s', traceback.format_exc())
return {}
def getReleaseDate(self, identifier = None):
if identifier is None: return {}
try:
headers = {
'X-CP-Version': fireEvent('app.version', single = True),
'X-CP-API': 1,
}
data = self.urlopen((self.api_url % ('eta')) + (identifier + '/'), headers = headers)
data = self.urlopen((self.api_url % ('eta')) + (identifier + '/'), headers = self.getRequestHeaders())
dates = json.loads(data)
log.debug('Found ETA for %s: %s', (identifier, dates))
return dates
@@ -71,3 +102,9 @@ class CouchPotatoApi(MovieProvider):
'count': len(suggestions),
'suggestions': suggestions
})
def getRequestHeaders(self):
return {
'X-CP-Version': fireEvent('app.version', single = True),
'X-CP-API': self.api_version,
}
@@ -11,8 +11,8 @@ class TheMovieDb(MovieProvider):
def __init__(self):
addEvent('movie.by_hash', self.byHash)
addEvent('movie.search', self.search, priority = 1)
addEvent('movie.info', self.getInfo, priority = 1)
addEvent('movie.search', self.search, priority = 2)
addEvent('movie.info', self.getInfo, priority = 2)
addEvent('movie.info_by_tmdb', self.getInfoByTMDBId)
# Use base wrapper
+1 -1
View File
@@ -116,7 +116,7 @@ var AboutSettingTab = new Class({
if(!json) return;
var self = this;
var date = new Date(json.version.date * 1000);
self.version_text.set('text', json.version.hash + ' ('+date.toUTCString()+')');
self.version_text.set('text', json.version.hash + (json.version.date ? ' ('+date.toLocaleString()+')' : ''));
self.updater_type.set('text', json.version.type);
}