6 changed files with 122 additions and 7 deletions
@ -0,0 +1,6 @@ |
|||||
|
from .main import V1Importer |
||||
|
|
||||
|
def start(): |
||||
|
return V1Importer() |
||||
|
|
||||
|
config = [] |
@ -0,0 +1,30 @@ |
|||||
|
<html> |
||||
|
<head> |
||||
|
<link rel="stylesheet" href="{{ url_for('web.static', filename='style/main.css') }}" type="text/css"> |
||||
|
<link rel="stylesheet" href="{{ url_for('web.static', filename='style/uniform.generic.css') }}" type="text/css"> |
||||
|
<link rel="stylesheet" href="{{ url_for('web.static', filename='style/uniform.css') }}" type="text/css"> |
||||
|
|
||||
|
<script type="text/javascript" src="{{ url_for('web.static', filename='scripts/library/mootools.js') }}"></script> |
||||
|
|
||||
|
<script type="text/javascript"> |
||||
|
|
||||
|
window.addEvent('domready', function(){ |
||||
|
if($('old_db')) |
||||
|
$('old_db').addEvent('change', function(){ |
||||
|
$('form').submit(); |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
</script> |
||||
|
|
||||
|
</head> |
||||
|
<body> |
||||
|
{% if message: %} |
||||
|
{{ message }} |
||||
|
{% else: %} |
||||
|
<form id="form" method="post" enctype="multipart/form-data"> |
||||
|
<input type="file" name="old_db" id="old_db" /> |
||||
|
</form> |
||||
|
{% endif %} |
||||
|
</body> |
||||
|
</html> |
@ -0,0 +1,56 @@ |
|||||
|
from couchpotato.api import addApiView |
||||
|
from couchpotato.core.event import fireEventAsync |
||||
|
from couchpotato.core.helpers.variable import getImdb |
||||
|
from couchpotato.core.logger import CPLog |
||||
|
from couchpotato.core.plugins.base import Plugin |
||||
|
from couchpotato.environment import Env |
||||
|
from flask.globals import request |
||||
|
from flask.helpers import url_for |
||||
|
import os |
||||
|
|
||||
|
log = CPLog(__name__) |
||||
|
|
||||
|
|
||||
|
class V1Importer(Plugin): |
||||
|
|
||||
|
def __init__(self): |
||||
|
addApiView('v1.import', self.fromOld, methods = ['GET', 'POST']) |
||||
|
|
||||
|
def fromOld(self): |
||||
|
|
||||
|
if request.method != 'POST': |
||||
|
return self.renderTemplate(__file__, 'form.html', url_for = url_for) |
||||
|
|
||||
|
file = request.files['old_db'] |
||||
|
|
||||
|
uploaded_file = os.path.join(Env.get('cache_dir'), 'v1_database.db') |
||||
|
|
||||
|
if os.path.isfile(uploaded_file): |
||||
|
os.remove(uploaded_file) |
||||
|
|
||||
|
file.save(uploaded_file) |
||||
|
|
||||
|
try: |
||||
|
import sqlite3 |
||||
|
conn = sqlite3.connect(uploaded_file) |
||||
|
|
||||
|
wanted = [] |
||||
|
|
||||
|
t = ('want',) |
||||
|
cur = conn.execute('SELECT status, imdb FROM Movie WHERE status=?', t) |
||||
|
for row in cur: |
||||
|
status, imdb = row |
||||
|
if getImdb(imdb): |
||||
|
wanted.append(imdb) |
||||
|
conn.close() |
||||
|
|
||||
|
wanted = set(wanted) |
||||
|
for imdb in wanted: |
||||
|
fireEventAsync('movie.add', {'identifier': imdb}, search_after = False) |
||||
|
|
||||
|
message = 'Successfully imported %s movie(s)' % len(wanted) |
||||
|
except Exception, e: |
||||
|
message = 'Failed: %s' % e |
||||
|
|
||||
|
return self.renderTemplate(__file__, 'form.html', url_for = url_for, message = message) |
||||
|
|
Loading…
Reference in new issue