from turtle import width
from urllib import response
from flask import Flask, send_file, jsonify, Markup, render_template
from PIL import Image, ImageDraw, ImageFont
import json
import io
import mimetypes
import os
import cv2
ip_run = "127.0.0.23"
port_run = 80
app = Flask(__name__)
global root_folder
root_folder = os.getcwd() + "\\"
print(root_folder)
def get_frame(file_path):
vid = cv2.VideoCapture(file_path)
fps = vid.get(cv2.CAP_PROP_FPS)
total_frames = vid.get(cv2.CAP_PROP_FRAME_COUNT)
duration_seconds = float(total_frames) / float(fps)
secs = duration_seconds // 2
fps = vid.get(cv2.CAP_PROP_FPS)
vid.set(cv2.CAP_PROP_POS_FRAMES, fps*secs)
ret, frame_res = vid.read()
color_coverted = cv2.cvtColor(frame_res, cv2.COLOR_BGR2RGB)
im = Image.fromarray(color_coverted)
datavid = Image.open("data/vid.png")
im.paste(datavid, (5, 5))
if im.width >= im.height:
widtha = 250
percent = widtha / im.width
heighta = round(im.height * percent)
else:
heighta = 250
percent = heighta / im.height
widtha = round(im.width * percent)
im = im.resize((widtha, heighta))
return im
@app.route("/")
def index():
value = Markup('The HTML String')
response = render_template("app3.html")
return response
@app.route("/autoc/")
def hentai_autoc(cut_tag):
dataf = json.load(open(root_folder+"data_info.json", "r", encoding='utf-8'))
tagss = dataf["tags"]
count = 0
list_res = []
if cut_tag[0] == "-":
prefix = "-"
cut_tag = cut_tag[1:]
else:
prefix = ""
for ii in tagss:
if ii.startswith(cut_tag, 0):
count += 1
list_res.append(prefix+ii)
json_resp = {"count":count,"list":list_res}
response = jsonify(json_resp)
response.headers.add('Access-Control-Allow-Origin', '*')
return response
@app.route("/autoc/")
def hentai_autoc_m():
dataf = json.load(open(root_folder+"data_info.json", "r", encoding='utf-8'))
tagss = dataf["tags"]
count = len(tagss)
json_resp = {"count":count,"list":tagss}
response = jsonify(json_resp)
response.headers.add('Access-Control-Allow-Origin', '*')
return response
@app.route("/search//")
def hentai_search(types, tags):
print(types)
if tags[-1] == "+":
tags = tags[:-1]
tagspmix = tags.split("+")
tagspok = []
tagspdel = []
for ttt in tagspmix:
if ttt[0] == "-":
tagspdel.append(ttt[1:])
else:
tagspok.append(ttt)
dataf = json.load(open(root_folder+"data_info.json", "r", encoding='utf-8'))
posts = dataf["data_set"]
count = 0
list_res = []
for ii in posts:
contun = 2
for dd in tagspok:
if dd in ii["tags"]:
pass
else:
contun -= 1
for dd in tagspdel:
if dd not in ii["tags"]:
pass
else:
contun -= 1
if types == "mix":
pass
else:
if ii["rating"] == types:
pass
else:
contun -= 1
if contun == 2:
if ".webm" in ii["file"] or ".mp4" in ii["file"] or ".avi" in ii["file"] or ".flv" in ii["file"]:
typef = "v"
url_thumb = "/file/thumb/"+ii["file"]+".png"
else:
typef = "i"
url_thumb = "/file/thumb/"+ii["file"]
res_post = {"tags":" ".join(ii["tags"]), "id":ii["id"], "type":typef, "rating":ii["rating"], "url_full":"/file/full/"+ii["file"], "url_thumb":url_thumb}
list_res.append(res_post)
count += 1
json_resp = {"count":count,"list":list_res}
response = jsonify(json_resp)
response.headers.add('Access-Control-Allow-Origin', '*')
return response
@app.route("/static//")
def static_a(filetype, filename):
ext = filename.split(".")[-1]
response = send_file(root_folder+"static/"+filetype+"/"+filename, mimetype=mimetypes.types_map['.'+ext])
response.headers.add('Access-Control-Allow-Origin', '*')
return response
@app.route("/file//")
def hentai_img(filetype, filename):
if filetype == "full":
ext = filename.split(".")[-1]
response = send_file(root_folder+"data_img/"+filename, mimetype="image/"+ext)
response.headers.add('Access-Control-Allow-Origin', '*')
return response
if filetype == "thumb":
ext = filename.split(".")[-1]
if ".webm.png" in filename:
images = get_frame(root_folder+"data_img/"+(filename.replace(".webm.png", ".webm")))
else:
images = Image.open(root_folder+"data_img/"+filename)
if images.width >= images.height:
widtha = 250
percent = widtha / images.width
heighta = round(images.height * percent)
else:
heighta = 250
percent = heighta / images.height
widtha = round(images.width * percent)
images = images.resize((widtha, heighta))
io_data = io.BytesIO()
if ext == "jpg":
extf = "jpeg"
else:
extf = ext
images.save(io_data, extf)
io_data.seek(0)
return send_file(io_data, mimetype="image/"+ext)
if __name__ == "__main__":
app.run(ip_run, port_run, debug=True)