Der Code-Schnippsel-Thread


  • Ach, ich nutz auch git für Kleinigkeiten. Das geht echt super. Auch unter Windows. Einfach ein neues git Repo via Windowsfreigabe anlegen und dann dahin pushen und pullen. :D

    Ich hab mir auf meinem Server ein GitLab aufgesetzt. Tut zwar nicht so ganz (also http://www.foobar liefert auch den Inhalt von git.foobar aus mit HTTP und über HTTP pushen geht auch nicht), aber für das bisschen reichts erstmal.

    PGP-Key E384 009D 3B54 DCD3 21BF  9532 95EE 94A4 3258 3DB1 | S/MIME-Key 0x1A33706DAD44DA
    G d-@ s+:- a--- C+++ UB+L++ P--- L++@ E-@>++ W+ N o? K? w>++ !O !M !V PS+++ PE-- Y+>++ PGP++>+++ !t 5? X? !R tv b+++>++++ DI !D G>+ e>+++ h !r>++ !z
    „Die Aachener gelten als Erfinder des 4. Hauptsatzes der Thermodynamik: ‚Thermo schreibt man zweimal.“‘
    “Saying that Java is good because it works on all platforms is like saying oral sex is good because it works on all sexes.”
    „Es gibt 10 Sorten von Leuten: Die einen verstehen das Binärsystem, die anderen nicht.“
    „Manche Männer lieben Männer, Manche Frauen eben Frauen; Da gibt's nix zu bedauern und nichts zu staunen; Das ist genau so normal wie Kaugummi kauen; Doch die meisten werden sich das niemals trauen“

  • mein generator für schwachsinnige zufallswörter.

  • Mal mein Firewall-Skript erweitert:


    Meine Beiträge stehen unter der MIT-Lizenz:D


    externe HDD am Router? Klar ich tausch mein Auto gegen nen Tretroller mit Bremsklotz.


  • Seh ich das falsch oder sind da keine REJECTs drin und nur ACCEPTs?

    Vorerst, weil das nur mein Routingskript fürn Homeserver ist. Ist quasi eine Erweiterung, des Skriptes, das du mir geschickt hast.


    Meine Beiträge stehen unter der MIT-Lizenz:D


    externe HDD am Router? Klar ich tausch mein Auto gegen nen Tretroller mit Bremsklotz.

  • Ich habe mein erstes Userscript/Greasemonkey-Script mit Unterstützung durch jQuery geschrieben. Wenn jemand Ideen hat, wie man die "Beitrag #…"-Links logischer selektieren kann, wäre ich dafür sehr dankbar.

    Spoiler anzeigen


  • Meine Beiträge stehen unter der MIT-Lizenz:D


    externe HDD am Router? Klar ich tausch mein Auto gegen nen Tretroller mit Bremsklotz.

  • Kleines Script, um Musik von Youtube runterzuladen. Dafür lädt erst der youtube-dl das Video und mplayer extrahiert dann die Musik daraus in eine Wave-Datei. Als nächstes könnte man das dann noch durch einen Vorbis/AAC/MP3/FLAC/sonstwas-Encoder jagen.

    Bash
    #!/bin/bash
    ytid=$(echo "${1}" | cut -d "=" -f 2)
    echo "Das Video ${1} wird heruntergeladen. Das kann je nach Videogroesse einen Moment dauern.."
    youtube-dl "${1}" -o "${ytid}" 1>/dev/null 2>&1
    echo "Audio wird extrahiert.."
    mplayer -benchmark -vc null -vo null -ao pcm:fast:file="${ytid}.wav" "${ytid}.mp4" 1>/dev/null 2>&1
    echo "Die Audiodatei heisst ${ytid}.wav"

  • Kleines Script, um Musik von Youtube runterzuladen. Dafür lädt erst der youtube-dl das Video und mplayer extrahiert dann die Musik daraus in eine Wave-Datei. Als nächstes könnte man das dann noch durch einen Vorbis/AAC/MP3/FLAC/sonstwas-Encoder jagen.

    Bash
    #!/bin/bash
    ytid=$(echo "${1}" | cut -d "=" -f 2)
    echo "Das Video ${1} wird heruntergeladen. Das kann je nach Videogroesse einen Moment dauern.."
    youtube-dl "${1}" -o "${ytid}" 1>/dev/null 2>&1
    echo "Audio wird extrahiert.."
    mplayer -benchmark -vc null -vo null -ao pcm:fast:file="${ytid}.wav" "${ytid}.mp4" 1>/dev/null 2>&1
    echo "Die Audiodatei heisst ${ytid}.wav"

    youtube-dl --extract-audio wär ja auch zu einfach.

    PGP-Key E384 009D 3B54 DCD3 21BF  9532 95EE 94A4 3258 3DB1 | S/MIME-Key 0x1A33706DAD44DA
    G d-@ s+:- a--- C+++ UB+L++ P--- L++@ E-@>++ W+ N o? K? w>++ !O !M !V PS+++ PE-- Y+>++ PGP++>+++ !t 5? X? !R tv b+++>++++ DI !D G>+ e>+++ h !r>++ !z
    „Die Aachener gelten als Erfinder des 4. Hauptsatzes der Thermodynamik: ‚Thermo schreibt man zweimal.“‘
    “Saying that Java is good because it works on all platforms is like saying oral sex is good because it works on all sexes.”
    „Es gibt 10 Sorten von Leuten: Die einen verstehen das Binärsystem, die anderen nicht.“
    „Manche Männer lieben Männer, Manche Frauen eben Frauen; Da gibt's nix zu bedauern und nichts zu staunen; Das ist genau so normal wie Kaugummi kauen; Doch die meisten werden sich das niemals trauen“


  • Das würde die Audiodatei neu kodieren. Ich wollte aber Wave.

    youtube-dl --extract-audio --audio-format wav

    PGP-Key E384 009D 3B54 DCD3 21BF  9532 95EE 94A4 3258 3DB1 | S/MIME-Key 0x1A33706DAD44DA
    G d-@ s+:- a--- C+++ UB+L++ P--- L++@ E-@>++ W+ N o? K? w>++ !O !M !V PS+++ PE-- Y+>++ PGP++>+++ !t 5? X? !R tv b+++>++++ DI !D G>+ e>+++ h !r>++ !z
    „Die Aachener gelten als Erfinder des 4. Hauptsatzes der Thermodynamik: ‚Thermo schreibt man zweimal.“‘
    “Saying that Java is good because it works on all platforms is like saying oral sex is good because it works on all sexes.”
    „Es gibt 10 Sorten von Leuten: Die einen verstehen das Binärsystem, die anderen nicht.“
    „Manche Männer lieben Männer, Manche Frauen eben Frauen; Da gibt's nix zu bedauern und nichts zu staunen; Das ist genau so normal wie Kaugummi kauen; Doch die meisten werden sich das niemals trauen“


  • Das würde die Audiodatei neu kodieren.

    Nein, tut es nicht. Wenn man keinen Audiocodec angibt, versucht das Skript immer zuerst einen passenden Container zu finden und den Audiostream original zu kopieren.
    Weiterhin kann man z. B. AAC als Ausgabeformat angeben und nur bei Nichtübereinstimmung wird rekodiert.

  • Grade aus Langeweile entstanden


    Meine Beiträge stehen unter der MIT-Lizenz:D


    externe HDD am Router? Klar ich tausch mein Auto gegen nen Tretroller mit Bremsklotz.

  • Du kannst auch Parameter mit Leerzeichen übergeben, sie müssen nur in "-Zeichen stehen. Dann sparst Du dir das Namen konvertieren.

  • Code
    ################################
    # MP3-CDs via Konsole brennen  #
    # Author: Tobias Koehler       # 
    # Mail: tk1908@gmail.com       #       
    # Version 1.0                  #                            
    ################################


    Grade aus Langeweile entstanden


    Cool. :)

    Genereller Shellscript-Tipp, auch wenn es hier nicht so wichtig ist, weil ist ja "works for me" Lösung:

    Temporäre Pfade (wie /tmp) sollte man nicht hardcodieren, auf manchen Systemen ist das z.B. eine RAM-Disk mit wenig Speicher. Auch, was ist wenn ein anderes Script in /tmp gerade .mp3-Dateien ablegt? Dann wird die letzte Zeile da einem Programm die MP3-Dateien eines anderen Programm einfach weglöschen.

    Um dies und weitere Probleme zu verhindern, gibt es [url=http://man7.org/linux/man-pages/man3/mktemp.3.html]mktemp[/url]. Das erstellt dir im voreingestellten temporäreren Verzeichnis ($TMP) eine Datei oder ein Order mit Zufallsnamen. Ausserdem stellt es sicher, dass es vorher noch nicht existiert. So gibt es garantiert keine Kollisionen mit anderen Programmen:

    Code
    MEINTEMP=$(mktemp --tmpdir --directory mp3cd.XXXXXXX)

    Das erstellt dir automatisch ein Verzeichnis, dessen Pfad ist dann in $MEINTEMP gespeichert. Beispiel:

    Code
    $ MEINTEMP=$(mktemp --tmpdir --directory mp3cd.XXXXXXX)
    $ echo $MEINTEMP
    /tmp/mp3cd.BJecInG

    Wenn du in deinem Code alle Vorkomnisse von /tmp mit $MEINTEMP ersetzt, dann hast du alle obigen Probleme automagisch gelöst. :)

    So, dann gleich noch ein Tipp im Umgang mit temporären Dateien: Was passiert, wenn der User CTRL+C drückt, weil er merkt dass er die CD beispielsweise schon gerippt hat? Dann wird dein Script die MP3s da trotzdem rumliegen lassen, das könnte auch schöner sein. Darum gibt es trap. Das führt den da angegeben Befehl immer beim Beenden des Scripts aus: Egal ob es sauber durchgelaufen ist, oder es abgebrochen wurde.

    Code
    MEINTEMP=$(mktemp --tmpdir --directory mp3cd.XXXXXXX)
    trap 'rm -rf "$MEINTEMP"' EXIT

    Verwendest du diesen Code kannst du die letzte Zeile (# Temp-Files löschen) streichen, denn dann wird dir Bash den Befehl rm -rf /tmp/mp3cd.BJecInG immer automatisch ausführen, sobal das Script beendet wird. Egal ob es schlicht sauber durchgelaufen ist, oder weil es der Benutzer abgebrochen hat :)

    Einmal editiert, zuletzt von gandro (26. Mai 2014 um 17:18)

  • gandro

    Da kommt Freude auf. :b1: Vielen Dank.

    Allerdings noch ne generelle Frage:

    Wie sollte denn die LOCATION-Variable aussehen, wenn selbige als Parameter in folgender Form übergeben wird?

    mp3cd "/data/beer/Hörspiele/Die\ Drei\ Fragezeichen/Original/076\ -\ 090/087\ -\ Wolfsgesicht/*.mp3"


    Danke schon mal für die Antwort.


    Meine Beiträge stehen unter der MIT-Lizenz:D


    externe HDD am Router? Klar ich tausch mein Auto gegen nen Tretroller mit Bremsklotz.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!