Bash Youtube Abo: Unterschied zwischen den Versionen
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…“) |
|||
| (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, 13: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
|