session = vk.Session(
access_token='123abc') # вместо 123abc свой токен
vk_api = vk.API(session, v='5.85')
groupID = '12345678' #id паблика vk
upload_url = vk_api.photos.getWallUploadServer(group_id=groupID)['upload_url'] #получаем сервер vk для загрузки
data = []
photo_id = 0
attachments = []
direct = 'C:/Users/jo/PycharmProjects/repost/foto' # директория для хранения фото
d = date(2019, 3, 21) # дата, с которой начинать публиковать посты
data_parsing = int(time.mktime(d.timetuple())) # перевод её в unix Формат
answer = get(
'https://api.instagram.com/v1/users/[id_inst]/media/recent?access_token=[access_token]',
verify=True).json()
if answer:
for x in answer['data']: # для каждого поста из json словаря
global photo_id # обнуляем массивы и переменные
photo_id = 0
global attachments
attachments = []
global data
data = []
date_create = x['created_time'] # date_create дата создания в Unix
if int(date_create) > data_parsing:
n = 0 # название фото по порядку
if not os.path.isdir(direct + '/' + date_create): # если нет папки создаем
os.makedirs(direct + '/' + date_create)
if 'carousel_media' in x: # если несколько фото в посте
for a in x['carousel_media']:
li = list(a.keys()) # все ключи словаря в массив
if li.count('videos') == 0: # если это не видео, мне просто они не нужны
req.urlretrieve(a['images']['standard_resolution']['url'],
"foto/" + date_create + "/" + str(n) + ".jpg") # загружаем фото к себе в папку
if x['caption'] is not None: # описание поста
text = str(x['caption']['text'])
else:
text = ' '
n = n + 1
post_foto(date_create, text)
else: # если в посте одно фото
req.urlretrieve(x['images']['standard_resolution']['url'], "foto/" + date_create + "/0.jpg")
if x['caption'] is not None: # описание поста
text = str(x['caption']['text'])
else:
text = ' '
post_foto(date_create, text)
def post_foto(date_create, text):
quantity_foto = len([name for name in os.listdir(direct + "/" + date_create) if
os.path.isfile(os.path.join(direct + "/" + date_create, name))]) # количество фото в папке
append_attach(quantity_foto, date_create)
params = {'attachments': attachments,
'message': text,
'owner_id': '-' + groupID,
'from_group': '1'}
vk_api.wall.post(**params) # публикуем пост в VK с заданными параметрами
def append_attach(x, directory): # добавление в параметры поста
for t in range(x):
upload_foto(t, directory)
global photo_id
photo_id = data[t][0]['id']
global attachments
attachments.append('photo' + str(data[t][0]['owner_id']) + '_' + str(photo_id)) # добавляем id фото в параметры поста
def upload_foto(num_foto, directory): # загрузка фото на сервер
request = requests.post(upload_url, files={'photo': open("foto/" + directory + "/" + str(num_foto) + ".jpg", "rb")})
params = {'server': request.json()['server'],
'photo': request.json()['photo'],
'hash': request.json()['hash'],
'group_id': groupID}
global data
data.append(vk_api.photos.saveWallPhoto(**params))
i = 0
for top, dirs, files in os.walk(os.getcwd()+"\\res\\"):
for nm in files:
if re.findall(r'\d\d\.\d\d\.\d\d', nm):
old_file = os.path.join(top, nm)
frq = re.findall(r'\d\d\d\d-\d\d-\d\d \d\d\.\d\d\.\d\d', str(nm))
frq = str(frq[0])
if not os.path.exists(os.getcwd()+"\\res\\" + frq):
i = 0
os.makedirs(os.getcwd() + "\\res\\" + frq)
new_file = os.path.join(os.getcwd() + "\\res\\" + frq, str(i)+'.jpg')
os.rename(old_file, new_file)
i = i+1
else:
new_file = os.path.join(os.getcwd() + "\\res\\" + frq, str(i)+'.jpg')
os.rename(old_file, new_file)
i = i+1
f = open(os.getcwd() + "\input_opis\\gusi.txt", "rt", errors="ignore", encoding='utf-8') # открываем текстовик с описаниями
data = f.read() # открываем целиком, чтобы не пропустить переносы строк
result = re.findall(r'"([^\"]*)"', data, re.S)
new_x = [el for el, _ in groupby(result)] # удаляем дубликаты из списка
dlina = new_x.__len__()
i = 1
f.close()
for top, dirs, files in os.walk(os.getcwd() + "\\res\\"): #папка с фото
for nm in dirs:
attachments = []
photo_id = 0
data = []
DIR = 'C:/Users/jo/PycharmProjects/repost/res/' + nm #путь к папке с фото
quantity_foto = len([name for name in os.listdir(DIR) if os.path.isfile(os.path.join(DIR, name))])
post_foto(quantity_foto, nm)
attachments.reverse() # разворачиваем список
params = {'attachments': attachments,
'message': new_x[dlina - i],
'owner_id': '-' + groupID,
'from_group': '1'}
vk_api.wall.post(**params)
i = i + 1
from requests import get
import urllib.request as req
import vk
import requests
import os
import time
from datetime import date
session = vk.Session(
access_token='123abc')
vk_api = vk.API(session, v='5.85')
groupID = '12345678' #id паблика vk
upload_url = vk_api.photos.getWallUploadServer(group_id=groupID)['upload_url'] #получаем сервер vk для загрузки
data = []
photo_id = 0
attachments = []
direct = 'C:/Users/jo/PycharmProjects/repost/foto' # директория для хранения фото
d = date(2019, 3, 21) # дата, с которой начинать публиковать посты
data_parsing = int(time.mktime(d.timetuple())) # перевод её в unix Формат
def upload_foto(num_foto, directory): # загрузка фото на сервер
request = requests.post(upload_url, files={'photo': open("foto/" + directory + "/" + str(num_foto) + ".jpg", "rb")})
params = {'server': request.json()['server'],
'photo': request.json()['photo'],
'hash': request.json()['hash'],
'group_id': groupID}
global data
data.append(vk_api.photos.saveWallPhoto(**params))
def append_attach(x, directory): # загрузка на сервер каждой фото из папки и добавление в параметры поста
for t in range(x):
upload_foto(t, directory)
global photo_id
photo_id = data[t][0]['id']
global attachments
attachments.append('photo' + str(data[t][0]['owner_id']) + '_' + str(photo_id)) # добавляем id фото в параметры поста
def post_foto(date_create, text):
quantity_foto = len([name for name in os.listdir(direct + "/" + date_create) if
os.path.isfile(os.path.join(direct + "/" + date_create, name))]) # количество фото в папке
append_attach(quantity_foto, date_create)
params = {'attachments': attachments,
'message': text,
'owner_id': '-' + groupID,
'from_group': '1'}
vk_api.wall.post(**params) # публикуем пост в VK с заданными параметрами
def get_all():
answer = get(
'https://api.instagram.com/v1/users/12345678/media/recent?access_token=123abc',
verify=True).json() # получаем большой массив из instagram
if answer:
for x in answer['data']: # для каждого поста из json словаря
global photo_id # обнуляем массивы и переменные
photo_id = 0
global attachments
attachments = []
global data
data = []
date_create = x['created_time'] # date_create дата создания в Unix
if int(date_create) > data_parsing:
n = 0 # название фото по порядку
if not os.path.isdir(direct + '/' + date_create): # если нет папки создаем
os.makedirs(direct + '/' + date_create)
if 'carousel_media' in x: # если несколько фото в посте
for a in x['carousel_media']:
li = list(a.keys()) # все ключи словаря в массив
if li.count('videos') == 0: # если это не видео, мне просто они не нужны
req.urlretrieve(a['images']['standard_resolution']['url'],
"foto/" + date_create + "/" + str(n) + ".jpg") # загружаем фото к себе в папку
if x['caption'] is not None: # описание поста
text = str(x['caption']['text'])
else:
text = ' '
n = n + 1
post_foto(date_create, text)
else: # если в посте одно фото
req.urlretrieve(x['images']['standard_resolution']['url'], "foto/" + date_create + "/0.jpg")
if x['caption'] is not None: # описание поста
text = str(x['caption']['text'])
else:
text = ' '
post_foto(date_create, text)
get_all()
import re
import os
i = 0
for top, dirs, files in os.walk(os.getcwd()+"\\res\\"):
for nm in files:
if re.findall(r'\d\d\.\d\d\.\d\d', nm):
old_file = os.path.join(top, nm)
frq = re.findall(r'\d\d\d\d-\d\d-\d\d \d\d\.\d\d\.\d\d', str(nm))
frq = str(frq[0])
if not os.path.exists(os.getcwd()+"\\res\\" + frq):
i = 0
os.makedirs(os.getcwd() + "\\res\\" + frq)
new_file = os.path.join(os.getcwd() + "\\res\\" + frq, str(i)+'.jpg')
os.rename(old_file, new_file)
i = i+1
else:
new_file = os.path.join(os.getcwd() + "\\res\\" + frq, str(i)+'.jpg')
os.rename(old_file, new_file)
i = i+1
import os
import vk
import requests
import re
from itertools import groupby
session = vk.Session(
access_token='123abc')
vk_api = vk.API(session, v='5.85')
groupID = '12345678'
upload_url = vk_api.photos.getWallUploadServer(group_id=groupID)['upload_url']
data = []
photo_id = 0
attachments = []
def upload_foto(num_foto, direc):
request = requests.post(upload_url, files={'photo': open('res/' + direc + "/" + str(num_foto) + ".jpg", "rb")})
params = {'server': request.json()['server'],
'photo': request.json()['photo'],
'hash': request.json()['hash'],
'group_id': groupID}
global data
data.append(vk_api.photos.saveWallPhoto(**params))
def post_foto(x, direc):
for i in range(x):
upload_foto(i, direc)
global photo_id
photo_id = data[i][0]['id']
global attachments
attachments.append('photo' + str(data[i][0]['owner_id']) + '_' + str(photo_id))
f = open(os.getcwd() + "\input_opis\\gusi.txt", "rt", errors="ignore", encoding='utf-8') # открываем текстовик с описаниями
data = f.read() # открываем целиком, чтобы не пропустить переносы строк
result = re.findall(r'"([^\"]*)"', data, re.S)
new_x = [el for el, _ in groupby(result)] # удаляем дубликаты из списка
dlina = new_x.__len__()
i = 1
f.close()
for top, dirs, files in os.walk(os.getcwd() + "\\res\\"): #папка с фото
for nm in dirs:
attachments = []
photo_id = 0
data = []
DIR = 'C:/Users/jo/PycharmProjects/repost/res/' + nm #путь к папке с фото
quantity_foto = len([name for name in os.listdir(DIR) if os.path.isfile(os.path.join(DIR, name))])
post_foto(quantity_foto, nm)
attachments.reverse() # разворачиваем список
params = {'attachments': attachments,
'message': new_x[dlina - i],
'owner_id': '-' + groupID,
'from_group': '1'}
vk_api.wall.post(**params)
i = i + 1
К сожалению, не доступен сервер mySQL