Add function to download exported files

This commit is contained in:
JonnyWong16 2020-08-03 14:45:53 -07:00
parent 6334ffa197
commit deb49d7ff9
No known key found for this signature in database
GPG key ID: B1F1F9807184697A
3 changed files with 72 additions and 4 deletions

View file

@ -116,3 +116,12 @@ export_table_options = {
}
}
};
$('.export_table').on('click', '> tbody > tr > td > button.btn-download', function (e) {
var tr = $(this).closest('tr');
var row = export_table.row(tr);
var rowData = row.data();
e.preventDefault();
window.location.href = 'download_export?row_id=' + rowData['row_id'];
});

View file

@ -897,7 +897,7 @@ def export(section_id=None, rating_key=None, file_format='json'):
return
filename = helpers.clean_filename(filename)
filepath = os.path.join(plexpy.CONFIG.EXPORT_DIR, filename)
filepath = get_export_filepath(filename)
logger.info("Tautulli Exporter :: Starting export for '%s'...", filename)
export_id = set_export_state(timestamp=timestamp,
@ -932,6 +932,18 @@ def export(section_id=None, rating_key=None, file_format='json'):
logger.info("Tautulli Exporter :: Successfully exported to '%s'", filepath)
def get_export(export_id):
db = database.MonitorDatabase()
result = db.select_single('SELECT filename, complete '
'FROM exports WHERE id = ?',
[export_id])
if result:
result['exists'] = check_export_exists(result['filename'])
return result
def set_export_state(timestamp, section_id, rating_key, media_type, file_format, filename):
keys = {'timestamp': timestamp,
'section_id': section_id,
@ -1000,8 +1012,7 @@ def get_export_datatable(section_id=None, rating_key=None, kwargs=None):
rows = []
for item in result:
media_type_title = item['media_type'].title()
filepath = os.path.join(plexpy.CONFIG.EXPORT_DIR, item['filename'])
exists = helpers.cast_to_int(os.path.isfile(filepath))
exists = helpers.cast_to_int(check_export_exists(item['filename']))
row = {'row_id': item['row_id'],
'timestamp': item['timestamp'],
@ -1024,3 +1035,11 @@ def get_export_datatable(section_id=None, rating_key=None, kwargs=None):
}
return result
def get_export_filepath(filename):
return os.path.join(plexpy.CONFIG.EXPORT_DIR, filename)
def check_export_exists(filename):
return os.path.isfile(get_export_filepath(filename))

View file

@ -1,4 +1,4 @@
# -*- coding: utf-8 -*-
# -*- coding: utf-8 -*-
# This file is part of Tautulli.
#
@ -6482,9 +6482,49 @@ class WebInterface(object):
@requireAuth(member_of("admin"))
@addtoapi()
def export_metadata(self, section_id=None, rating_key=None, file_format='json', **kwargs):
""" Download the Plex log file.
```
Required parameters:
row_id (int): The row id of the exported file to download
Optional parameters:
None
Returns:
json:
{"result": "success",
"message": "Metadata export has started. Check the logs to monitor any problems."
}
```
"""
threading.Thread(target=exporter.export,
kwargs={'section_id': section_id,
'rating_key': rating_key,
'file_format': file_format}).start()
return {'result': 'success',
'message': 'Metadata export has started. Check the logs to monitor any problems.'}
@cherrypy.expose
@cherrypy.tools.json_out()
@requireAuth(member_of("admin"))
@addtoapi()
def download_export(self, row_id=None, **kwargs):
""" Download the Plex log file.
```
Required parameters:
row_id (int): The row id of the exported file to download
Optional parameters:
None
Returns:
download
```
"""
result = exporter.get_export(export_id=row_id)
if result and result['complete'] and result['exists']:
serve_download(path=exporter.get_export_filepath(result['filename']), name=result['filename'])