Bash Youtube Abo: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Die Seite wurde neu angelegt: „= Stufe 1 = * Erstellen Sie ein Skript welches den Wert von '''rssUrl''' eines Youtube-Kanals herausfindet * Rufen Sie mit '''curl''' die Seite auf und extrahi…“
 
Keine Bearbeitungszusammenfassung
 
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Ein Skript, das automatisch neue Youtube-Videos öffnet.
= Stufe 1 =
= Stufe 1 =
* Erstellen Sie ein Skript welches den Wert von '''rssUrl''' eines Youtube-Kanals herausfindet
* Erstellen Sie ein Skript welches den Wert von '''rssUrl''' eines Youtube-Kanals herausfindet
Zeile 8: Zeile 10:
* Falls ein Video-Link schon dort gespeichert wurden, sollte es nicht mehr aufgerufen werden
* Falls ein Video-Link schon dort gespeichert wurden, sollte es nicht mehr aufgerufen werden


== Lösung ==
{| class="mw-collapsible mw-collapsed wikitable"
|-
! Lösung
|-
|
<syntaxhighlight lang=bash>
#!/bin/bash
# Lade die HTML-Seite für den YT-Kanal herunter und suche nach "rssUrl"
rss_url=$(curl --no-progress-meter $variabler_kanal | grep -oP 'rssUrl":"\K[^"]+')
# Rufe die "rssUrl" auf und suche alle YT-Video-Links heraus
video_links=$(curl --no-progress-meter $rss_url | grep '<link rel="alternate"' | sed '1d' | cut -d '"' -f 4)
## Gehe einzeln alle Video-Links durch
for link in $video_links
do
        if grep $link ~/.cache/schon-gesehen
        then
                echo schon gesehen
        else
                firefox $link &
                echo $link >> ~/.cache/schon-gesehen
        fi
done
</syntaxhighlight>
|}
= Stufe 3 =
= Stufe 3 =
* Erweitern Sie das Skript, sodass mehrere Youtube-Kanäle abgerufen werden können
* Erweitern Sie das Skript, sodass mehrere Youtube-Kanäle abgerufen werden können
* Falls der Wert von '''rssUrl''' nicht existiert, sollte der Kanal übersprungen werden
== Lösung ==
{| class="mw-collapsible mw-collapsed wikitable"
|-
! Lösung
|-
|
<syntaxhighlight lang=bash>
#!/bin/bash
# Durchlaufe alle Kanäle
for variabler_kanal in $*
do
        # Lade die HTML-Seite für den YT-Kanal herunter und suche nach "rssUrl"
        rss_url=$(curl --no-progress-meter $variabler_kanal | grep -oP 'rssUrl":"\K[^"]+')
        # Rufe die "rssUrl" auf und suche alle YT-Video-Links heraus
        video_links=$(curl --no-progress-meter $rss_url | grep '<link rel="alternate"' | sed '1d' | cut -d '"' -f 4)
        ## Gehe einzeln alle Video-Links durch
        for link in $video_links
        do
                if grep $link ~/.cache/schon-gesehen
                then
                        echo schon gesehen
                else
                        firefox $link &
                        echo $link >> ~/.cache/schon-gesehen
                fi
        done
done
</syntaxhighlight>
|}

Aktuelle Version vom 8. November 2024, 15:16 Uhr

Ein Skript, das automatisch neue Youtube-Videos öffnet.

Stufe 1

  • Erstellen Sie ein Skript welches den Wert von rssUrl eines Youtube-Kanals herausfindet
  • Rufen Sie mit curl die Seite auf und extrahieren Sie alle Video-Links

Stufe 2

  • Erweitern Sie das Skript, sodass neue Videos durch Firefox geöffnet werden
  • Diese Video-Links sollten unter ~/.cache/schon-gesehen abgespeichert werden
  • Falls ein Video-Link schon dort gespeichert wurden, sollte es nicht mehr aufgerufen werden

Lösung

Lösung
#!/bin/bash
# Lade die HTML-Seite für den YT-Kanal herunter und suche nach "rssUrl"
rss_url=$(curl --no-progress-meter $variabler_kanal | grep -oP 'rssUrl":"\K[^"]+')
# Rufe die "rssUrl" auf und suche alle YT-Video-Links heraus
video_links=$(curl --no-progress-meter $rss_url | grep '<link rel="alternate"' | sed '1d' | cut -d '"' -f 4)
## Gehe einzeln alle Video-Links durch
for link in $video_links
do
        if grep $link ~/.cache/schon-gesehen
        then
                echo schon gesehen
        else
                firefox $link &
                echo $link >> ~/.cache/schon-gesehen
        fi
done

Stufe 3

  • Erweitern Sie das Skript, sodass mehrere Youtube-Kanäle abgerufen werden können
  • Falls der Wert von rssUrl nicht existiert, sollte der Kanal übersprungen werden

Lösung

Lösung
#!/bin/bash
# Durchlaufe alle Kanäle
for variabler_kanal in $*
do
        # Lade die HTML-Seite für den YT-Kanal herunter und suche nach "rssUrl"
        rss_url=$(curl --no-progress-meter $variabler_kanal | grep -oP 'rssUrl":"\K[^"]+')
        # Rufe die "rssUrl" auf und suche alle YT-Video-Links heraus
        video_links=$(curl --no-progress-meter $rss_url | grep '<link rel="alternate"' | sed '1d' | cut -d '"' -f 4)
        ## Gehe einzeln alle Video-Links durch
        for link in $video_links 
        do
                if grep $link ~/.cache/schon-gesehen
                then
                        echo schon gesehen
                else
                        firefox $link &
                        echo $link >> ~/.cache/schon-gesehen
                fi
        done
done