Форум сайта python.su
Привет всем! Начал изучать Python 3 совсем недавно. Решил написать простенький скрипт для VK.
Вот сам код:
import os, vk_api, json, requests, time#импорт либки для роботы с дсон и импорт нттп либки from datetime import datetime #Импортируем библиотеку времени now = datetime.now() #Присваиваем "now" значение datetime.now(), чтобы сокращать # login = input("\033[1m\033[32mВведите логин:\033[0m ")#получение логина из командной строки # password = input("\033[1m\033[32mВведите пароль:\033[0m ")#получение пароля из командной строки login = 'Your Login (vk.com)' password = 'Your Password (vk.com)' http_obj = requests.get('https://oauth.vk.com/token?grant_type=password&client_id=2274003&client_secret=hHbZxrka2uZ6jB1inYsH&username='+login+'&password='+password) #собстна отправка запроса rez_json = json.loads(http_obj.text) #дабы с проще было в дальнейшем работать os.system("clear") vk_session = vk_api.VkApi(login, password) vk = vk_session.get_api() print("➣ \033[32m\033[4mВход выполнен успешно!\033[0m")#это выполняеться если иключение не обработано print('\033[37mAsses Token:',rez_json['access_token'])#если значения нет обработка исключения print("\033[1m\033[32mЛогин: \033[0m"+login+"\033[1m\033[32m\nПароль: \033[0m"+password[0:-4]+'****') def first(): try: what = int(input('\033[32m\033[1mХозяин, чего изволите? \n1)\033[0mСборать информацию о себе \n\033[32m\033[1m2)\033[0mПосмотреть инфу друга: ')) except ValueError: print('➣ \033[1m\033[31m[ERROR] Вводить только цифры\033[0m') time.sleep(0.7) first() while True: if what == 1: your() if what == 2: friend() else: print('➣ \033[1m\033[31m[ERROR]\033[0m') time.sleep(0.7) first() def friend(): print('\033[1m\033[31m-'*20+'\033[0m') try: user_get = vk.users.get(user_ids=(input('\033[1m\033[32mВведите id друга в VK: \033[0m')), fields='sex,bdate,country,city,status,online,last_seen') except vk_api.vk_api.ApiError: print('➣ \033[1m\033[31m[ERROR] id не найден. Попробуйте снова\033[0m') time.sleep(0.7) friend() name_gen = user_get[0]['first_name'] surname_gen = user_get[0]['last_name'] global online if user_get[0]['online'] == 1: online = 'В сети' last_seen = user_get[0]['last_seen']['time'] if user_get[0]['online'] == 0: online = 'Не в сети' last_seen = user_get[0]['last_seen']['time'] print('\033[1m\033[32mСтатус:\033[0m',online) global sex if user_get[0]['sex'] == 1: sex = 'Бабёна' if user_get[0]['sex'] == 2: sex = 'Мужской' if user_get[0]['sex'] == 0: sex = 'Не указан' print('\033[1m\033[32mПол: \033[0m'+sex) #print ('\033[1m\033[32mРодился: \033[0m'+user_get[0]['bdate']) print ('\033[1m\033[32mСтрана: \033[0m'+user_get[0]['country']['title']) #print ('\033[1m\033[32mГород: \033[0m'+user_get[0]['city']['title']) if 'status_audio' in user_get[0]: print ('\033[1m\033[32mСтатус (музыка): \033[0m'+user_get[0]['status_audio']['artist']+user_get[0]['status_audio']['title']) if 'status_audio' not in user_get[0]: print ('\033[1m\033[32mСтатус: \033[0m'+user_get[0]['status']) while True: more_info = input('\033[1m\033[31mНужна инфа о другом поце?\033[0m ').capitalize() if more_info == 'Да' or more_info == 'Yes' or more_info == 'Y': friend() elif more_info == 'Нет' or more_info == 'No' or more_info == 'N': break else: print('➣ \033[1m\033[31m[ERROR]\033[0m') time.sleep(0.7) continue break def your(): try: vk_session.authorization() except vk_api.AuthorizationError as error_msg: print(error_msg) return global name global surname global id_vk f = vk.users.get(name_case='nom', fields='online,last_seen') if f[0]['online'] == 1: global online online = 'В сети' last_seen = f[0]['last_seen']['time'] if f[0]['online'] == 0: online = 'Не в сети' last_seen = f[0]['last_seen']['time'] name = f[0]['first_name'] surname = f[0]['last_name'] id_vk = f[0]['id'] print('Last seen:',last_seen) print('\033[1m\033[32mИмя: \033[0m%s\n\033[1m\033[32mФамилия: \033[0m%s\n\033[1m\033[32mID:\033[0m %s\n\033[1m\033[32mСтатус: \033[0m\033[32m\033[4m%s\033[0m' % (name, surname, id_vk, online)) while True: more_info = input('\033[1m\033[31mНужна дополнительная инфа?\033[0m ').capitalize() if more_info == 'Да' or more_info == 'Yes' or more_info == 'Y': more_i() elif more_info == 'No' or more_info == 'N' or more_info == 'Нет': break else: print('➣ \033[1m\033[31m[ERROR]\033[0m') time.sleep(0.7) continue break def more_i(): f = vk.users.get(name_case='gen', fields='sex,bdate,country,city,status,online,last_seen') name_gen = f[0]['first_name'] surname_gen = f[0]['last_name'] if f[0]['online'] == 1: global online online = 'В сети' last_seen = f[0]['last_seen']['time'] if f[0]['online'] == 0: online = 'Не в сети' last_seen = f[0]['last_seen']['time'] print(online) global sex if f[0]['sex'] == 1: sex = 'Бабёна' if f[0]['sex'] == 2: sex = 'Мужской' if f[0]['sex'] == 0: sex = 'Не указан' print('\033[1m\033[32mПол: \033[0m'+sex) print ('\033[1m\033[32mРодился: \033[0m'+f[0]['bdate']) print ('\033[1m\033[32mСтрана: \033[0m'+f[0]['country']['title']) print ('\033[1m\033[32mГород: \033[0m'+f[0]['city']['title']) if 'status_audio' in f[0]: print ('\033[1m\033[32mСтатус (музыка): \033[0m'+f[0]['status_audio']['artist']+f[0]['status_audio']['title']) if 'status_audio' not in f[0]: print ('\033[1m\033[32mСтатус: \033[0m'+f[0]['status']) while True: more_info = input('\033[1m\033[31mНужна инфа о другом поце?\033[0m ').capitalize() if more_info == 'Да' or more_info == 'Yes' or more_info == 'Y': friend() elif more_info == 'No' or more_info == 'N' or more_info == 'Нет': break else: print('➣ \033[1m\033[31m[ERROR]\033[0m') time.sleep(0.7) continue
Отредактировано brainrtp (Июнь 24, 2016 09:11:42)
Офлайн
Вы знаете очень тяжело читать код без правильного оформления! кроме того там у вас пока все далеко от идеала!
Давайте так:
Вы сейчас скопируете конкретную функцию - покажете в каком этапе и куда вы что вводите и что происходит и тогда уже подумаем!
з.Ы.
elif more_info == 'No' or more_info == 'N' or more_info == 'Нет': break
Офлайн
ZerG1) Авторизуюсь (в самом начале кода ввожу свои данные, а именно логин и пароль)
Вы знаете очень тяжело читать код без правильного оформления! кроме того там у вас пока все далеко от идеала!Давайте так:Вы сейчас скопируете конкретную функцию - покажете в каком этапе и куда вы что вводите и что происходит и тогда уже подумаем!з.Ы.
#это все в конце def your: while True: more_info = input('\033[1m\033[31mНужна дополнительная инфа?\033[0m ').capitalize() if more_info == 'Да' or more_info == 'Yes' or more_info == 'Y': more_i() elif more_info == 'No' or more_info == 'N' or more_info == 'Нет': break else: print('➣ \033[1m\033[31m[ERROR]\033[0m') time.sleep(0.7) continue break
Отредактировано brainrtp (Июнь 24, 2016 09:11:31)
Прикреплённый файлы: Снимок экрана 2016-06-24 в 10.02.00.png (96,3 KБ)
Офлайн
brainrtp
А если вписать Да, срабатывает как нужно?
Офлайн
FirikДа! А если, к примеру, ничего не вводить (просто нажать Enter) то выдаст ошибку и попросит ввести заново (либо Y, либо N, ну вы поняли)
brainrtpА если вписать Да, срабатывает как нужно?
Офлайн
Странно. Попробовал на смартфоне сейчас такой код и все сработало как надо.
while True: more_info = input('\033[1\033[31mНужна дополнительная инфа?\033[0m ').capitalize() if more_info == 'Да' or more_info == 'Yes' or more_info == 'Y': print('yes selected') elif more_info == 'No' or more_info == 'N' or more_info == 'Нет': print('no selected') break else: print('➣ \033[1m\033[31m[ERROR]\033[0m') continue break
Отредактировано Firik (Июнь 24, 2016 08:49:45)
Офлайн
Так же проверил - все работает ошибку не выдает.
Версия питона у вас какая?
Офлайн
FirikСогласен, отдельно работает, но когда оно находится в функции (вроде бы def first - функция) не работает! Может быть это и не из-за функции! Но сам факт того, что не работает меня очень настораживает!
Странно. Попробовал на смартфоне сейчас такой код и все сработало как надо.
Отредактировано brainrtp (Июнь 24, 2016 09:11:05)
Офлайн
brainrtp
Могу посоветовать более информативно оформить текст ошибок. Может эта ошибка относится к другой функции и сейчас это непонятно
Офлайн
Запустите код, добейтесь что бы выскочила ошибка и скопируйте полностью ее сюда.
Офлайн