<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Requests :: Python Vorkurs</title>
    <link>/aufgaben-fuer-500/requests/index.html</link>
    <description>Mach es besser als Timo (2024) Mach es besser als Marc (2023) Wikipedia Game</description>
    <generator>Hugo</generator>
    <language>de-DE</language>
    <atom:link href="/aufgaben-fuer-500/requests/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Mach es besser als Timo (2024)</title>
      <link>/aufgaben-fuer-500/requests/001/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/aufgaben-fuer-500/requests/001/index.html</guid>
      <description>Aufgabe Nimm den in der Vorlesung am Tag 7 erarbeiteten Code und&#xA;ergänze Code ergänze Typehinting Verwende sinnvolle Variablen-, Klassen- und Funktionsnamen passe die Struktur an (Klassen und Teilfunktion) Hier der Code&#xA;import os import requests import pprint class Kadse(): &#34;&#34;&#34; Represents a cat breed with its name and age. Attributes: breed (str): The name of the cat breed. age (int): The min(lifespan) of the cat breed in years. Methods: __init__(breed: str, age: str) -&gt; None: Initializes a new Kadse instance. __str__() -&gt; str: Returns a formatted string representation of the Kadse instance. parse_age(age: str) -&gt; int: Parses the age string to extract the min(lifespan) value. &#34;&#34;&#34; def __init__(self, breed: str, age: str, eidi: str) -&gt; None: self.breed = breed self.age = self.parse_age(age) self.eidi = eidi def __str__(self) -&gt; str: return f&#39;Die Katzenrasse {self.breed} wird {self.age} Jahre alt.&#39; def parse_age(self, age: str) -&gt; int: &#34;&#34;&#34; Parses the age string to extract the lifespan value. Args: age (str): A string containing the breed name and lifespan, e.g., &#34;12-15 years&#34;. Returns: int: The parsed lifespan value in years. &#34;&#34;&#34; return int(age.split(&#39; &#39;)[0]) def get_all_the_breedz() -&gt; list[Kadse]: &#34;&#34;&#34; Fetches data about various cat breeds from The Cat API and creates instances of the Kadse class. Returns: list: A list of Kadse instances representing different cat breeds. Note: This function makes an HTTP GET request to the Cat API endpoint. &#34;&#34;&#34; breeds_endpoint = &#39;https://api.thecatapi.com/v1/breeds&#39; response = requests.get(breeds_endpoint) katzenliste = [] for kadse in response.json(): #print(kadse[&#39;name&#39;]) #print(kadse[&#39;life_span&#39;]) neue_katze = Kadse(breed=kadse[&#39;name&#39;], age=kadse[&#39;life_span&#39;], eidi=kadse[&#39;id&#39;]) katzenliste.append(neue_katze) #print(neue_katze) return katzenliste def filter_all_my_cats(katzenliste: list[Kadse], min_alter: int) -&gt; list[Kadse]: gefilterte_katzen = [] for kadse in katzenliste: if kadse.age &gt;= min_alter: #print(f&#39;{kadse.breed} käme in Frage weil alter={kadse.age}&#39;) gefilterte_katzen.append(kadse) return gefilterte_katzen def get_cat_images(katzenliste: list[Kadse]) -&gt; None: for kadse in katzenliste: response = requests.get(f&#39;https://api.thecatapi.com/v1/images/search?limit=10&amp;breed_ids={kadse.eidi}&#39;) os.makedirs(f&#39;./{kadse.eidi}&#39;) for image in response.json(): katzenbild = requests.get(image[&#39;url&#39;]) f = open(f&#39;{kadse.eidi}/{image[&#39;url&#39;].split(&#39;/&#39;)[-1]}&#39;, &#34;wb&#34;) f.write(katzenbild.content) f.close() def main(): katzenliste = get_all_the_breedz() kuerzere_katzenliste = filter_all_my_cats(katzenliste, 15) get_cat_images(kuerzere_katzenliste) if __name__ == &#39;__main__&#39;: main()</description>
    </item>
    <item>
      <title>Mach es besser als Marc (2023)</title>
      <link>/aufgaben-fuer-500/requests/002/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/aufgaben-fuer-500/requests/002/index.html</guid>
      <description>Aufgabe Nimm den in der Vorlesung am Tag 6 erarbeiteten Code und&#xA;ergänze Code ergänze Typehinting passe die Struktur an (Klassen und Teilfunktion) Hier der Code&#xA;import requests from pprint import pprint def getAllTheCatsBreeds() -&gt; list[dict]: &#34;&#34;&#34; Holt eine Liste von Katzenrassen ab. Die Katzenrassen werden als Dictionaries empfangen. Todo: Erstelle Kadsenrassenklasse &#34;&#34;&#34; baseurl = &#39;https://api.thecatapi.com/v1&#39; antwort = requests.get(f&#39;{baseurl}/breeds&#39;) return antwort.json() def filterKadsen(kadsenrasse : dict, minimal_benötigtes_alter : int = 15) -&gt; bool: &#34;&#34;&#34; Nimmt eine Kadsenrasse entgegen und entscheidet, ob die Kadsenrasse für Marcs hohe Ansprüche geeignet ist. TODO: Was ist Schönheit? &#34;&#34;&#34; # min_alter = int(kadsenrasse[&#39;life_span&#39;].split(&#39; &#39;)[0]) max_alter = int(kadsenrasse[&#39;life_span&#39;].split(&#39; &#39;)[-1]) # Der Marc möchte, dass seine Kadse mind. so alt werden kann # wie das minimal benötigte alter if max_alter &gt; minimal_benötigtes_alter: # TODO: Was ist eigentlich Schönheit? return True else: return False def ladeKadsenRunter(kadsenrasse : dict): breed_id = kadsenrasse[&#39;id&#39;] kadsenurl = f&#39;https://api.thecatapi.com/v1/images/search?limit=2&amp;breed_ids={breed_id}&amp;api_key=REPLACE_ME&#39; antwort_der_webseite = requests.get(kadsenurl).json() links_zu_den_kadsen = [] for antwort in antwort_der_webseite: links_zu_den_kadsen.append(antwort[&#39;url&#39;]) for kadsen_url in links_zu_den_kadsen: # Datei Öffnen kadsen_dateiname = f&#34;./images/{breed_id}_{kadsen_url.split(&#39;/&#39;)[-1]}&#34; kadsen_datei = open(kadsen_dateiname, &#39;wb&#39;) kadsen_daten = requests.get(kadsen_url) kadsen_datei.write(kadsen_daten.content) kadsen_datei.close() def main(): kadsenrassen = getAllTheCatsBreeds() for kadsenrasse in kadsenrassen: if filterKadsen(kadsenrasse): # Die Kadsenrasse passt zu Marcs hohen Ansprüchen print(f&#34;Rasse: {kadsenrasse[&#39;name&#39;]} Alter: {kadsenrasse[&#39;life_span&#39;]} BreedID: {kadsenrasse[&#39;id&#39;]}&#34;) ladeKadsenRunter(kadsenrasse) if __name__ == &#39;__main__&#39;: main()</description>
    </item>
    <item>
      <title>Wikipedia Game</title>
      <link>/aufgaben-fuer-500/requests/003/index.html</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/aufgaben-fuer-500/requests/003/index.html</guid>
      <description>Aufgabe Eine simple aber geniale Idee: Im Wikipedia-Game klickt ihr euch von Link zu Link, um einen ganz bestimmten Artikel zu erreichen. Da wir es aber kompliziert lieben sollen Sie das Spiel für die Konsole Implementieren.&#xA;Beginnend bei dem Artikel zu Frühstücksfleisch1 soll der Nutzer alle möglichen Links mit entsprechendem Index angezeigt bekommen. Dafür sollen Sie diese vorgefertigte URL der Wikipedia API2 verwenden. Per input() kann der Nutzer den Index seiner Wahl eingeben und ihr Skript lädt die nächsten Links nach. Das Spiel ist gewonnen, sobald der Artikel mit dem Namen Python (Programmiersprache)3 erreicht ist.</description>
    </item>
  </channel>
</rss>