У меня есть следующий код, который я написал для работы с запросами. Это дает мне только одну строку, а не все. Есть ли способ получить все строки, а не только одну? Спасибо.
#import modules
import requests
import json
import re
#retrieve lichess games for a specific user
def get_lichess_games(username):
api_session = requests.Session()
api_headers = {
'Authorization' : 'Bearer CZfakeeeeWo',
'Accept' : 'application/x-ndjson',
}
with api_session.get(f'https://lichess.org/api/games/user/{username}', headers=api_headers, stream=True) as response:
for line in response.iter_lines():
if not line:
continue
test = json.loads(line.decode('utf-8'))
return test
data = get_lichess_games(username='putismydadsdad')
print(data['id'])
Пример строки:
{'id': 'dsVb', 'rated': True, 'variant': 'standard', 'speed': 'rapid', 'perf': 'rapid', 'createdAt': 1582685880089, 'lastMoveAt': 1582686389499, 'status': 'resign', 'players': {'white': {'user': {'name': 'gibaro', 'id': 'gibaro'}, 'rating': 1511, 'ratingDiff': 5}, 'black': {'user': {'name': 'putin', 'id': 'putin'}, 'rating': 1500, 'ratingDiff': -170, 'provisional': True}}, 'winner': 'white', 'moves': 'd4 d5 Nf3 Nf6 g3 Nc6 Bg2 e6 Nc3 Bb4 Bd2 Bxc3 Bxc3 O-O b3 b5 Qd3 a5 Qxb5 Ba6 Qxc6 Ng4 O-O Qc8 Qc5 Bxe2 Rfe1 Bxf3 Bxf3 Nxh2 Kxh2 Ra6 Qa3 f6 Qc1 e5 Bxd5+ Kh8 Bg2 exd4 Bxd4 c5 Bc3 a4 Qf4 g5 Qc4 Qf5 Qxa6 Qxf2 Qf1 Qxc2 Bxf6+ Rxf6 Qxf6+ Kg8', 'clock': {'initial': 600, 'increment': 0, 'totalTime': 600}}
Итак, проблема в возврате. Я могу полностью отключить return и заменить его на print(['test']) и получить все свои строки.
Но моя конечная цель — создать функцию, которая извлекает все значения и передает их в конвейер. Тогда я могу просто вызвать свою функцию в разных местах и запросить разные данные в этих ситуациях. Итак примеры;
get_lichess_games(username='putin')
print ids this time
get_lichess_games(username='putin')
print winners this time
get_lichess_games(username='putin')
print moves this time
Подробнее здесь: https://stackoverflow.com/questions/679 ... every-line
Как использовать iter_lines для отображения каждой строки? ⇐ Python
Программы на Python
-
Anonymous
1770896929
Anonymous
У меня есть следующий код, который я написал для работы с запросами. Это дает мне только одну строку, а не все. Есть ли способ получить все строки, а не только одну? Спасибо.
#import modules
import requests
import json
import re
#retrieve lichess games for a specific user
def get_lichess_games(username):
api_session = requests.Session()
api_headers = {
'Authorization' : 'Bearer CZfakeeeeWo',
'Accept' : 'application/x-ndjson',
}
with api_session.get(f'https://lichess.org/api/games/user/{username}', headers=api_headers, stream=True) as response:
for line in response.iter_lines():
if not line:
continue
test = json.loads(line.decode('utf-8'))
return test
data = get_lichess_games(username='putismydadsdad')
print(data['id'])
Пример строки:
{'id': 'dsVb', 'rated': True, 'variant': 'standard', 'speed': 'rapid', 'perf': 'rapid', 'createdAt': 1582685880089, 'lastMoveAt': 1582686389499, 'status': 'resign', 'players': {'white': {'user': {'name': 'gibaro', 'id': 'gibaro'}, 'rating': 1511, 'ratingDiff': 5}, 'black': {'user': {'name': 'putin', 'id': 'putin'}, 'rating': 1500, 'ratingDiff': -170, 'provisional': True}}, 'winner': 'white', 'moves': 'd4 d5 Nf3 Nf6 g3 Nc6 Bg2 e6 Nc3 Bb4 Bd2 Bxc3 Bxc3 O-O b3 b5 Qd3 a5 Qxb5 Ba6 Qxc6 Ng4 O-O Qc8 Qc5 Bxe2 Rfe1 Bxf3 Bxf3 Nxh2 Kxh2 Ra6 Qa3 f6 Qc1 e5 Bxd5+ Kh8 Bg2 exd4 Bxd4 c5 Bc3 a4 Qf4 g5 Qc4 Qf5 Qxa6 Qxf2 Qf1 Qxc2 Bxf6+ Rxf6 Qxf6+ Kg8', 'clock': {'initial': 600, 'increment': 0, 'totalTime': 600}}
Итак, проблема в возврате. Я могу полностью отключить return и заменить его на print(['test']) и получить все свои строки.
Но моя конечная цель — создать функцию, которая извлекает все значения и передает их в конвейер. Тогда я могу просто вызвать свою функцию в разных местах и запросить разные данные в этих ситуациях. Итак примеры;
get_lichess_games(username='putin')
print ids this time
get_lichess_games(username='putin')
print winners this time
get_lichess_games(username='putin')
print moves this time
Подробнее здесь: [url]https://stackoverflow.com/questions/67954395/how-to-use-iter-lines-to-show-every-line[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия