Tiendil
[НБ] Магистр
могущество: 14304
разработчик
дварф Халлр
91 уровня
Нет, плюс принцип работы квестов будет меняться (когда-нибудь).
Mefi
[LjUA] Командор
могущество: 13347
длань судьбы
эльф Максиэн
128 уровня
Напомню, что у городов и Мастеров давненько уже не приходят в данных проекта значения "positive_power" и "negative_power"/
Вот как сейчас приходит

"job": {"effect": 4, "name": "подготовка праздников", "power_required": 51522}
"job": {"effect": 2, "name": "помощь городской страже", "power_required": 11040}

Как заявлено в документации:

<job_info> = {
"name": "строка", // название проекта
"effect": <целое число>, // тип эффекта по завершению проекта
"positive_power": <целое число>, // накопленное положительное влияние
"negative_power": <целое число>, // накопленное отрицательное влияние
"power_required": <целое число> // требуемое влияние
}
Tiendil
[НБ] Магистр
могущество: 14304
разработчик
дварф Халлр
91 уровня
Mefi
[LjUA] Командор
могущество: 13347
длань судьбы
эльф Максиэн
128 уровня
Tiendil
Есть подозрения, что в прошлый раз вы уже открывали такую же задачу.

UPD: Но я её не нашел.



Сообщение изменено
Ancifer
[-☀-] Боец
могущество: 78

мужчина Анцифер
84 уровня
Помогите нубу авторизоваться через API, толку у меня весьма мало и хватило меня только на:

import requests

client = requests.session()
client.get('https://the-tale.org/accounts/auth/api/login')

if 'csrftoken' in client.cookies:
csrftoken = client.cookies
else:
csrftoken = client.cookies

res = requests.post('https://the-tale.org/accounts/auth/api/login?api_version=1.0&api_client=dlardashev-1&email=hide&password=hide&remember=true&csrfmiddlewaretoken={}'.format(csrftoken))

print(res.text)

На что я получаю ошибку:
{"error": "Неверный csrf токен. Если Вы обычный игрок, возможно, Вы случайно разлогинились — обновите страницу и снова войдите в игру. Если Вы разработчик, проверьте формирование своего запроса. ", "code": "common.csrf", "status": "error"}

Что я делаю не так и как мне это исправить?
Бадж
[ARS] Рекрут
могущество: 847

дварф Эйрик
85 уровня
Попробуй добавить: 'referer': 'https://the-tale.org/'
Три страницы назад, в этой теме, было обсуждение проблемы, того что логин не проходит если referer не задан.

Может вот это поможет: https://toster.ru/q/175079
CrazyNiger
[DRAGO] Магистр
могущество: 7871
длань судьбы
мужчина Злобный Дракон
260 уровня
Ancifer
Насколько помню, в пост запросы надо было обязательно Content-Length корректный добавлять.

UPD
Вот тут на GitHube мой вариант клиента для API (на ноде правда)



Сообщение изменено
Ancifer
[-☀-] Боец
могущество: 78

мужчина Анцифер
84 уровня
Благодарю за подсказки, попробовал, но пока так и не получилось ничего. Трудный он, первый опыт программирования :-D
Ancifer
[-☀-] Боец
могущество: 78

мужчина Анцифер
84 уровня
Попробовал куки получить по-другому:

import sys
import requests

client = requests.session()
URL = 'https://the-tale.org/accounts/auth/api/login'
client.get(URL)

d={}
for x in client.cookies:
d = x.value

res = requests.post('https://the-tale.org/accounts/auth/api/login?api_version=1.0&api_client=dlardashev-1&email=hide&password=hide&remember=true&csrfmiddlewaretoken={}'.format(d))

print (res.text)

Результат - тот же, может еще у кого какие-то идеи есть? Мне кажется тут не хватает какой-то мелочи...

PS у меня почему-то не покаывает format(d)), хотя в сообщении оно есть, не знаю как у вас. В общем токен я посылаю именно тот ,который мне дает метод, проверял, но вот результата не могу добиться.



Сообщение изменено
Ancifer
[-☀-] Боец
могущество: 78

мужчина Анцифер
84 уровня
Сообщение удалено автором



Сообщение изменено
Бадж
[ARS] Рекрут
могущество: 847

дварф Эйрик
85 уровня
У меня вот такой вариант сработал
import sys
import requests

client = requests.session()
URL = 'https://the-tale.org/accounts/auth/api/login'
client.get(URL)

csrftoken = ''
cookies = client.cookies
for x in client.cookies:
if x.name == 'csrftoken':
csrftoken = x.value

headers = {'referer': 'https://the-tale.org/'}

urlAuth = 'https://the-tale.org/accounts/auth/api/login?api_version=1.0&api_client=Badj-0.002'
session = requests.Session()
data = {'email': '@yandex.ru',
'password': '000000', 'csrfmiddlewaretoken': csrftoken}
res = session.post(urlAuth, data=data, headers=headers, cookies=cookies)

print(res.text)

Ancifer
[-☀-] Боец
могущество: 78

мужчина Анцифер
84 уровня
От всей души благодарю, действительно так сработало
Silent Wrangler
[​ϟ] Командор
могущество: 16553
длань судьбы
гоблин Генджис
101 уровня
Что-то случилось с API помощи. Из консоли хрома отправил запрос, выдаёт 404

help = function(){
fetch("https://the-tale.org/game/abilities/help/api/use?api_version=1.0&api_client=browser-1.0")
.then(res=>res.json())
.then(console.log)
}

В логах
{error: "Извините, запрашиваемая Вами страница не найдена.", status: "error", code: "common.404"}
Tiendil
[НБ] Магистр
могущество: 14304
разработчик
дварф Халлр
91 уровня
Если я правильно понимаю, то fetch делает GET запрос, а надо POST
Silent Wrangler
[​ϟ] Командор
могущество: 16553
длань судьбы
гоблин Генджис
101 уровня
Tiendil
спасибо, забыл про это.