Гость Опубликовано: 29 октября 2020 Опубликовано: 29 октября 2020 (изменено) Всем привет!Недавно гильдиям исполнилось 3 года и мы с EvilSkyV сделали парсер гильдий для постов одной группы. Сейчас я решил поделиться этим парсером со всеми, чтобы все могли в любой момент узнать всю интересующую их информацию. Ниже будет инструкция по установке парсера. Заходим на оф. сайт PythonКачаем питонУстанавливаемСкачиваем файл или открываем текстовый документ и вставляем код ниже (сохранить нужно как угодно, но в конце .py [не русское ру])Если хотите, можете отредактировать код.Добавляем Api DevЗапускаемЖдем 3-4 часа (можно делать что угодно, но не закрывать файл/консоль/хз где вы будете открывать этот файл)Профит. Ссылка на файл: *тык* Код: #импорт библиотек :) from requests import get from time import sleep #импорт библиотек :) api = "&token=ВАШ /API DEV ТОКЕН СЮДА" #ваш /api dev токен. #тип переменные. можно было и без них, но мне так удобнее. end_line = 0 guilds = 0 errors = 0 total_coins = 0 total_exp = 0 total_players = 0 admin = 0 chief = 0 warden = 0 moder = 0 organizer = 0 dev = 0 youtube = 0 maplead = 0 builder = 0 immortal = 0 holy = 0 premium = 0 vip = 0 players = 0 x = 0 rankss = ["PLAYER", "VIP", "PREMIUM", "HOLY", "IMMORTAL", "BUILDER", "MAPLEAD", "YOUTUBE", "DEV", "ORGANIZER", "MODER", "WARDEN", "CHIEF", "ADMIN"] rankz = [players, vip, premium, holy, immortal, builder, maplead, youtube, dev, organizer, moder, warden, chief, admin] #тип переменные. можно было и без них, но мне так удобнее. while x < 10: #пока гильдии есть. x += 1 #прибавляем кол-во гильдий. req_guild = get("https://api.vimeworld.ru/guild/get?id=" + str(x) + api).json() #берем инфу с api вайма. if "error" in req_guild: #тут мы проверяем есть ли ошибка. if "error_code" in req_guild["error"]: #ошибка возникает если гильдия не найдена (удалена/не создана). guilds += 1 #guilds - кол-во гильдий. errors += 1 #errors - кол-во ошибок. end_line += 1 #end_line - если слишком много ошибок, то это скорее всего конец списка гильдий. на момент 2020.10.29 их около 30к. Если будет меньше 30к и останавливать программу, вбахайте 200-300. if end_line > 100: #проверка если это происходит. break #блок кода, а следовательно вывод всей инфы ниже. else: #бывает также ситуация, когда прокает "error" в нике, названии гильдии или другой фигне и, если 2 уровень проверки дал нам знать, что это не ошибка, продолжаем сбор информации. guilds += 1 #прибавляем гильдию в общий список. total_coins += req_guild["totalCoins"] #собираем общее кол-во монет. total_coins += req_guild["totalExp"] #собираем общее кол-во опыта. total_players += len(req_guild["members"]) #собираем общее кол-во игроков. for i in range(len(req_guild["members"])): #а тут начинаются цыганские фокусы. for j in range(len(rankss)): #тут идет проверка на превилегию. if req_guild["members"][i]["user"]["rank"] == rankss[j]: #инфа о игроках с различными привилегиями выведется ниже. rankz[j] += 1 end_line = 0 #нужно сбросить end_line, чтобы программа не остановилась. мы же не хотим остановиться на 200 или 300 гильдии? else: #дальше код полностью повторяется, только в случае ниже "error" вообще нигде не присутствует. guilds += 1 total_coins += req_guild["totalCoins"] total_exp += req_guild["totalExp"] total_players += len(req_guild["members"]) for i in range(len(req_guild["members"])): for j in range(len(rankss)): if req_guild["members"][i]["user"]["rank"] == rankss[j]: rankz[j] += 1 end_line = 0 print(x) #тут просто выводится id гильдии. можно поменять x на любую интересующую вас информацию, но учтите, что в erorr нельзя просмотреть название гильдии и другую информацию. sleep(.24) #так как у нас всего 300 запросов в минуту, нам нужно ограничение. 0.24 секунд достаточно print(f"Всего было создано {str(guilds - end_line)} гильдий.") #а тут мы просто выводим информацию print(f"Из них удалено {str(errors - end_line)}.") print(f"Осталось {str(guilds - errors)} гильдий.") print(" ") print(f"За все время было набрано {str(total_exp)} опыта и {str(total_coins)} коинов.") print(" ") print(f"На данный момент во гильдиях {str(total_players)} игроков.") print(f"Из них {str(rankz[0])} Игроков, {str(rankz[0])} VIP, {str(rankz[2])} Premium, {str(rankz[3])} Holy, {str(rankz[4])} Immortal, {str(rankz[5] + rankz[6])} Билдеров, {str(rankz[7])} Ютуберов, {str(rankz[8])} Разработчиков, {str(rankz[9])} Организаторов, {rankz[10]} Модераторов, {rankz[11]} Проверенных модераторов, {rankz[12]} Главных модераторов, {rankz[13]} Админов.") input() #конец. нажмите "Enter", чтобы закрыть программу. Надеюсь вам когда-нибудь понадобится это. Удачи. :huh: Изменено 30 октября 2020 пользователем ZrangoYT
Гость Опубликовано: 30 октября 2020 Опубликовано: 30 октября 2020 услада для глазда уж... немного стыдна)да уж... немного стыдна)но код изначально делался чисто для меня, поэтому я и позволил себе такую "красоту"
Nordia Опубликовано: 30 октября 2020 Опубликовано: 30 октября 2020 да уж... немного стыдна)но код изначально делался чисто для меня, поэтому я и позволил себе такую "красоту"очень часто вижу подобное на питоне
Гость Опубликовано: 30 октября 2020 Опубликовано: 30 октября 2020 (изменено) очень часто вижу подобное на питонеПотому что дыаааа) через 3-4 часа скину норм код, тк ща в шк Изменено 30 октября 2020 пользователем ZrangoYT
BestPlayTop Опубликовано: 1 ноября 2020 Опубликовано: 1 ноября 2020 Почему-то нет проверки на ошибку связанную с тем, что закончился лимит запросов в минуту, вопрос - почему?
I_Virus_I Опубликовано: 1 ноября 2020 Опубликовано: 1 ноября 2020 Почему-то нет проверки на ошибку связанную с тем, что закончился лимит запросов в минуту, вопрос - почему?sleep(.24) #так как у нас всего 300 запросов в минуту, нам нужно ограничение. 0.24 секунд достаточно
BestPlayTop Опубликовано: 1 ноября 2020 Опубликовано: 1 ноября 2020 (изменено) sleep(.24) #так как у нас всего 300 запросов в минуту, нам нужно ограничение. 0.24 секунд достаточноВсё намного проще, там в заголовках тебе пишет сколько осталось до следующего сбрасывания лимита. Да и если пинга небольшая то 300 запросов быстро выполняются Изменено 1 ноября 2020 пользователем BestPlayTop
I_Virus_I Опубликовано: 1 ноября 2020 Опубликовано: 1 ноября 2020 Всё намного проще, там в заголовках тебе пишет сколько осталось до следующего сбрасывания лимита. Да и если пинга небольшая то 300 запросов быстро выполняютсяТы думаешь я не знаю об этом? Он решил сделать так решение этой проблемы, чем получать заголовок запроса
BestPlayTop Опубликовано: 1 ноября 2020 Опубликовано: 1 ноября 2020 Ты думаешь я не знаю об этом? Он решил сделать так решение этой проблемы, чем получать заголовок запроса А, извиняюсь, не думал что это взято с кода. Тоже такое себе решение этой проблемы на самом деле (это адресованно автору) I_Virus_I 1
Гость Опубликовано: 1 ноября 2020 Опубликовано: 1 ноября 2020 Всё намного проще, там в заголовках тебе пишет сколько осталось до следующего сбрасывания лимита. Да и если пинга небольшая то 300 запросов быстро выполняютсяХм, хорошая идея. Буду использовать в будущем.Но мой способ также имеет право на жизнь.
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВойти
Уже зарегистрированы? Войдите здесь.
Войти сейчас