AppleScript: Ordner selektieren und an Terminal übergeben

Ausgangspunkt:

In verschiedenen Ordnern liegen MP4 Files. Das AppleScript soll einen Dialog öffnen in dem man die Ordner auswählen kann, ist nur ein Ordner ausgewählt wird geprüft ob sich ein MP4 File in diesem Ordner befindet, wenn ja wird gewarnt dass nur ein Ordner ausgewählt wurde, ist kein MP4 File vorhanden wird darauf hingewiesen und ein neuer Dialog wird geöffnet.

Sind mehrere Ordner ausgewählt werden diese an den Terminal geschickt. Der Terminal führt ein Shell Script aus, welches im AppleScript Verzeichnis (*.app/Contents/Resources/Scripts/) liegt. Das Shell Script soll dann die Ordner weiterverarbeiten.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
set muxer to POSIX path of (path to resource "mxf-muxer" in directory "Scripts")
set foldercount to 0
 
tell application "Finder"
    set FolderPath to (choose folder with prompt "Pick the folders containing the files to process:" with multiple selections allowed)
    
    set foldercount to count FolderPath
    
    if (foldercount = 1) then
        set inPath to POSIX path of FolderPath as text
        set Foldername to name of folder FolderPath as text
        
        set infile to "no"
        tell application "Finder" to if exists inPath & Foldername & ".MP4" as POSIX file then set infile to "yes"
        
        if (infile = "no") then
            display dialog ("There is no file: \"" & inPath & Foldername & ".MP4" as text) & "\". Please select (multiple) folders which contains MP4 files!" buttons {"Cancel", "Select Folders"} default button "Select Folders"
            
            if button returned of result = "Select Folders" then
                set FolderPath to (choose folder with prompt "Pick the folders containing the files to process:" with multiple selections allowed)
            else
                return
            end if
        else
            display dialog "You have only select one folder, are you sure that you only want to process one file?" buttons {"Select Folders", "Continue"} default button "Continue"
            
            if button returned of result = "Select Folders" then
                set FolderPath to (choose folder with prompt "Pick the folders containing the files to process:" with multiple selections allowed)
            end if
        end if
    end if
    
    set filesString to ""
    repeat with file_ in FolderPath
        set filesString to filesString & " " & quoted form of (POSIX path of file_)
    end repeat
    
    tell application "Terminal"
        activate
        do script quoted form of muxer & filesString
    end tell
end tell

 

ffmpeg: 24fps zu 25fps

Möchte man ein 24 fps Clip mittels ffmpeg korrekt umwandeln kann man das in etwa so bewerkstelligen:

ffmpeg -i input.ext -r 25 -vf "setpts=(1/1,04166666666667)*PTS" [codec settings] output.ext

Mit diesem Beispiel würde zusätzlich noch ein Border angefügt:

ffmpeg -i input.ext -r 25 -vf "setpts=(1/1,04166666666667)*PTS" -vf scale=720:436,pad=720:576:0:70 -sws_flags lanczos -c:v mpeg2video -target pal-dvd -aspect:v 16:9 -c:a mp2 -b:a 224k -y output.ext

 

OSX Dateien und Ordner sichtbar/unsichtbar machen

Ein kleines Script mit dem versteckte Dateien in OSX sichtbar bzw. unsichtbar machen kann.

Script mit der Endung .command abspeichern, im Terminal ausführbar machen mit: chmod +x scriptname.command

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
 
stat=`defaults read com.apple.finder AppleShowAllFiles`
 
if [ "$stat" == "NO" ]; then
  defaults write com.apple.finder AppleShowAllFiles YES
  killall Finder /System/Library/CoreServices/Finder.app
 
else
  defaults write com.apple.finder AppleShowAllFiles NO
  killall Finder /System/Library/CoreServices/Finder.app
fi

Ubuntu: Systeminfos anzeigen lassen

Wenn man einen Ubuntu/Linux Server betreiben möchte kann es manchmal praktisch sein, sich einige Systeminfos ausgeben zu lassen.

Hier ein Beispiel wie diese Infos automatisch, nach jedem Login, ausgegeben werden.

Script mit folgenden Inhalt anlegen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
 
echo ""
 
free -h | grep "used\|Mem"
echo ""
 
echo CPU: `ps aux | awk {'sum+=$3;print sum'} | tail -n 1`%
echo ""
 
df -h | grep -v "boot\|user\|shm\|lock\|run\|udev\|cgroup"
echo ""
 
echo "running processes:"
echo total: `ps aux | wc -l`
echo user:  `ps -U $USER | wc -l`
echo ""
echo current ssh logins: `who | grep -v localhost | wc -l`
echo ""

 

Ausführbar machen:

chmod 755 loginInfo.sh

Pfad zum Script in /etc/profile schreiben.

Nach dem nächsten Login, auch über ssh wird nun das angezeigt:

             total       used       free     shared    buffers     cached
Mem:          6,1G       315M       5,8G       588K        15M       173M
 
CPU: 0.1%
 
Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/nas--vg-root  1,5G  1,3G   83M  94% /
 
running processes:
total: 150
user: 9
 
current ssh logins: 2

 

Ubuntu über VirtualBox auf USB Stick installieren

VirtualBox sieht es eigentlich nicht vor, dass man einen USB Stick darüber bootet, bzw. den Stick als Zielfestplatte auswählen kann.

Hier ein paar Schritte wie man das dennoch hin bekommt. Anschließend lässt sich der USB Stick sogar über den PC booten, somit hat man überall sein Ubuntu System dabei.

 

Vorbereitung:

Zuerst müssen wir VirtualBox dazu bekommen, dass es den USB Stick als Festplatte akzeptiert. Dazu navigieren wir mit der Kommandozeile ( Windowstaste+R: cmd :: Enter ) in den Installationsordner von VirtualBox. Hier führen wir nun folgendes aus:

VBoxManage internalcommands createrawvmdk -filename "%USERPROFILE%\VirtualBox VMs\UbuntuUSB\UbuntuUSB.vmdk" -rawdisk \\.\PhysicalDrive<Datenträgernummer>.

cmd

Die Datenträgernummer erfährt man über die Computerverwaltung / Datenträgerverwaltung:

Verwaltung

 

USB Stick partitionieren und formatieren

Mir war es nicht möglich, während der Installation in VirtualBox Partitionen einzurichten und zu formatieren, das ist aber notwendig, da Ubuntu eine System Partition haben möchte und eine swap Partition. Zudem wollte ich auch eine Fat32 Partition haben, die ich später dann zum Datenaustausch verwenden kann.

Man hat hier nun zwei Möglichkeiten, entweder man booten in eine gewöhnlich installierte virtuelle Ubuntu Box, oder andere Linux Distribution, und richtet dort den USB Stick her mittels gparted. Oder man macht das mit einem anderen Partitionsprogramm, welches auch Linux Dateisystem versteht. Ich habe hier die Home Edition von Partition Wizard genommen ( MiniTool Partition Wizard 8 )

PartitionWizard

Die Fat32 Partition habe ich am Anfang positioniert, die Linux System Partition in der Mitte und die swap Partition ans Ende. Hier natürlich das jeweilige Dateisystem richtig auswählen. Fürs System ext4 und für swap swap.

 

In VirtualBox

Nun kann VirtualBox gestartet werden um Ubuntu auf den Stick zu installieren.

Zuerst richtet man ganz normal eine neue virtuelle Maschine ein, beim Abschnitt Festplatte wählen wir jedoch: Vorhandene Festplatte verwenden

Nun navigieren wir zu der Datei, die wir mit dem CMD Befehl am Anfang erstellt hatten und laden dadurch den USB Stick.

Festplatte

Ist dieser Schritt abgeschlossen kann mit einem Rechtsklick auf Änder, der neu erzeugten virtuellen Maschine, das System so angepasst werden wie man es möchte. Z.B. mehr CPU Kerne, mehr Grafikspeicher etc. Im Abschnitt Massenspeicher muss nun noch ein ISO Image von Ubuntu geladen werden, dann können wir die virtuelle Maschine starten um Ubuntu auf den Stick zu installieren.

cd

 

Gleich nach dem Starten wird schon das Installationsmenü von Ubuntu sichtbar. Im 4. Schritt kommen wir zur Auswahl wie und wo wir Ubuntu installieren wollen, hier muss: Etwas Anderes ausgewählt werden.

etwasanderes

Mit Weiter kommen wir nun in das Menü in dem die Partitionen aufgelistet werden. Hier nun die ext4 Partition auswählen und über Change… anpassen. Unter Benutzen muss Ext4-Journaling-Dateisystem ausgewählt und der Einbindungspunkt auf „/“ gestellt werden.

install

 

Die Swap Partition muss eigentlich nicht noch einmal extra eingebunden werden, aber sicherheitshalber kann hier auch überprüft werden, ob sie von der Installation richtig eingebunden wurde.

Ab hier ist wieder alles normal, das heißt die Installation kann wie gewohnt fortgesetzt werden.

Wie zu Anfang erwähnt kann der Stick nach Abschluss in jeder virtuellen Maschine aber auch an jedem Computer der das Booten von USB zulässt verwendet werden. Je schneller die Lese- und Schreibgeschwindigkeit ist umso mehr Freude hat man natürlich auch mit dem Portablen Ubuntu :)…

Viel Spaß damit!

 

Referenzen:

http://www.tecchannel.de/pc_mobile/tipps/2051591/virtualbox_von_usb_geraeten_booten/

http://code-bude.net/2013/02/12/ext4-partition-unter-windows-erstellen/

http://wiki.ubuntuusers.de/Installation_auf_externen_Speichermedien

 

Batch: media-autobuild_suite v2.0

Von dem Compiler Script media-autobuild_suite gibt es jetzt die Version 2.0.

Die Compiler- Umgebung basiert nun auf MSYS2. Vorteil davon ist, dass sich die Umgebung immer aktuell hält, Updates werden automatisch installiert.

Da nun auch viele Libraries aus MSYS2 genommen werden, bleiben auch diese auf dem neusten Stand. Das System bleibt kleiner und läuft im gesamten schneller.

 

Viel Spaß damit!

https://github.com/jb-alvarado/media-autobuild_suite

Maxscript: Keyframes mit Versatz verschieben

Wenn man sich wiederholende Objekte animieren möchte, kann es hilfreich sein dass über Script zu lösen.

Szenario: Man möchte Pflastersteine animiert auslegen lassen. Dazu animiert man die Bewegung eines Pflastersteines dupliziert den Stein anschließend mit dem Array Tool und mit einem Script tut man nun die Keyframes einzeln verschieben:

1
2
3
4
5
6
7
8
9
10
11
12
(
num = 0
timeDisplace = 10
fn compObjNames name1 name2 = stricmp name1.name name2.name
selArray = selection as array
qSort selArray compObjNames
        
for i = 1 to selArray.count do (
    if i > 1 do num += timeDisplace
    moveKeys selArray[i].transform.controller num
    )
)

Ergebnis: