Tiendil
[НБ] Магистр
могущество: 14174
разработчик
дварф Халлр
90 уровня
Нет, плюс принцип работы квестов будет меняться (когда-нибудь).
Mefi
без гильдии
могущество: 11817
длань судьбы
эльф Максиэн
125 уровня
Напомню, что у городов и Мастеров давненько уже не приходят в данных проекта значения "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
[НБ] Магистр
могущество: 14174
разработчик
дварф Халлр
90 уровня
Mefi
без гильдии
могущество: 11817
длань судьбы
эльф Максиэн
125 уровня
Tiendil
Есть подозрения, что в прошлый раз вы уже открывали такую же задачу.

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



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

мужчина Анцифер
80 уровня
Помогите нубу авторизоваться через 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"}

Что я делаю не так и как мне это исправить?
Бадж
[ᎪᏒᏚ] Рекрут
могущество: 836
длань судьбы
дварф Эйрик
82 уровня
Попробуй добавить: 'referer': 'https://the-tale.org/'
Три страницы назад, в этой теме, было обсуждение проблемы, того что логин не проходит если referer не задан.

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

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



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

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

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

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

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



Сообщение изменено
Бадж
[ᎪᏒᏚ] Рекрут
могущество: 836
длань судьбы
дварф Эйрик
82 уровня
У меня вот такой вариант сработал
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

мужчина Анцифер
80 уровня
От всей души благодарю, действительно так сработало