вызов функции Python (библиотека requests)

Всем привет! Помогите, пожалуйста, разобраться в вызове функций на Python. у меня есть скрипт, по сути набор функций и, если правильно выражаюсь, результат выполнения одной функции влияет на выполнение другой. первая функция - это получение токена

def get_token():
    url = 'https://stata.com/api/sign_in'

    data = {"login":"avokado","password":"green"}',
    }

    response = requests.post(url, data=data)
    
    token = response.json()

    token = token['access_token']
    
    return token

дальше я собираю url адрес, по которому будут доступны данные

def get_url(token):
    base_url = 'https://api.stata.com/access_token='
    
    url = [
        base_url,
        token,
    ] 
    
    url = ''.join(url)
  
    return url

при вызове первой функции

get_token() 

я получаю token (70ddf80a4528436fe28223bbahe68fe150d30309) а при вызове второй функции get_url(token) я получаю адрес: 'https://api.stata.com/access_token=token' если я правильно понимаю результат вызова второй функции должен быть 'https://api.stata.com/access_token=70ddf80a4528436fe28223bbahe68fe150d30309' ???

ну и получается третья функция

def get_data(url):
    
    res = requests.get(url=url)
    data = res.json()

    return data

с ней также возникает вопрос, точно понимаю, что вот так не сработает

get_data(url)

Благодарю за любую помощь, ответы, направление на ресурсы


Ответы (1 шт):

Автор решения: Namerek

Если в 2‑х словах, то вот так как-то.
datetime использовал для демонстрации возможностей так сказать.

Сборку url через Url сделал для наглядности. Мне, к примеру так удобней с динамическим набором параметров работать. Тем более когда их много

from datetime import datetime
from urllib3.util import Url
from urllib.parse import urlencode

import requests

data = {"login":"avokado","password":"green"}

response = requests.get(
    'https://api.some_site.com/auth',
    data=data
)

# token = 'ad721950597208b6e79e2089a01e41fc0b9707b6'
token = response.json(object_hook=lambda x: x.get('access_token'))

group_id = '6030d723e9fa83692542a70d'

date_start = datetime(2022, 5, 10, 21, 0, 0)
date_end = datetime(2022, 5, 14, 21, 0, 0)


url = Url(
    scheme='https',
    host='api.some_site.com',
    path=f'/api/nr/group/{group_id}/stats',
    query=urlencode(
        {
            'api_version': '1.1',
            'access_token': token,
            # 'date_end': '2022-05-14T21:00:00.000Z',
            # 'date_start': '2022-05-10T21:00:00.000Z',
            'date_end': date_end.isoformat(),
            'date_start': date_start.isoformat(),
            'granularity': 'day'
        },
        safe=':'
    )
)
response = requests.get(url)

Если дату через isoformat не схвает, отформатируйте через strftime

# Ну или просто 
response = requests.get(
    f'https://api.some_site.com/api/nr/group/{group_id}/stats',
    params={
        'api_version': '1.1',
        'access_token': token,
        # 'date_end': '2022-05-14T21:00:00.000Z',
        # 'date_start': '2022-05-10T21:00:00.000Z',
        'date_end': date_end.isoformat(),
        'date_start': date_start.isoformat(),
        'granularity': 'day'
    }
)
→ Ссылка