79 lines
2.6 KiB
Python
79 lines
2.6 KiB
Python
import os
|
|
import time
|
|
import requests # type: ignore
|
|
|
|
# Получить токен чтобы:
|
|
# 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 = ""
|
|
VK_URL = "https://api.vk.com/method/"
|
|
headers = {"Authorization": f"Bearer {TOKEN}"}
|
|
postfix = "?v=5.131&state=123456"
|
|
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))
|
|
for i, f in enumerate(list_data):
|
|
file_stats = os.stat(os.path.join(dir, name, f))
|
|
if file_stats.st_size > max_size:
|
|
max_size = file_stats.st_size
|
|
max_index = i
|
|
image_name = list_data[max_index]
|
|
file_stats = os.stat(os.path.join(dir, name, image_name))
|
|
r = requests.post(
|
|
f"{VK_URL}photos.createAlbum{postfix}",
|
|
data={"title": name.replace("_", " "), "group_id": group_id},
|
|
headers=headers,
|
|
)
|
|
if "error" in r.json():
|
|
print("error", r.json())
|
|
break
|
|
album_id = r.json().get("response").get("id")
|
|
r = requests.get(
|
|
f"{VK_URL}photos.getUploadServer{postfix}&album_id={album_id}&access_token={TOKEN}&group_id={group_id}"
|
|
)
|
|
url = r.json().get("response").get("upload_url")
|
|
files = {"file1": open(os.path.join(dir, name, image_name), "rb")}
|
|
r = requests.post(url, files=files)
|
|
server = r.json().get("server")
|
|
photos_list = r.json().get("photos_list")
|
|
hash_data = r.json().get("hash")
|
|
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)
|