фото из ВК

This commit is contained in:
artem 2023-05-01 15:04:45 +03:00
parent 4493bbab07
commit 86d7a87fe2
4 changed files with 122 additions and 31 deletions

View File

@ -33,8 +33,14 @@
<p><input type="file" name="f" id="file-input">
<input type="submit" value="Отправить"></p>
</form>
<div id="result"></div>
<div>
<div id="upload-image">
<div id="upload-image-text"></div>
<img id="image" style="max-width: 200px;"/>
</div>
<div id="result"></div>
<div id="result-image" ></div>
</div>
</body>
</section>
<script src="static/scripts.js"></script>

View File

@ -9,6 +9,7 @@ from tensorflow.keras.utils import img_to_array
import io
import os
import json
import requests
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
@ -22,10 +23,33 @@ test_model = keras.models.load_model(model_name)
dict_names = {}
with open("beerds.json", "r") as f:
dict_names = json.loads(f.read())
for key in dict_names:
dict_names[key] = dict_names[key].replace("_", " ")
app.static("/", "index.html", name="main")
app.static("/static/", "static/", name="static")
VK_URL = "https://api.vk.com/method/"
TOKEN = "vk1.a.2VJFQn9oTIqfpVNcgk7OvxXU8TZPomCH4biRvZEZp8-tQTi8IdKajlXCY5vJbLFjjPGrRWpsM8wbG1mek2pVpktwqi1MGAFJQfQafg68buH7YiE3GtClgWhZNuDUX5PwQuANLRVh6Ao-DcN0Z-72AmWmsIKhf9A4yuE8q3O6Asn_miGvO9gUY_JpctKEVtAYIEhbJtQK7hxW8qpud8J5Vg"
headers = {"Authorization": f"Bearer {TOKEN}"}
group_id = 220240483
postfix = "?v=5.131"
IMAGES = {}
def get_images():
global IMAGES
r = requests.get(
f"{VK_URL}photos.getAll{postfix}&access_token={TOKEN}&owner_id=-{group_id}&count=200")
items = r.json().get("response").get("items")
for item in items:
for s in item.get("sizes"):
if s.get("type") != "x":
continue
IMAGES[item.get("text")] = s.get("url")
break
get_images()
@app.post("/beeds")
async def beeds(request):
body = request.files.get("f").body
@ -53,11 +77,25 @@ async def beeds(request):
if val <= 0.09:
continue
result_net[val] = dict_names[str(i)]
items_one = dict(sorted(result.items(), reverse=True))
items_two = dict(sorted(result_net.items(), reverse=True))
images = []
for item in items_one:
name = items_one[item].replace("_", " ")
if name not in IMAGES:
continue
images.append({"name": name, "url": IMAGES[name]})
for item in items_two:
name = items_two[item].replace("_", " ")
if name not in IMAGES:
continue
images.append({"name": name, "url": IMAGES[name]})
return json_answer({
"results": dict(sorted(result.items(), reverse=True)),
"results_net": dict(sorted(result_net.items(), reverse=True)),
"results": items_one,
"results_net": items_two,
"images": images,
})
if __name__ == "__main__":
app.run(auto_reload=True, port=4003, host="0.0.0.0")

View File

@ -1,20 +1,30 @@
let urlCreator = window.URL || window.webkitURL;
async function SavePhoto()
{
async function SavePhoto() {
document.getElementById("result").innerHTML = "";
let photo = document.getElementById("file-input").files[0];
let formData = new FormData();
formData.append("f", photo);
let response = await fetch('/beeds', {method: "POST", body: formData});
let response = await fetch('/beeds', { method: "POST", body: formData });
if (response.ok) {
let json = await response.json();
let text = ""
let textImg = ""
let uniqChecker = {}
for (let key in json.results_net) {
text += "<div>" + json.results_net[key] + ": " + key + "</div>";
for (let imgKey in json.images) {
if (json.images[imgKey].name != json.results_net[key]) {
continue;
}
if (json.images[imgKey] == undefined) {
continue;
}
textImg += "<img src='" + json.images[imgKey].url + "'/>";
break;
}
uniqChecker[json.results_net[key]] = key;
}
for (let key in json.results) {
@ -22,8 +32,19 @@ async function SavePhoto()
continue
}
text += "<div>" + json.results[key] + ": " + key + "</div>";
for (let imgKey in json.images) {
if (json.images[imgKey].name != json.results[key]) {
continue;
}
if (json.images[imgKey] == undefined) {
continue;
}
textImg += "<img src='" + json.images[imgKey].url + "'/>";
break;
}
}
document.getElementById("result").innerHTML = text;
document.getElementById("result-image").innerHTML = textImg;
} else {
alert("Ошибка HTTP: " + response.status);
}
@ -33,5 +54,6 @@ document.getElementById("file-input").addEventListener("change", function () {
let photo = document.getElementById("file-input").files[0];
let imageUrl = urlCreator.createObjectURL(photo);
document.getElementById("image").src = imageUrl;
document.getElementById("upload-image-text").innerHTML = "Ваше изображение:";
});

View File

@ -2,8 +2,11 @@ import os
import time
import requests
# Получить токен чтобы:
# https://oauth.vk.com/oauth/authorize?client_id=51534014&display=page&scope=photos,offline&response_type=token&v=5.131&slogin_h=4984535b54c59e09ca.f1e0b6dce0d0cc82e7&__q_hash=618f24fbac4bc34edbf09b8bc503e923
#TOKEN = "vk1.a.mf4KFdN9gC14SSGDFHVwFRTpzBKBeNxkdlEe0IFlZqU5a5rHH5PwiPn5ekWnDhc94lEI5d2vtXzfxvjXRPapsQZCCt89YUwCIQB1alo06A0Iup9PCWbd6F5GayBn0TS_26N5BTQ1B7deFzi25BV3LKimP9g5ZkeoY0xhNfQ7XawPnBhhK0a2ipL5zZxygYgf"
TOKEN = "vk1.a.m92hxDp9fUi06dr424RERKOsika5s5WTNZM64XxTZbU_feIuIRQs72UH_WpeZBr0f_av3V68MvADcNyRSwPMl015aWW0EZjc0d50b8my4_w88BELd1BVT2p9o_7W0YyedfnYGGylyQzfj0jGy2Ufuc3CGFQXJjGJrnINmMSjNps84jhMk0LDqTVFG0a6VlgJ"
TOKEN = "vk1.a.2VJFQn9oTIqfpVNcgk7OvxXU8TZPomCH4biRvZEZp8-tQTi8IdKajlXCY5vJbLFjjPGrRWpsM8wbG1mek2pVpktwqi1MGAFJQfQafg68buH7YiE3GtClgWhZNuDUX5PwQuANLRVh6Ao-DcN0Z-72AmWmsIKhf9A4yuE8q3O6Asn_miGvO9gUY_JpctKEVtAYIEhbJtQK7hxW8qpud8J5Vg"
VK_URL = "https://api.vk.com/method/"
headers = {"Authorization": f"Bearer {TOKEN}"}
postfix = "?v=5.131&state=123456"
@ -11,7 +14,24 @@ group_id = 220240483
dir = "../assets/dog"
list_labels = [fname for fname in os.listdir(dir)]
r = requests.get(
f"{VK_URL}photos.getAll{postfix}&access_token={TOKEN}&owner_id=-{group_id}&count=200")
if "error" in r.json():
print("error", r.json())
exit()
items = r.json().get("response").get("items")
names = {}
for item in items:
if item.get("text") in names:
print("Doubles: ", item.get("text"))
names[item.get("text")] = True
for name in list_labels:
if name.replace("_", " ") in names:
print(f"Continue: {name}")
continue
if name in names:
print(f"Continue: {name}")
continue
max_size = 0
max_index = 0
list_data = os.listdir(os.path.join(dir, name))
@ -36,6 +56,11 @@ for name in list_labels:
server = r.json().get("server")
photos_list = r.json().get("photos_list")
hash_data = r.json().get("hash")
r = requests.post(f"{VK_URL}photos.save{postfix}", data={"album_id": album_id, "server": server,
"photos_list": photos_list, "hash": hash_data, "caption": name.replace("_", " ")}, headers=headers)
aid = r.json().get("aid")
r = requests.post(f"{VK_URL}photos.save{postfix}&hash={hash_data}", data={"album_id": aid, "server": server,
"photos_list": photos_list, "caption": name.replace("_", " "), "group_id": group_id}, headers=headers)
if "error" in r.json():
print("error", r.json())
break
print(f"Created: {name}")
time.sleep(1)