|
|
|
@ -78,6 +78,26 @@ class view_result(object): |
|
|
|
#################### |
|
|
|
#################### |
|
|
|
# flask routes |
|
|
|
# flask routes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@bp.route('/list_movie_test') |
|
|
|
|
|
|
|
def list_movie_test(): |
|
|
|
|
|
|
|
conn = db.get_db() |
|
|
|
|
|
|
|
cur = conn.cursor() |
|
|
|
|
|
|
|
view_results = [] |
|
|
|
|
|
|
|
query = '''SELECT |
|
|
|
|
|
|
|
movie_details.*, movie_paths.movie_path |
|
|
|
|
|
|
|
FROM |
|
|
|
|
|
|
|
movie_details |
|
|
|
|
|
|
|
JOIN movie_paths ON movie_paths.movie_id=movie_details.movie_id''' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# TODO: should probably loop on movie_id, and add a list of movie_paths because |
|
|
|
|
|
|
|
# there can be multiple paths associated with a movie_id |
|
|
|
|
|
|
|
for row in cur.execute(query): |
|
|
|
|
|
|
|
vr = buildViewResult(row) |
|
|
|
|
|
|
|
vr.rel_path = row['movie_path'] |
|
|
|
|
|
|
|
view_results.append(vr) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return render_template('tmdb/list_movie_test.html.jinja', view_results = view_results) |
|
|
|
|
|
|
|
|
|
|
|
@bp.route('/query_movie', methods=['GET', 'POST']) |
|
|
|
@bp.route('/query_movie', methods=['GET', 'POST']) |
|
|
|
def query_movie(): |
|
|
|
def query_movie(): |
|
|
|
errors = [] |
|
|
|
errors = [] |
|
|
|
@ -95,6 +115,8 @@ def query_movie(): |
|
|
|
query.raw_query_str = request.args['query'] |
|
|
|
query.raw_query_str = request.args['query'] |
|
|
|
query.rel_path = request.args['rel_path'] |
|
|
|
query.rel_path = request.args['rel_path'] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# TODO: if query_obj.query_type is still 'UNKNOWN' from parseQueryStr(), make queries to |
|
|
|
|
|
|
|
# both tmdb endpoints (movie and tv) |
|
|
|
if query.raw_query_str and parseQueryStr(query): |
|
|
|
if query.raw_query_str and parseQueryStr(query): |
|
|
|
if isQueryCached(query.parsed_query_str): |
|
|
|
if isQueryCached(query.parsed_query_str): |
|
|
|
view_results = makeLocalQuery(query) |
|
|
|
view_results = makeLocalQuery(query) |
|
|
|
@ -126,6 +148,7 @@ def query_movie(): |
|
|
|
return render_template( |
|
|
|
return render_template( |
|
|
|
'tmdb/query.html', |
|
|
|
'tmdb/query.html', |
|
|
|
view_data = view_results, |
|
|
|
view_data = view_results, |
|
|
|
|
|
|
|
rel_path = query.rel_path, |
|
|
|
debug_str = '{} \n {} \n {} \n'.format( |
|
|
|
debug_str = '{} \n {} \n {} \n'.format( |
|
|
|
yaml.dump(query, indent=4), |
|
|
|
yaml.dump(query, indent=4), |
|
|
|
yaml.dump(response, indent=4), |
|
|
|
yaml.dump(response, indent=4), |
|
|
|
@ -133,6 +156,36 @@ def query_movie(): |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@bp.route('/create_mapping') |
|
|
|
|
|
|
|
def create_mapping(): |
|
|
|
|
|
|
|
# TODO: add option for tv shows |
|
|
|
|
|
|
|
movie_id = request.args.get('movie_id') |
|
|
|
|
|
|
|
rel_path = request.args.get('rel_path') |
|
|
|
|
|
|
|
errors = [] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if not movie_id or not rel_path: |
|
|
|
|
|
|
|
errors.append('invalid parameter') |
|
|
|
|
|
|
|
else: |
|
|
|
|
|
|
|
conn = db.get_db() |
|
|
|
|
|
|
|
cur = conn.cursor() |
|
|
|
|
|
|
|
try: |
|
|
|
|
|
|
|
cur.execute('INSERT INTO movie_paths(movie_id, movie_path) VALUES(?, ?)', |
|
|
|
|
|
|
|
(movie_id, rel_path)) |
|
|
|
|
|
|
|
except DatabaseError as e: |
|
|
|
|
|
|
|
errors.append(e) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if len(errors) == 0: |
|
|
|
|
|
|
|
conn.commit() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if errors: |
|
|
|
|
|
|
|
flash(errors) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return render_template('tmdb/create_mapping.html.jinja', |
|
|
|
|
|
|
|
movie_id = movie_id, |
|
|
|
|
|
|
|
rel_path = rel_path, |
|
|
|
|
|
|
|
success = (len(errors) == 0) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
################### |
|
|
|
################### |
|
|
|
# helpers |
|
|
|
# helpers |
|
|
|
@ -190,20 +243,23 @@ def makeLocalQuery(query_obj): |
|
|
|
mq.query = ?''' |
|
|
|
mq.query = ?''' |
|
|
|
|
|
|
|
|
|
|
|
for row in cur.execute(fancy_query, (query_obj.parsed_query_str, )): |
|
|
|
for row in cur.execute(fancy_query, (query_obj.parsed_query_str, )): |
|
|
|
vr = view_result() |
|
|
|
results.append(buildViewResult(row)) |
|
|
|
vr.id = row['movie_id'] |
|
|
|
|
|
|
|
vr.title = row['title'] |
|
|
|
|
|
|
|
vr.overview = row['overview'] |
|
|
|
|
|
|
|
vr.release_date = row['release_date'] |
|
|
|
|
|
|
|
vr.original_language = row['original_language'] |
|
|
|
|
|
|
|
vr.tmdb_link = "{}{}{}".format(TMDB_MOVIE_LINK_URL, '/', vr.id) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if row['poster_path'] != None: |
|
|
|
return results |
|
|
|
vr.poster_path = row['poster_path'] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
results.append(vr) |
|
|
|
def buildViewResult(db_row): |
|
|
|
|
|
|
|
vr = view_result() |
|
|
|
|
|
|
|
vr.id = db_row['movie_id'] |
|
|
|
|
|
|
|
vr.title = db_row['title'] |
|
|
|
|
|
|
|
vr.overview = db_row['overview'] |
|
|
|
|
|
|
|
vr.release_date = db_row['release_date'] |
|
|
|
|
|
|
|
vr.original_language = db_row['original_language'] |
|
|
|
|
|
|
|
vr.tmdb_link = "{}{}{}".format(TMDB_MOVIE_LINK_URL, '/', vr.id) |
|
|
|
|
|
|
|
|
|
|
|
return results |
|
|
|
if db_row['poster_path'] != None: |
|
|
|
|
|
|
|
vr.poster_path = db_row['poster_path'] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return vr |
|
|
|
|
|
|
|
|
|
|
|
def makeTMDBQuery(query_obj, response_obj): |
|
|
|
def makeTMDBQuery(query_obj, response_obj): |
|
|
|
if query_obj.query_type == query_type.MOVIE: |
|
|
|
if query_obj.query_type == query_type.MOVIE: |
|
|
|
|