Anzeige:
Ergebnis 1 bis 6 von 6

Thema: mp3info - Abspieldauer aller Tracks eines Ordners

  1. #1
    Registrierter Benutzer
    Registriert seit
    Jul 2008
    Beiträge
    145

    mp3info - Abspieldauer aller Tracks eines Ordners

    Hallo

    ich kann ja auf der Kommandozeile (falls mp3info installiert) mit:

    Code:
    mp3info -p "%S" mein-mp3-track.mp3
    die Spieldauer ("Duration") eines mp3-Tracks anzeigen lassen, "inspiriert" von appuals.com
    Habe ich einen ganzen Ordner voller mp3-Stücke, könnte ich es ja in eine fornext-Schleife packen und an bc schicken und addieren, dann teilen für Stunden:Minuten:Sekunden-Anzeige o.ä.

    Könnte ich machen und wäre auch eine gute Übung für die Kommandozeile

    Aber ich frage mal: gibt es ein fertiges Programm, mit dem ich die Spieldauer eines ganzen Ordners mit mp3-Dateien darin anzeigen kann?
    Typischer Anwendungsfall: ein Hörbuch mit 20 mp3-Dateien.

    Im Moment mache ich das etwas umständlich mit VLC und einem etwas ausgebauten Plugin, siehe mein Thread auf MacForen: Playlist auf NAS abspielen - gesamte restliche Zeit der Playlist anzeigen

    Ich habe das vorhin für ein paar Hörbücher (meine hauptsächliche Anwendung dieser Sache) gemacht und war etwas genervt, dass das so umständlich ist. Ich wollte ein Hörbuch (von ca. 100) finden, das jetzt noch ins Abendprogramm passt, also nicht zu lange überzieht. Ich hab dann ca. 10 Stück getestet, am Schluss hätte ich das erste nehmen können, obwohl eigentlich zu lange, weil ich so lange gebraucht hatte, rauszufinden, welches kürzer ist
    (dümmer geht ümmer).
    Am angenehmsten wäre ja eine Spalte "Spieldauer (media)" im PathFinder 7

    Hat da jemand eine Idee?

    Danke

    franc
    Geändert von franc (06.10.21 um 21:03 Uhr)

  2. #2
    kleine schwester von root Avatar von corresponder
    Registriert seit
    May 2002
    Ort
    192.67.198.56
    Beiträge
    4.578
    audacious - auch über die Playlist also nicht ganz, was du möchtest...

    gruss
    _______________________________________

    www.audio4linux.de - musik machen mit offenen quellen!

  3. #3
    Registrierter Benutzer Avatar von Huhn Hur Tu
    Registriert seit
    Nov 2003
    Ort
    Karlsruhe
    Beiträge
    2.243
    Warum nicht sowas hier ?
    Code:
    for i in $(ls *.mp3); do 
    
      mp3info -p "%S" $i
      
    done
    Zwischen anonym sein wollen und seine Daten nicht verkaufen wollen, liegen zwei Welten. Wenn man sich einen kostenpflichtigen Dienst sucht, dann meist, weil man für diese Dienstleistung zahlt und nicht selbst das Produkt sein will.


  4. #4
    Registrierter Benutzer
    Registriert seit
    Jul 2008
    Beiträge
    145
    Zitat Zitat von Huhn Hur Tu Beitrag anzeigen
    Warum nicht sowas hier ?
    Code:
    for i in $(ls *.mp3); do 
    
      mp3info -p "%S" $i
      
    done
    Super, danke.
    Oder ein Skript:

    Code:
    #!/bin/bash
    
    for file in ./*.mp3
    do
      len=$(mp3info -p %S ${file})
      ((sum+=$len))
    done
    printf '\nDauer: %d:%d:%d (h:m:s)\n\n' $((sum/3600)) $((sum%3600/60)) $((sum%60))
    Das rechnet gleich die ganzen Sekunden zusammen und macht eine lesbare hh:mm:ss Anzeige draus.
    Ist aber noch recht roh, werde ich noch etwas feiner schleifen...

  5. #5
    Registrierter Benutzer Avatar von Huhn Hur Tu
    Registriert seit
    Nov 2003
    Ort
    Karlsruhe
    Beiträge
    2.243
    Oder auch rekursive
    Code:
    for i in $(find musikfolder -name "*.mp3"); do 
    
      len=mp3info -p "%S" $i
      ((sum+=$len))
      
    done
    Zwischen anonym sein wollen und seine Daten nicht verkaufen wollen, liegen zwei Welten. Wenn man sich einen kostenpflichtigen Dienst sucht, dann meist, weil man für diese Dienstleistung zahlt und nicht selbst das Produkt sein will.


  6. #6
    Registrierter Benutzer
    Registriert seit
    Jul 2008
    Beiträge
    145
    Ich habe jetzt etwas weiter ausgeholt (immer noch nicht gerade perfekt, aber immerhin schon nützlich für mich):

    Code:
    #!/bin/bash
    
    # fcw: 2021-10-09: siehe echo unten...
    
    if [ "$1" == '?' ] || [ "$1" == '-?' ] || [ "$1" == '--help' ]
      then
        echo "
     mp3sum.sh: summiert mit Hilfe von mp3info (muss natuerlich installiert sein) die Spieldauer aller mp3-Dateien in einem Ordner, siehe:
     https://www.linuxforen.de/forums/showthread.php?282677-mp3info-Abspieldauer-aller-Tracks-eines-Ordners
    
     Parameter: das zu durchsuchende Verzeichnis oder ?, -?, --help fuer diese Hilfe.
     Ohne Parameter wird das aktuelle Verzeichnis durchsucht.
    
     Aufruf zB mit:
     find . -type d -name "*suchbegriff*" -exec mp3sum.sh {} \;
    
     oder schon im richtigen Verzeichnis:
     find . -type d -exec mp3sum.sh {} \;
    
     oder in Ergebnis in eine Datei:
     find . -type d -exec mp3sum.sh {} \; > ./_mp3sums.txt
    
    
    "
      exit 0
    fi
    
    if [ "$1" ]
      then
        cd "$1"
    fi
    
    if compgen -G "./*.mp3" > /dev/null; then
      for file in ./*.mp3
      do
        len=$(mp3info -p %S "${file}")
        if [ -n "$len" ]
        then
          ((sum+=$len))
        fi
      done
      hours=$((sum/3600))
      minutes=$((sum%3600/60))
      seconds=$((sum%60))
      if [ $minutes -lt 10 ]
      then
        minutes="0$minutes"
      fi
      if [ $seconds -lt 10 ]
      then
        seconds="0$seconds"
      fi
      echo "$(pwd)"
      echo "$hours:$minutes:$seconds (h:mm:ss)
    "
    #  printf 'Dauer: %d:%d:%d (h:m:s)\n\n' $((sum/3600)) $((sum%3600/60)) $((sum%60))
    else
      echo "
    Keine mp3-Dateien im Verzeichnis $1
    
    "
    fi
    Noch immer ziemlich roh, der Bau, aber wie gesagt, schon nützlich.
    Der h:m:s Anzeige fehlt noch die führende Null bei Zahlen unter 10 (EDIT: Korrigiert).
    Der Aufruf mit find usw. ist noch sehr unentwickelt, das könnte ich mit Parametern abwickeln.
    Aber ich ruf es jetzt für das gesamte Hörbuchverzeichnis auf (mit tmux im Hintergrund), schreib die ganzen Hörbuchzeiten in eine Textdatei (also mit: find . -type d -exec mp3sum.sh {} \; > ./_mp3sums.txt) und aus der les ich es bei Bedarf dann aus.

    EDIT 2021-10-13: dann habe ich noch zudem ein Skript mp3len.sh gemacht, also das mp3sum etwas umgebaut, damit ich in einem Verzeichnis alle mp3-Dateien auf einmal messen kann (Anwendungsfall: in einem Verzeichnis verschiedene Hörbücher, zB Märchen mit je nur einer MP3-Datei):

    Code:
    #!/bin/bash
    
    # fcw: 2021-10-11: siehe echo unten...
    
    if [ "$1" == '?' ] || [ "$1" == '-?' ] || [ "$1" == '--help' ]
      then
        echo "
     mp3len.sh: gibt mit Hilfe von mp3info die Spieldauer von mp3-Dateien in einem Ordner aus.
    
     Parameter: das zu durchsuchende Verzeichnis oder ?, -?, --help fuer diese Hilfe.
     Ohne Parameter wird das aktuelle Verzeichnis durchsucht.
    
     Aufruf zB mit:
     find . -type d -name "*suchbegriff*" -exec mp3len.sh {} \;
    
     oder schon im richtigen Verzeichnis:
     find . -type d -exec mp3len.sh {} \;
    
     oder in Ergebnis in eine Datei:
     find . -type d -exec mp3len.sh {} \; > ./_mp3lenght.txt
    
    
    "
      exit 0
    fi
    
    if [ "$1" ]
      then
        cd "$1"
    fi
    if compgen -G "./*.mp3" > /dev/null; then
      for file in ./*.mp3
      do
        len=$(mp3info -p %S "${file}")
        if [ -n "$len" ]
        then
    #      echo "${file}"
          hours=$((len/3600))
          minutes=$((len%3600/60))
          seconds=$((len%60))
          if [ $minutes -lt 10 ]
          then
            minutes="0$minutes"
          fi
          if [ $seconds -lt 10 ]
          then
            seconds="0$seconds"
          fi
          echo "$hours:$minutes:$seconds (h:mm:ss) - ${file}
    
    "
    #       printf "Dauer: %d:%d:%d (h:m:s)\n\n" $((len/3600)) $((len%3600/60)) $((len%60))
        fi
      done
    else
      echo "
    Keine mp3-Dateien im Verzeichnis $1
    
    "
    fi
    Weiter werde ich es wohl aber nicht mehr filigranisieren, ich hab schon die ganzen Kinderhörbücher (nur dafür brauche ich es) durch gescannt mit den Skripts und in den Ordnern Textdateien mit den Längen erstellt, das reicht dann wohl auch.
    Geändert von franc (13.10.21 um 10:05 Uhr) Grund: Skript erweitert und verbessert

Ähnliche Themen

  1. Inhalt eines Ordners kopieren
    Von schweinebauer im Forum System installieren und konfigurieren
    Antworten: 4
    Letzter Beitrag: 14.03.06, 16:42
  2. Brennen eines Ordners
    Von Olimlad im Forum Anwendungen Allgemein, Software
    Antworten: 3
    Letzter Beitrag: 24.09.03, 18:27
  3. Besitzer eines Ordners ändern
    Von tortus im Forum System installieren und konfigurieren
    Antworten: 4
    Letzter Beitrag: 12.09.03, 17:43
  4. Speicher eines Ordners
    Von Windi im Forum Linux Allgemein
    Antworten: 6
    Letzter Beitrag: 25.05.03, 22:27
  5. [extremnewbiefrage] besitzer eines ordners ändern
    Von Mr.Hussein im Forum Linux Allgemein
    Antworten: 3
    Letzter Beitrag: 25.03.02, 19:02

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •