1 votes

Liste de lecture intelligente dans iTunes basée sur l'emplacement du fichier

Je voudrais créer une liste de lecture intelligente dans iTunes basée sur un dossier spécifique (je gère ma bibliothèque multimédia manuellement).

Est-ce encore possible d'une certaine manière dans iTunes 12 (même si cela implique l'utilisation de scripts)?

2voto

Vic Points 1820

Je ne pense pas. Ils semblent utiliser des informations de la base de données/bibliothèque iTunes, comment pourraient-ils savoir quelque chose sur un dossier aléatoire dans votre ordinateur ?

Vous pourriez cependant le simuler en utilisant soit des Actions de Dossier ou launchd mais aucun n'est parfait.

Les Actions de Dossier ne fonctionnent que pour les nouveaux fichiers dans un répertoire et elles fournissent la liste des fichiers ajoutés au programme/script que vous exécuterez, vous savez donc ce qui a changé.

launchd, quant à lui, exécutera votre script/application à chaque changement dans le(s) dossier(s), vous pouvez surveiller plusieurs, mais il ne vous dira pas quel chemin a changé ni comment - ajouté ou supprimé, etc.

Je choisirais launchd personnellement. S'il s'agit simplement d'un seul dossier, vous pourriez le coder en dur dans votre script.

Quant au script, essayez ceci...

set dpath to "/some/path/test/"
set qdpath to quoted form of dpath
set listname to "MyList"
set adpath to (POSIX file dpath as alias)

# Get audio files in selected folder 
#   -- alas no recursive search results without a lot more code... :(
#   -- or use mdfind or other command line tool using `do shell script...`
set afiles to {}
tell application "Finder"
    repeat with ext in {".mp3", ".m4a"}
        set l to (every file in adpath whose name contains ext)
        repeat with f in l
            set end of afiles to (f as alias)
        end repeat
    end repeat
end tell

tell application "iTunes"
    if not (user playlist listname exists) then
        make new user playlist with properties {name:listname}
    end if

    # Construire une liste des pistes existantes pour éviter les doublons...
    set itracks to {}
    try
        set itracks to (get location of every track in playlist listname)
    end try

    set view of window 1 to playlist listname

    # Ajouter seulement s'ils ne sont pas déjà dans la playlist
    repeat with afile in afiles
        if afile is not in itracks then
            try
                set tid to (add afile to playlist listname)
            end try
        end if
    end repeat

    # Supprimer les pistes de la playlist iTunes qui ne sont pas dans le dossier
    # et de la base de données iTunes sinon elles apparaissent toujours comme des pistes invalides...
    set iItems to (every track in playlist listname)
    set iLib to library playlist named "Library"
    repeat with iItem in iItems
        set loc to location of iItem
        if loc is not in afiles then
            set pid to persistent ID of iItem

            log "Suppression de : " & loc
            try
                # Merci Doug Adams, ça me rendait fou....
                delete (some file track of library playlist 1 whose persistent ID is pid)
            end try
            delay 1
        end if
    end repeat
end tell

C'est en fait amusant de le regarder réagir à l'ajout et la suppression de fichiers du dossier. Profitez-en.... :)

Enfin, je vous recommanderai de vérifier ces URLs.

www.macissues.com/2015/02/02/how-to-use-launchagents-to-monitor-folder-contents-in-os-x/ apple.stackexchange.com/questions/6658/

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X