{ "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 }