29 berichten aan het bekijken - 1 tot 29 (van in totaal 29)
  • Q:
    Bijdrager
    sytrusze

    Automator hulp gevraagd

    Hallo allemaal,

    Ik heb hulp nodig bij het maken van een automator workflow. Ik heb een map in mijn dropbox staan genaamd BEATS. Hierin zitten 200+ folders, de opmaak van alle folders is als volgt:

    Alle 200+ folders hebben dezelfde opmaak/indeling, wat voordelig is voor het maken van een workflow. Wat ik dus wil is het volgende:

    • Per folder het aantal bpm vinden. Het aantal bpm staat in het .zip bestand, zoals hierboven in het voorbeeld 122 is.
    • Rename de 3 audio bestanden naar “Sytrus – Beattitle (het aantal bpm, dus bijv 122bpm) maar behoud wel de tail van de titelnaam dus (WAV/MP3/tagged)”. In dit voorbeeld zou het dus als volgt worden:

      Sytrus – Beattitle 122bpm WAV (www.sytrus.com)
      Sytrus – Beattitle 122bpm MP3 (www.sytrus.com)
      Sytrus – Beattitle 122bpm tagged (www.sytrus.com)

    Ik hoop dat de uitleg een beetje duidelijk is, zo niet dan geef ik graag een aanvulling. Wie o wie kan mij hierbij helpen 🙏 alvast bedankt

     

    Bijdrager
    TheBigZ

    In alle folders staan altijd precies vier bestanden? (zip, wav, mp3, mp3)

     

    Of heb je meerdere van die setjes in één folder staan?

     

    Bijdrager
    sytrusze

    In alle folders staan altijd precies vier bestanden (zip, wav, mp3, mp3), alhoewel in sommige folders er wel andere bestanden bij zitten zoals een subfolder, .jpg of .aep (after effects) bestand maar deze mogen. ongewijzigd blijven en kunnen genegeerd worden.

    Bijdrager
    TheBigZ

    Ik kijk morgen even voor je.

    Bijdrager
    sytrusze

    <p class=”cite”>TheBigZ op 28 mei 2020 om 17:19</p>
    Ik kijk morgen even voor je.

    Thanks! 🤝

    Bijdrager
    TheBigZ

    Ik heb een shell scriptje voor je gemaakt dat je kunt uitvoeren in de Terminal. De versie met “echo mv” laat alleen zien wat er gaat gebeuren; er worden nog geen bestanden hernoemd. Je kunt het de eerste keer uitvoeren (“sh hernoem.sh”) om een idee te krijgen wat er gebeurt. Als je de uitvoer bekeken hebt en het ziet er goed uit, kun je de “echo mv” vervangen door “mv” dwz het woordje “echo” weghalen. Als je het script dan nog een keer uitvoert, zullen de bestanden daadwerkelijk hernoemd worden. Er zit een check in het script om ervoor te zorgen dat de bpm maar één keer wordt toegevoegd. Je kunt het script dus meerdere keren uitvoeren mocht er ergens iets mis gaan.

     

     
     
    MacBook-Air:$ find BEATS -type f
    BEATS/beats 001/Beattitle_Trackouts_122bpm_(www.sytrus.com).zip
    BEATS/beats 001/Sytrus – Beattitle MP3 (www.sytrus.com).mp3
    BEATS/beats 001/Sytrus – Beattitle WAV (www.sytrus.com).wav
    BEATS/beats 001/Sytrus – Beattitle tagged (www.sytrus.com).mp3
     
    MacBook-Air:$ sh hernoem.sh
     
    MacBook-Air:$ find BEATS -type f
    BEATS/beats 001/Beattitle_Trackouts_122bpm_(www.sytrus.com).zip
    BEATS/beats 001/Sytrus – Beattitle 122bpm tagged (www.sytrus.com).mp3
    BEATS/beats 001/Sytrus – Beattitle 122bpm WAV (www.sytrus.com).wav
    BEATS/beats 001/Sytrus – Beattitle 122bpm MP3 (www.sytrus.com).mp3
     
    MacBook-Air:$ sh hernoem.sh
     
    MacBook-Air:$ find BEATS -type f
    BEATS/beats 001/Beattitle_Trackouts_122bpm_(www.sytrus.com).zip
    BEATS/beats 001/Sytrus – Beattitle 122bpm tagged (www.sytrus.com).mp3
    BEATS/beats 001/Sytrus – Beattitle 122bpm WAV (www.sytrus.com).wav
    BEATS/beats 001/Sytrus – Beattitle 122bpm MP3 (www.sytrus.com).mp3
     
     

     

    De ‘code’ sectie op dit kl*te forum gooit de spaties weg, en vernaggelt de ‘backticks’ (naar-links-hangende-quote) . In het plaatje hierboven zie je hoe de code eruit hoort te zien. Vanuit het ‘code’ blok hieronder kun je het scriptje kopiëren naar je TextEdit en opslaan naast de ‘BEATS’ folder als “hernoem.sh”. Je moet dus nog wel een en ander aanpassen in de tekst (helaas).

     

     
     
    hernoem()
    {
    audiofile=$1
    bpm=$2
    hasbpm=$(echo "${audiofile}" | grep ${bpm}) # only do it once
    if [ "${hasbpm}" == "" ]; then
    newname=${audiofile}
    newname=$(echo "${newname}" | sed "/WAV/s//${bpm} WAV/")
    newname=$(echo "${newname}" | sed "/MP3/s//${bpm} MP3/")
    newname=$(echo "${newname}" | sed "/tagged/s//${bpm} tagged/")
    if [ "${newname}" != "${audiofile}" ]; then
    echo mv "${audiofile}" "${newname}"
    fi
    fi
    }
    export -f hernoem
     
    findbpm()
    {
    zipfile=$1
    words= $(echo "${zipfile}" | sed '/_/s// /g')
    for word in ${words}
    do
    bpm=$(echo ${word} | grep bpm)
    if [ "${bpm}" != "" ]; then
    echo ${bpm}
    fi
    done
    }
    export -f findbpm
     
    hernoem_all()
    {
    zipfile=$1
    dir=$(dirname "${zipfile}")
    file=$(basename "${zipfile}")
    bpm= $(findbpm "${file}")
    export bpm
    if [ "${bpm}" != "" ]; then
    find "${dir}" -name "*.mp3" -exec bash -c 'hernoem "$0" ${bpm}' {} \;
    find "${dir}" -name "*.wav" -exec bash -c 'hernoem "$0" ${bpm}' {} \;
    fi
    }
    export -f hernoem_all
     
    find BEATS -name "*bpm*.zip" -exec bash -c 'hernoem_all "$0"' {} \;
     
     
    Bijdrager
    sytrusze

    Dat had niet helemaal gehoeven zoveel moeite joh, maar ik waardeer het wel enorm! Ik ga het morgen even testen. Update volgt…thanks!

    Bijdrager
    TheBigZ

    Laat maar weten of het is gelukt, of dat je ergens vast loopt.

    Bijdrager
    sytrusze

    Goedemiddag, ik was er net even mee bezig. Ik kon via TextEdit niet opslaan als een .sh bestand. Ik heb “Use both” geklikt en daarna de extensie gewijzigd naar .sh in plaats van .sh.rtf

     

     

    Ik heb nu het volgende in de BEATS folder:

    Ik ben alleen verward van hoe het nu precies verder gaat, hoe start ik het shell script precies op?

     

    Bijdrager
    TheBigZ

    De bedoeling is dat je het script in dezelfde folder zet waarin de BEATS folder staat, dus één mapje hoger dan waar je het nu hebt neergezet.

     

    Vervolgens open je Terminal, en ga je naar de plek toe waar het script staat. Dat kun je doen door in de Terminal in te typen: “cd “ (cd gevolgd door een spatie) en vervolgens de map waarin het script staat naar de Terminal te slepen. Vervolgens klik je op enter in de Terminal en dan sta je op de goede plek.

     

    Nu kun je het script uitvoeren via:

     
    sh hernoem.sh
     
     
    Bijdrager
    TheBigZ

    Je kunt het script ook laten staan in de BEATS folder. Dan moet je de laatste regel van het script alleen even aanpassen.

    In plaats van “find BEATS “ moet je dan “find . “ gebruiken, dwz een ‘punt’ in plaats van ‘BEATS’. Een ‘punt’ betekent de huidige folder.

    Bijdrager
    sytrusze

    Oke duidelijk, bedankt. Ik heb het .sh bestand een mapje hoger gezet. Ik krijg het volgende in beeld:

    Sytrus-MacBook-Pro:~ sytrus$ cd /Users/sytrus/Dropbox

    Sytrus-MacBook-Pro:Dropbox sytrus$ sh hernoem.sh

    hernoem.sh: line 1: {rtf1ansiansicpg1252cocoartf1671cocoasubrtf600: command not found

    hernoem.sh: line 2: syntax error near unexpected token `}’

    hernoem.sh: line 2: `{\fonttbl\f0\fmodern\fcharset0 Courier;}’

    Sytrus-MacBook-Pro:Dropbox sytrus$

     

    Bijdrager
    TheBigZ

    Je hebt het bestand niet als ASCII (“Plain Text”) maar als RTF opgeslagen. Dat gaat fout.

    Probeer het bestand als ASCII (een puur tekstbestand) op te slaan, niet als RTF.

     

    https://support.lesley.edu/support/solutions/articles/4000111343-how-to-convert-a-document-into-plain-text-in-textedit-on-a-mac

     

     

    Bijdrager
    sytrusze

    Duidelijk, hier het resultaat:

    Sytrus-MacBook-Pro:~ sytrus$ cd /Users/sytrus/Dropbox
     
    Sytrus-MacBook-Pro:Dropbox sytrus$ sh hernoem.sh
     
    hernoem.sh: line 17:  : command not found
     
    hernoem.sh: line 31:  : command not found
     
    hernoem.sh: line 45:  : command not found
     
    BEATS/Total Panic/Total Panic_Trackouts_70bpm_(www.sytrus.com).zip: line 1: Total: command not found
     
    BEATS/Fresh Drip/Fresh Drip_Trackouts_80bpm_(www.sytrus.com).zip: line 1: Fresh: command not found
     
    BEATS/Kings/Kings_Trackouts_70bpm_(www.sytrus.com).zip: line 1: Kings: command not found
    • Deze reactie is gewijzigd 1 maand, 1 week geleden door sytrusze.
    Bijdrager
    TheBigZ

    Welke macOS versie gebruik je?

    Kun je eens kijken welke shell versie jij hebt?

     
     
    Last login: Sun May 31 17:58:56 on console
    MacBook-Air:~ $ uname -a
    Darwin MacBook-Air.local 18.7.0 Darwin Kernel Version 18.7.0: Mon Feb 10 21:08:45 PST 2020; root:xnu-4903.278.28~1/RELEASE_X86_64 x86_64
     
    MacBook-Air:~ $ sh -version
    GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
    Copyright (C) 2007 Free Software Foundation, Inc.
     
     

     

    Bijdrager
    sytrusze

    Ik zit op 10.14.6 Mojave, 18.7.0 Darwin Kernel Version 18.7.0: Sat Oct 12 00:02:19 PDT 2019; root:xnu-4903.278.12~1/RELEASE_X86_64 x86_64

    Bijdrager
    TheBigZ

    En ik kom erachter dat je twee spaties moet weghalen in het script.

    Ik had de tekst wat aangepast om van die backticks af te komen.

    Maar het gaat niet goed met de volgende spaties:

     
     
    words= $(echo "${zipfile}" | sed '/_/s// /g')
     
     

    De spatie tussen de ‘=’ en de ‘$’ moet je weghalen. Alleen die dus, de eerste spatie.

     

    Idem hier:

     
     
    bpm= $(findbpm "${file}")
     
     

     

    Uiteindelijk moet er dus staan:

     
     
    words=$(echo "${zipfile}" | sed '/_/s// /g')
     
    bpm=$(findbpm "${file}")
     
     

     

     

    Bijdrager
    TheBigZ

    sytrusze op 31 mei 2020 om 18:04

    Ik zit op 10.14.6 Mojave, 18.7.0 Darwin Kernel Version 18.7.0: Sat Oct 12 00:02:19 PDT 2019; root:xnu-4903.278.12~1/RELEASE_X86_64 x86_64

    En welke shell versie?

     
     
    MacBook-Air:~ $ sh -version
    GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
    Copyright (C) 2007 Free Software Foundation, Inc.
     
     

     

    Bijdrager
    sytrusze

    Aangepast! Excuus, de shell versie:

     
     
    GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18)
     
    Copyright (C) 2007 Free Software Foundation, Inc.
     
     
    • Deze reactie is gewijzigd 1 maand, 1 week geleden door sytrusze.
    Bijdrager
    TheBigZ

    Ik denk dat die twee spaties teveel de oorzaak van het probleem waren.

    Die moet je dus even weghalen in het script.

    Daarna moet je bij het uitvoeren van het script de printjes krijgen van wat er aangepast gaat worden als je de ‘echo’ weghaalt.

    Bijdrager
    sytrusze

    Ik heb het net weer uitgevoerd, de resultaten zien er prima uit!

    Echter staan wel deze 3 errors in de eerste 3 lines:

     
     
    hernoem.sh: line 17:  : command not found
     
    hernoem.sh: line 31:  : command not found
     
    hernoem.sh: line 45:  : command not found
     
     

     

    Voorbeeld van de resultaten (beetje bij beetje komen we er wel 🥳):

     
     
    mv BEATS/Total Panic/SYTRUS - Total Panic MP3 (www.sytrus.com).mp3 BEATS/Total Panic/SYTRUS - Total Panic 70bpm MP3 (www.sytrus.com).mp3
     
    mv BEATS/Total Panic/SYTRUS - Total Panic tagged (www.sytrus.com).mp3 BEATS/Total Panic/SYTRUS - Total Panic 70bpm tagged (www.sytrus.com).mp3
     
    mv BEATS/Total Panic/SYTRUS - Total Panic WAV (www.sytrus.com).wav BEATS/Total Panic/SYTRUS - Total Panic 70bpm WAV (www.sytrus.com).wav
     
     

    *ik ga even snel wat koken, ben na het eten weer aanwezig*

    • Deze reactie is gewijzigd 1 maand, 1 week geleden door sytrusze.
    Bijdrager
    TheBigZ

    Die drie errors zijn de “export” commando’s.  Vreemd. Misschien  nog een overblijfsel van die RTF actie.

     

     

    Maar als je wel de juiste “mv” commando’s langs ziet komen, betekent het dat het script werkt. Om de bestanden écht te hernoemen dien je zoals gezegd de “echo mv” te vervangen door alleen “mv” (dwz “echo” weghalen).

     

     

    Succes.

    Bijdrager
    sytrusze

    Yes, top! Kleine ontdekking…

    Sommige .zip bestanden zijn .rar bestanden. Is dit gemakkelijk op te vangen in het scriptje of komt hier meer bij kijken en is het niet zo makkelijk als het lijkt?

    Bijdrager
    TheBigZ

    Je kunt .zip veranderen in .rar in de laatste regel, en het script opnieuw draaien.

     

     
    find BEATS -name "*bpm*.zip"
     
     
    Bijdrager
    sytrusze

    Dank u zeer! Ik post straks een update

    Bijdrager
    sytrusze

    Update: zojuist succesvol uitgevoerd. Het voelt echt bijna ondankbaar om alleen bedankt te zeggen, maar ik waardeer het echt enorm!! hoe je mij hiermee hebt geholpen. Buitenom het schrijven van het script, ben je ook enorm behulpzaam geweest met de uitleg. Meer dan 800 bestanden (94,2gb om precies te zijn) zijn hernoemd. Als ik dit handmatig had moeten doen dan was ik weken bezig…


    @TheBigZ
    je bent geweldig! Heel heel héééééél erg bedankt nogmaals! 🤝🤝🤝 mijn dank is zeer groot 🙌

    Bijdrager
    TheBigZ

    Graag gedaan. Fijn dat het gelukt is.:-)

    Bijdrager
    Jakko Westerbeke

    <p class=”cite”>TheBigZ op 31 mei 2020 om 17:22</p>
    Nu kun je het script uitvoeren via:
    <div class=”code”>

     
    sh hernoem.sh

    </div>

    Of je doet eerst:

    chmod +x hernoem.sh

    en dan start je het met:

    ./hernoem.sh

    of nog makkelijker:

    ./h[tab]

    (Mocht de druk op de Tab-toets de naam niet helemaal aanvullen tot hernoem.sh dan typ je de eerste letter die ontbreekt en druk je weer op Tab.)

    Bijdrager
    sytrusze

    <p class=”cite”>Jakko Westerbeke op 1 juni 2020 om 10:39</p>
     
    <p class=”cite”><span style=”font-size: 14px;”>(Mocht de druk op de Tab-toets de naam niet helemaal aanvullen tot </span><code style=”font-size: 14px;”>hernoem.sh<span style=”font-size: 14px;”> dan typ je de eerste letter die ontbreekt en druk je weer op Tab.)</span></p>

    Ik druk gewoon op pijltje omhoog, werkt ook prima:p

29 berichten aan het bekijken - 1 tot 29 (van in totaal 29)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.