parent
ad3fd6a195
commit
9b7da75154
@ -1,5 +1,8 @@
|
||||
import cv2
|
||||
import base64
|
||||
from io import BytesIO
|
||||
import zipfile
|
||||
import pathlib
|
||||
|
||||
global gamelist
|
||||
gamelist = []
|
||||
@ -61,3 +64,14 @@ def image_resize(image, width=None, height=None, inter=cv2.INTER_AREA):
|
||||
|
||||
# return the resized image
|
||||
return resized
|
||||
|
||||
|
||||
# Create a ZIP-file on the fly for downloading games quicker
|
||||
def make_archive(dirname, path):
|
||||
base_path = pathlib.Path(path)
|
||||
b = BytesIO()
|
||||
with zipfile.ZipFile(b, mode="w", compression=zipfile.ZIP_DEFLATED) as z:
|
||||
for f_name in base_path.iterdir():
|
||||
z.write(f_name, arcname=f_name.name)
|
||||
b.seek(0)
|
||||
return b
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
from __main__ import app
|
||||
from flask import jsonify, request, send_from_directory
|
||||
from flask import jsonify, request, send_from_directory, send_file
|
||||
import base64
|
||||
import json
|
||||
import modules.db_connect
|
||||
from modules.functions import reduceartcv2
|
||||
from modules.functions import reduceartcv2, make_archive
|
||||
import os
|
||||
|
||||
contentpath = modules.db_connect.contentpath()
|
||||
@ -86,3 +86,18 @@ def getmanual():
|
||||
manualname = nfo['game']['manual']
|
||||
manualpath = os.path.dirname(nfopath)+'/'
|
||||
return send_from_directory(manualpath, manualname, as_attachment=True)
|
||||
|
||||
|
||||
# Game folder as ZIP-file (kinda slow)
|
||||
@app.route('/getzipfile', methods=["GET"])
|
||||
def getzipfile():
|
||||
nfopath = base64.b64decode(request.json).decode()
|
||||
nfo = json.load(open(nfopath, 'r'))
|
||||
nfo['path'] = base64.b64encode(nfopath.encode('utf-8')).decode()
|
||||
path = os.path.dirname(nfopath)
|
||||
dirname = os.path.basename(nfopath)
|
||||
return send_file(
|
||||
make_archive(dirname, path),
|
||||
mimetype='application/zip',
|
||||
as_attachment=True,
|
||||
download_name=str(dirname) + '.zip')
|
||||
|
||||
@ -17,7 +17,8 @@
|
||||
"lang_game_manual_not_found": "Manual not available",
|
||||
"lang_game_download_header": "Download game",
|
||||
"lang_game_download_ingress": "Here you can download the game using either torrent file or a magnet-link!",
|
||||
"lang_game_download_torrent_button": "Download",
|
||||
"lang_game_download_zip_button": "Download Zip",
|
||||
"lang_game_download_torrent_button": "Download Torrent",
|
||||
"lang_game_download_magnet_link": "Magnet link",
|
||||
"lang_game_artwork": "Artwork",
|
||||
"lang_game_year": "Release date",
|
||||
|
||||
@ -4,5 +4,6 @@
|
||||
"lang_home_change_language": "Byt språk",
|
||||
"lang_home_change_language_button": "Byt",
|
||||
"lang_navigation_home": "Hem",
|
||||
"lang_navigation_gamelist": "Spellista"
|
||||
"lang_navigation_gamelist": "Spellista",
|
||||
"lang_game_download_zip_button": "Ladda ned Zip"
|
||||
}
|
||||
|
||||
@ -46,6 +46,19 @@ def artwork(lang_code):
|
||||
# Download a game
|
||||
@app.route("/<lang_code>/game/download")
|
||||
def download(lang_code):
|
||||
gamepath = request.args.get("gamepath")
|
||||
gametitle = request.args.get("gametitle")
|
||||
targettype = request.args.get("targettype")
|
||||
if "zip" in targettype:
|
||||
gamezip = requests.get(host_endpoint + '/getzipfile', json=gamepath)
|
||||
return Response(gamezip, mimetype="application/zip",
|
||||
headers={
|
||||
"Content-Disposition":
|
||||
"attachment;filename=" + str(gametitle)})
|
||||
elif "torrent" in targettype:
|
||||
pass
|
||||
|
||||
else:
|
||||
pass
|
||||
|
||||
|
||||
|
||||
@ -22,7 +22,8 @@
|
||||
{% endif%}
|
||||
<h3>{{lang_game_download_header}}</h3>
|
||||
<p>{{lang_game_download_ingress}}</p>
|
||||
<a href="{{ url_for('download', gamepath=game.path, lang_code=lang_code)}}"><button type="button">{{lang_game_download_torrent_button}}</button></a>
|
||||
<a href="{{ url_for('download', targettype="torrent", gametitle=game.game.title, gamepath=game.path, lang_code=lang_code)}}"><button type="button">{{lang_game_download_torrent_button}}</button></a>
|
||||
<a href="{{ url_for('download', targettype="zip", gamepath=game.path, gametitle=game.game.title, lang_code=lang_code)}}"><button type="button">{{lang_game_download_zip_button}}</button></a>
|
||||
<p><a href="">{{lang_game_download_magnet_link}}</a></p>
|
||||
<table class="game">
|
||||
<tr>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user