Я пытаюсь разобрать URL-адреса по одному, учитывая, что каждый вызов read () возвращает часть данных. У меня есть один владелец (учетная запись GitHub), одно или несколько хранилищ и один или несколько ресурсов (проблемы, фиксации и т. Д.). Класс должен выполнять итерацию каждой комбинации репозитория и ресурсов, когда пользователь вызывает read ()
многократно. Проблема заключается в том, что он не повторяет каждую комбинацию между владельцем, репозиториями и ресурсами. Вот мой код до сих пор:
import requests
class GitHub():
def __init__(self, owner, repositories, resources):
self.owner = owner
self.repositories = repositories
self.resources = resources
def read(self):
for rep in self.repositories:
for res in self.resources:
url = 'https://api.github.com/repos/{}/{}/{}'.format(self.owner, rep, res)
result = requests.get(url)
if result.status_code == 200:
json_res = result.json()
return json_res
else:
print(result.text)
print(result.status_code)
gh = GitHub('example', ['example1', 'example2'], ['issues','pulls'])
data = gh.read()
UPDATE
class GitHub():
def __init__(self, owner, repositories, resources):
self.owner = owner
self.repositories = repositories
self.resources = resources
def create_list(self):
for rep in self.repositories:
for res in self.resources:
url = 'https://api.github.com/repos/{}/{}/{}'.format(self.owner, rep, res)
result = requests.get(url)
if result.status_code == 200:
json_res = result.json()
print(json_res)
else:
print(result.text)
print(result.status_code)
break
yield
gh = GitHub('moby', ['moby', 'buildkit'], ['issues','pulls'])
data = gh.create_list()
while data is not None:
try:
next(data)
data = gh.create_list()
except StopIteration:
break
Мне только что удалось получить эту форму кода. Теперь, когда я пытаюсь выполнить код, он выполняет итерацию по тому же URL (.../moby/moby/issues
), не принимая следующее значение из self.resources
(в методе create_list
). Где я не прав?