Tagged in: script

2026 på det mørke nettet?

I går kveld synte eg eldstesonen Youtube ufiltrert. Berre med å gå til framsida der, vart me møtte av to videoar som var reklame, men utgav seg for å vera søkeresultat. «Enshittification» (Doctorow) heiter det på godt norsk.

Går me attende kun nokre få år (2023), var ståa ein annan.

Ikkje berre har søkeresultata vorte dårlegare, men dei har og vorte færre.

Så kva gjer ein stakkars småbarnsfar med 60 studiepoeng i IKT i læring og ein mangeårig interesse for EDB? Lagar eit lite shellscript. Eg har ikkje stålkontroll, men kan nok til å få til dette. Og det er gøy!

Sidan eg har Linux på alle mine datamaskinar (det er nokre…..), har eg som regel oppe eit svart terminalvindu likevel. Eg har og installert videoframsynaren mpv, og youtube-dl (ca…).

Og det er på den måten at eg heilt reklamefritt, og doomscrollefritt, utan eit einaste bilete å freista meg med, kan søka på youtube.com frå terminalvindauget mitt.

Eg får opp 25 resultat pr. side, og skriv så inn talet fremt, og trykker på enter.

Godt nytt år på den «mørke» webben. 😉

Ps. og for Kjetil sin del;

#!/usr/bin/env bash

# Get the user's query for the YouTube search
read -rp "Search YouTube: " QUERY
echo "Searching…"

# Get the search results from yt-dlp
RESULTS=$(yt-dlp --flat-playlist -J "ytsearch100:${QUERY}" 2>/dev/null)

# Check if results are returned
if [ -z "$RESULTS" ]; then
    echo "No results."
    exit 1
fi

# Build array manually (POSIX-safe)
ITEMS=()
while IFS= read -r line; do
    ITEMS+=("$line")
done <<EOF
$(echo "$RESULTS" |
    jq -r '.entries[] | select(.channel_id != null) |
    "\(.channel)\t\(.channel_id)\t\(.title)\t\(.url)"')
EOF

TOTAL=${#ITEMS[@]}
PAGE=0
PAGE_SIZE=25

# Start a loop to paginate the results
while true; do
    START=$((PAGE * PAGE_SIZE))
    END=$((START + PAGE_SIZE))

    # If we reach the end of the results, exit
    if [ "$START" -ge "$TOTAL" ]; then
        echo "No more results."
        break
    fi

    # Display the results for the current page
    echo
    echo "=== Results $((START+1)) to $((END < TOTAL ? END : TOTAL)) of $TOTAL ==="

    i=$START
    while [ "$i" -lt "$END" ] && [ "$i" -lt "$TOTAL" ]; do
        IFS=$'\t' read -r CHANNEL CHANNEL_ID TITLE URL <<< "${ITEMS[$i]}"
        printf "%3d) %-40s (%s)\n" $((i+1)) "$CHANNEL" "$TITLE"
        i=$((i+1))
    done

    echo
    read -rp "Enter number to play, n=next page, q=quit: " CHOICE

    case "$CHOICE" in
        q|Q)
            exit 0
            ;;
        n|N)
            PAGE=$((PAGE+1))
            ;;
        ''|*[!0-9]*)
            echo "Invalid input."
            ;;
        *)
            INDEX=$((CHOICE - 1))
            if [ "$INDEX" -lt 0 ] || [ "$INDEX" -ge "$TOTAL" ]; then
                echo "Invalid selection."
                continue
            fi

            # parse the chosen item
            IFS=$'\t' read -r CHANNEL CHANNEL_ID TITLE URL <<< "${ITEMS[$INDEX]}"

            # Open the selected URL in mpv
            echo "Opening: $TITLE"
            mpv --ytdl-format="bv*[height<=?720][fps<=?30][vcodec!=?vp9]+ba/best[height<=?720]" "$URL" &
            ;;
    esac
done

Vegmeldingar i dalstroka innafor

Sit du og har eit terminalvindu du ikkje heilt veit kva du skal fylle med? Kva med trafikkmeldingar frå Vegvesenet?

#!/usr/bin/env bash

URL="https://traffic-info.atlas.vegvesen.no/traffic-information/messages"
clear
curl -s -H "X-System-ID: vvtraf" "$URL" |
jq -r '
  .features[].properties
  | select(
    (
      (.descriptionOfLocation // ""| contains("Fv. 450"))
      or
      (.descriptionOfLocation // "" | contains("Fv. 4224"))
      )
      and
      (
        (.descriptionOfLocation | contains("Rogaland"))
        or
        (.descriptionOfLocation | contains("Agder"))
      )
    )
  | "Stad: \(.descriptionOfLocation)\nMelding: \(.descriptionOfTrafficMessage)\n"
'

Opne data og linux

Joda. Det finst app. Det finst nettside og. Men yr.no i tekstformat, det er og veldig hendig.

Kvar gong eg loggar meg på ei maskin via SSH, eller kvar gong eg startar eit terminalvindu, så får eg opp

siste oppdaterte verdata frå yr.no. Korleis? Eit lite shell-skript;

#!/bin/bash

# URL for the weather data (replace this with the actual URL where you are fetching the data from)
API_OBSERVASJONAR="https://www.yr.no/api/v0/locations/5-42940/observations/day"
API_GJELDANDE="https://www.yr.no/api/v0/locations/5-42940/forecast/currenthour"

# Fetch the data using wget
wget -q -O weather_data.json "$API_OBSERVASJONAR"
wget -q -O currenthour.json "$API_GJELDANDE"

# Check if wget was successful
if [ $? -ne 0 ]; then
    echo "Failed to fetch data"
    exit 1
fi

# Parse the JSON and extract the 'max_temp' value using jq
max_temp=$(jq '.historical.summary.temperature.max.value' weather_data.json)
min_temp=$(jq '.historical.summary.temperature.min.value' weather_data.json)
precipitation=$(jq '.historical.summary.precipitation.total.value' weather_data.json)
wind=$(jq '.historical.summary.wind.maxWind.value' weather_data.json)
windGust=$(jq '.historical.summary.wind.maxGust.value' weather_data.json)
current_temp=$(jq '.temperature.value' currenthour.json)
feelslike_temp=$(jq '.temperature.feelsLike' currenthour.json)

# Check if jq successfully extracted the value
if [ $? -ne 0 ]; then
    echo "Failed to parse JSON"
    exit 1
fi

# Output the result
clear
echo "MÅLEDATA FOR SINNES MÅLESTASJON, METEROLOGISK INSTITUTT"
echo
echo "Gjeldande temperatur: $current_temp°"
echo "Temperatur kjennest som: $feelslike_temp°"
echo
echo "Makstemp siste 24 timer: $max_temp°"
echo "Minimumstemp siste 24 timer: $min_temp°"
echo
echo "Nedbør siste 24 timar: $precipitation mm"
echo
echo "Vind siste døgn: $wind m/s (maks vindkast: $windGust m/s)"
echo

# Clean up by removing the downloaded JSON file
rm weather_data.json
rm currenthour.json

Radio og bash

Nettstaden https://lyd.nrk.no er ein juvel for slike som meg som ikkje er så fan av at NRK koplar alt av innhald inn i ein himespøta applikasjon. Ikkje kan slike applikasjonar nyttast i Linux heller. Så då må ein inn på nettsida til NRK.

Eg (og min ven ChatGPT) knota difor til eit lite bash-script som hentar ut data frå nettsida, og lagar hyperlenker direkte til lydstraumane.

#!/bin/bash

# Hent data frå URL
URL="https://lyd.nrk.no"

# Data vert lagra i fila
OUTPUT_FILE="radiostraumar_nrk.html"

# Hent innhald frå URL
curl -s $URL | \
# Fjern uønska HTML frå kjelda
grep -v '</h3></td><td>' | \
# Sniff liner som startar med "Mount Point /" og reinsk dei
grep -oP '(?<=Mount Point /)[^"]+' | \
# Fjern alle førekomstar av "</h3></td><td" frå henta tekst
sed 's#</h3></td><td##g' | \
# Legg til opprenska del til URL-adressa og formater det som hyperlenker
awk -v base="$URL" '{print "<a href=\""base"/"$1"\">"base"/"$1"</a><br>"}' > $OUTPUT_FILE

# Tilbakemelding til brukar
echo "Radiostraumar frå NRK lagra i fila $OUTPUT_FILE"

Lagrar du dette i ei fil og køyrer henne, får du altså ei html-fil med hyperlenker direkte til alle lydstraumane til NRK.

Desse lenkene kan eg legga inn i Navidrome, der eg og har alt av min eigen musikk samla. Dette kan då alle i husstanden lytta til på sine einingar. Mi eiga lydsky rett og slett..