Spaces:
Sleeping
Sleeping
# %% | |
# https://towardsdatascience.com/connecting-to-a-graphql-api-using-python-246dda927840 | |
import requests | |
import json | |
import jsonlines | |
import pandas as pd | |
import pyarrow as pa | |
import pyarrow.json as pj | |
# %% | |
query = """ | |
query { | |
characters { | |
results { | |
name | |
status | |
species | |
type | |
gender | |
} | |
} | |
} | |
""" | |
query = """ | |
query { | |
characters { | |
results { | |
name | |
status | |
species | |
type | |
gender | |
image | |
episode{ | |
episode | |
name | |
air_date | |
} | |
} | |
} | |
} | |
""" | |
# %% | |
url = 'https://rickandmortyapi.com/graphql/' | |
r = requests.post(url, json={'query': query}) | |
print(r.status_code) | |
print(r.text) | |
# %% | |
json_data = json.loads(r.text) | |
# %% | |
df_data = json_data['data']['characters']['results'] | |
df = pd.json_normalize(df_data) | |
# %% | |
# https://blog.softhints.com/python-convert-json-to-json-lines/ | |
with jsonlines.open('output.jsonl', mode='w') as writer: | |
writer.write_all(df_data) | |
# %% | |
datjl = pd.read_json("output.jsonl", lines=True) | |
# %% | |
pj.read_json("output.jsonl", parse_options = pj.ParseOptions(newlines_in_values=True)) | |
# %% | |
# if we want to convert the format to JSON arrays. | |
# df_data = json_data['data']['characters']['results'] | |
# for i, value in enumerate(df_data): | |
# print(i) | |
# idat = df_data[i].copy() | |
# number = list() | |
# name = list() | |
# airdate = list() | |
# for j, jvalue in enumerate(idat['episode']): | |
# iseason = idat['episode'][j] | |
# number.append(iseason['episode']) | |
# name.append(iseason['name']) | |
# airdate.append(iseason['air_date']) | |
# df_data[i]['episode'] = { | |
# 'number':number, | |
# "name":name, | |
# "air_date":airdate} |