0.1.6s
This commit is contained in:
@@ -8,7 +8,7 @@ import requests
|
||||
from flask import (Flask, jsonify, render_template, render_template_string,
|
||||
request, send_from_directory, make_response)
|
||||
|
||||
from system_module import db, gelbooru, image_processor, logger
|
||||
from system_module import db, gelbooru, image_processor, logger, tasks
|
||||
|
||||
if Path("config_gb.json").exists():
|
||||
CONFIG_FILE = "config_gb.json"
|
||||
@@ -53,6 +53,10 @@ def index():
|
||||
def analytics():
|
||||
return render_template("analytics.html")
|
||||
|
||||
@app.route("/task")
|
||||
def task():
|
||||
return render_template("task.html")
|
||||
|
||||
@app.route("/post/<path:post_id>")
|
||||
def post(post_id):
|
||||
return render_template("post.html")
|
||||
@@ -69,42 +73,6 @@ def serve_image(filename):
|
||||
def serve_thumb(filename):
|
||||
return send_from_directory(THUMB_FOLDER, filename)
|
||||
|
||||
@app.route("/dw_api", methods=['POST'])
|
||||
def dw_api():
|
||||
data = request.get_json()
|
||||
if not data or 'id' not in data:
|
||||
return jsonify({'status': 'error', 'message': 'URL not get'}), 400
|
||||
image_id = data["id"]
|
||||
try:
|
||||
data_get, url_file, file_name = gb.get_from_id(image_id)
|
||||
if database.check_uni(data_get["md5"]):
|
||||
message = f"File '{file_name}' already exists. Skipping."
|
||||
log.send("warning", "all", message)
|
||||
return jsonify({'status': 'skipped', 'message': message})
|
||||
with requests.get(url_file, stream=True, headers=GB_HEADERS, timeout=30) as r:
|
||||
r.raise_for_status()
|
||||
content_type = r.headers.get('Content-Type', '')
|
||||
if 'text/html' in content_type:
|
||||
log.send("error", "all", "The server returned HTML instead of an image. Bot protection.")
|
||||
return False
|
||||
with open(FILE_DW_FOLDERS+"/"+file_name, 'wb') as f:
|
||||
for chunk in r.iter_content(chunk_size=8192):
|
||||
f.write(chunk)
|
||||
database.add_raw(data_get)
|
||||
res_data = image_processor.generate_thumb(FILE_DW_FOLDERS+"/"+file_name, THUMB_FOLDER, TARGET_MIN_SIZE)
|
||||
if not res_data["status"]:
|
||||
print(res_data["message"])
|
||||
return jsonify({'status': 'success'})
|
||||
except requests.exceptions.RequestException as e:
|
||||
error_message = f"Network error {image_id}: {e}"
|
||||
log.send("error", "all", error_message)
|
||||
return jsonify({'status': 'error', 'message': error_message}), 500
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
error_message = f"Unknown error: {e}"
|
||||
log.send("error", "all", error_message)
|
||||
return jsonify({'status': 'error', 'message': error_message}), 500
|
||||
|
||||
@app.route("/api", methods=["GET", "POST"])
|
||||
def api():
|
||||
data = request.get_json()
|
||||
@@ -132,6 +100,45 @@ def api():
|
||||
post_id = data["post_id"]
|
||||
result_post = database.get_from_id(post_id)
|
||||
return jsonify(result_post)
|
||||
elif data["type"] == "task":
|
||||
if data["task"] == "analytic":
|
||||
if tasks.calculate_analytic():
|
||||
return "", 200
|
||||
else:
|
||||
return "", 500
|
||||
elif data["type"] == "download":
|
||||
if not data or 'id' not in data:
|
||||
return jsonify({'status': 'error', 'message': 'URL not get'}), 400
|
||||
image_id = data["id"]
|
||||
try:
|
||||
data_get, url_file, file_name = gb.get_from_id(image_id)
|
||||
if database.check_uni(data_get["md5"]):
|
||||
message = f"File '{file_name}' already exists. Skipping."
|
||||
log.send("warning", "all", message)
|
||||
return jsonify({'status': 'skipped', 'message': message})
|
||||
with requests.get(url_file, stream=True, headers=GB_HEADERS, timeout=30) as r:
|
||||
r.raise_for_status()
|
||||
content_type = r.headers.get('Content-Type', '')
|
||||
if 'text/html' in content_type:
|
||||
log.send("error", "all", "The server returned HTML instead of an image. Bot protection.")
|
||||
return False
|
||||
with open(FILE_DW_FOLDERS+"/"+file_name, 'wb') as f:
|
||||
for chunk in r.iter_content(chunk_size=8192):
|
||||
f.write(chunk)
|
||||
database.add_raw(data_get)
|
||||
res_data = image_processor.generate_thumb(FILE_DW_FOLDERS+"/"+file_name, THUMB_FOLDER, TARGET_MIN_SIZE)
|
||||
if not res_data["status"]:
|
||||
print(res_data["message"])
|
||||
return jsonify({'status': 'success'})
|
||||
except requests.exceptions.RequestException as e:
|
||||
error_message = f"Network error {image_id}: {e}"
|
||||
log.send("error", "all", error_message)
|
||||
return jsonify({'status': 'error', 'message': error_message}), 500
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
error_message = f"Unknown error: {e}"
|
||||
log.send("error", "all", error_message)
|
||||
return jsonify({'status': 'error', 'message': error_message}), 500
|
||||
else:
|
||||
pass
|
||||
return "", 204
|
||||
|
||||
Reference in New Issue
Block a user