Форум сайта python.su
0
Добрый день всем.
Помогите допилить скрипт пожалуйста
Имеется скрипт постинга картинок в группу ВК
#!C:\Python27\python # -*- coding: utf-8 -*- from __future__ import division import time import requests import json import random import os import os.path vk_key = '5ec3e4d901fd32773f' # токен group_id = 00000000 # ID паблика if True: # post image import glob pics = glob.glob('pic\*') if len(pics) == 0: exit() pic2post = random.choice(pics) url = 'https://api.vk.com/method/photos.getWallUploadServer?group_id=%d&v=5.28&access_token=%s' %(group_id, vk_key) resp = requests.get(url).json()['response'] upload_url = resp['upload_url'] files = {'file1': open(pic2post,'rb')} resp = requests.post(upload_url, files=files) resp = resp.json() server = resp['server'] photo = resp['photo'] hash = resp['hash'] time.sleep(0.4) url = 'https://api.vk.com/method/photos.saveWallPhoto?group_id=%s&server=%s&photo=%s&hash=%s&v=5.28&access_token=%s' %(group_id, server, photo, hash, vk_key) resp = requests.get(url).json()['response'] resp = resp[0] photo_id = resp['id'] owner_id = resp['owner_id'] atts = 'photo%s_%s' %(owner_id, photo_id) time.sleep(0.4) url = 'https://api.vk.com/method/wall.post?owner_id=%s&from_group=1&attachments=%s&v=5.28&access_token=%s' %(-group_id, atts, vk_key) resp = requests.get(url).json()['response'] files = 0 os.system('del %s' %pic2post)
Отредактировано ubomj (Авг. 14, 2015 22:43:20)
Офлайн
88
Сохранять состояние и ловить исключения.
Офлайн
33
ubomjЗапилить код в таск и добавить в очередь.
Как сделать перезапуск при таких ошибках.. ?
Отредактировано Budulianin (Авг. 14, 2015 23:01:02)
Офлайн
0
ShamanНу это понятно…
Сохранять состояние и ловить исключения.
#подгрузка данных while True: try: #тело скрипта except: pass
Отредактировано ubomj (Авг. 15, 2015 00:51:04)
Офлайн
88
ubomjМожно так:
А вот как сделать исключением *забаненый аккаунт*, *не правильный пароль* и *лимит постов в группе*?
class BannedAccount(Exception): pass def attempts(tries=3, delay=0.1, exception=Exception): def deco(func): def wrap(*args, **kwargs): from time import sleep for t in xrange(tries, 0, -1): try: return func(*args, **kwargs) except exception as e: if t > 1: sleep(delay) continue else: raise e return wrap return deco @attempts(5, 1, BannedAccount) def foo(): print 'Try' if 'BlahBlahBlah': raise BannedAccount('BlahBlahBlah') foo()
Офлайн