18/05/07
ouverture automatique des DVD avec VLC

Mac OS X préférences système - CD et DVD
Comme on peut le lire sur cette page : Mac OS X 10.4 préférences système - CD's et DVD's ;
ce réglage a été introduit avec le version 10.2.
Permet de choisir des actions implicites en cas d'introduction d'un CD ou d'un DVD.
Cette application est scriptable : Scriptable Applications: Digital Hub, ce qui signifie qu'au lieu d'ouvrir une application (.app), on peut exécuter un script en AppleScript (.scpt).
A lire aussi : Mac OS X: The Missing Manual, 2nd Edition.
VLC ne peut être lancé et démarrer la lecture du DVD via les Préférences Systèmes comme le fait, par défaut, DVD Player ; il semblerait que la fonction ne soit pas présente dans VLC.
AppleScript pour VLC, préférence DVD et Digital Hub
Sachant, tout ce qui a été dit précédemment, habitué à bricoler de l'AppleScript (comme vous l'aurez sûrement constaté sur ce blog), je me suis décidé à réaliser un script pouvant lancer automatiquement la lecture d'un DVD avec VLC.
Ce qui donne actuellement :
VLC DVD.scpt
(* VLC DVD.scpt HP <http://blogosx.jupiterii.com> updated May. 18, 2007 *) property lastDVD : "" on run set VLC to "VLC" set isDVD to false quitVLC() set testDisks to do shell script "ls /dev/rdisk?" set diskNumberMax to (count words of findAndReplace("/dev/", "", testDisks)) set itemsDisks to (count words of testDisks) + 1 set diskList to {} set itemNum to 0 repeat try copy word itemNum of testDisks to the end of diskList end try set itemNum to itemNum + 1 if itemNum = itemsDisks then exit repeat end if end repeat try set lastDVD to (lastDVD / 1) try set diskString to "/dev/disk" & lastDVD detectDVD(diskString) if isDVD is true then launchDVD() set diskNumber to lastDVD end if end try end try if isDVD is false then repeat with i from 1 to the count of diskList set this_item to "/dev/" & findAndReplace("rdisk", "disk", (item i of diskList)) set diskNumber to findAndReplace("/dev/disk", "", this_item) try if diskNumber is not equal to lastDVD then detectDVD(this_item) if isDVD is true then launchDVD() exit repeat end if end if end try if (isDVD is true) then exit repeat end if end repeat end if set lastDVD to lastDVD end run on detectDVD(pathDisk) global isDVD, diskNumber set testDisk to ¬ do shell script "diskutil info " & pathDisk ¬ & "|grep -i \" Media Type:\" | awk '{print $3}' | tail -1" if testDisk contains "DVD" then set isDVD to true set lastDVD to diskNumber end if end detectDVD on launchDVD() global VLC, diskNumber tell application "System Events" tell process VLC to activate end tell tell application VLC to open ":dev:rdisk" & diskNumber tell application "System Events" tell application "VLC" to fullscreen end tell end launchDVD on findAndReplace(tofind, toreplace, TheString) set ditd to text item delimiters set res to missing value set text item delimiters to tofind repeat with tis in text items of TheString if res is missing value then set res to tis else set res to res & toreplace & tis end if end repeat set text item delimiters to ditd return res end findAndReplace on quitVLC() tell application "System Events" if exists process "VLC" then try quit application "VLC" end try end if end tell end quitVLC
Le script se charge de scruter les disques un à un pour savoir lequel est un DVD, l'exécution de cette partie du script peut être relativement longue dépendamment du nombre de disques montés et de leur volume ; ainsi, une "propriété" (Declaring Variables and Properties) mémorise l'emplacement du disque ayant été reconnu comme étant un DVD lors de la dernière exécution du script ; dans le but de tester l'emplacement de ce disque prioritairement, de cette façon les tests peuvent être accélérés.
Il est recommandé d'utiliser une version 0.8.6b[1] de VLC media player ou supérieure.
Télécharger le script
Télécharger l'archive contenant le script : scptVLC4DVD.zip (±27 Ko).
Utiliser le script
Dans les Préférences Système, dans le menu "A l'insertion d'un DVD vidéo" choisir : "Exécuter le script…" (en cas d'incompréhension, relire le premier paragraphe et suivre les liens hypertextes).
Notes
[1] It fixes many crashes, especially during fullscreen on Mac OS X