153 lines
4.0 KiB
Plaintext
153 lines
4.0 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Führen Sie in einem Jupyter Notebook die folgenden Aufgaben durch:\n",
|
|
"\n",
|
|
"- Verwenden Sie das requests-Modul.\n",
|
|
"- Legen Sie in einer Variable die ID eines Star-Wars-Charakters fest.\n",
|
|
"- Verwenden Sie die API unter https://swapi.tech/api, um die Daten dieses Charakters zu laden.\n",
|
|
"- Geben Sie den Namen des Charakters aus.\n",
|
|
"- Werten Sie den Rückgabewert aus, um die Filme zu finden, in denen der gewählte Charakter mitspielt.\n",
|
|
"- Laden Sie über die API diese Filme.\n",
|
|
"- Geben Sie die Titel der Filme in einer Liste aus.\n",
|
|
"- Erstellen Sie auf https://studio.apollographql.com/public/star-wars-swapi/variant/current/explorer eine Abfrage, mit der Sie dieselben Daten mit einer einzigen Anfrage holen können. Holen Sie dabei nur die minimal erforderlichen Felder ab.\n",
|
|
"- Dokumentieren Sie diesen Query im Jupyter-Notebook als mehrzeilige Zeichenkette.\n",
|
|
"- Geben Sie im Anschluss diese Datei hier ab."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Character Name: Luke Skywalker\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import requests\n",
|
|
"\n",
|
|
"# Set character ID\n",
|
|
"character_id = '1'\n",
|
|
"\n",
|
|
"# Get character data from SWAPI\n",
|
|
"char_url = f\"https://swapi.tech/api/people/{character_id}/\"\n",
|
|
"resp = requests.get(char_url)\n",
|
|
"resp.raise_for_status()\n",
|
|
"\n",
|
|
"character_data = resp.json()['result']['properties']\n",
|
|
"print(f\"Character Name: {character_data['name']}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Films with Luke:\n",
|
|
"['A New Hope', 'The Empire Strikes Back', 'Return of the Jedi', 'Revenge of the Sith']\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import requests\n",
|
|
"\n",
|
|
"films_url = \"https://swapi.tech/api/films/\"\n",
|
|
"\n",
|
|
"resp = requests.get(films_url)\n",
|
|
"resp.raise_for_status()\n",
|
|
"\n",
|
|
"films: list[dict] = resp.json()['result']\n",
|
|
"\n",
|
|
"def filter_for_char(film: dict) -> bool:\n",
|
|
" props = film['properties']\n",
|
|
" characters = props['characters']\n",
|
|
"\n",
|
|
" return character_id in [character.split('/')[-1] for character in characters]\n",
|
|
"\n",
|
|
"films_with_luke = filter(filter_for_char, films)\n",
|
|
"\n",
|
|
"films_titles = [film['properties']['title'] for film in films_with_luke]\n",
|
|
"\n",
|
|
"print(\"Films with Luke:\")\n",
|
|
"print(films_titles)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
"GraphQL Query:\n",
|
|
"\n",
|
|
"query CharacterWithFilms {\n",
|
|
" person(personID: 1) {\n",
|
|
" name\n",
|
|
" filmConnection {\n",
|
|
" films {\n",
|
|
" title\n",
|
|
" }\n",
|
|
" }\n",
|
|
" }\n",
|
|
"}\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"graphql_query = \"\"\"\n",
|
|
"query CharacterWithFilms {\n",
|
|
" person(personID: 1) {\n",
|
|
" name\n",
|
|
" filmConnection {\n",
|
|
" films {\n",
|
|
" title\n",
|
|
" }\n",
|
|
" }\n",
|
|
" }\n",
|
|
"}\n",
|
|
"\"\"\"\n",
|
|
"\n",
|
|
"print(f\"\\nGraphQL Query:\\n{graphql_query}\")"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": ".venv (3.13.3)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.13.3"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|