Получить случайный файл из папки и добавить его в плейлист iTunes

Я посмотрел на некоторые ответы, которые говорят мне, как получить случайные файлы из папок, и некоторые, которые могут иметь дело с плейлистами iTunes. Не удалось собрать их вместе.

То, что я ищу, - это способ (я думал в AppleScript) получить 200 песен в папке Folk playlist на жестком диске, выбрать случайным образом 20 из этих песен и затем добавить их в плейлист iTunes.

Я знаю, что умные плейлисты могут делать это, но я хочу делать это как можно чаще вне iTunes, потому что большая часть моей музыки находится в папках, а не в iTunes как таковой.

Я был бы очень благодарен за любую помощь с:

  1. Получение 20 случайных файлов из папки А
  2. Затем вставляем их в плейлист.

Я действительно задавался вопросом, есть ли какой-нибудь способ, которым я мог получить количество файлов в процентах (20% файлов в Народном), но это не действительно нарушитель соглашения!

Заранее спасибо всем, кто может мне помочь!

запоздалый

2 ответа

Решение

Вот сценарий, который вы ищете. Я оставляю первый ответ, потому что он также может быть полезен для других.

property RList : "my random list" -- name of the random list
property ListGenres : {"Rock", "Pop", "Soundtrack", "Jazz"} -- your list of genres
property NumPerGenre : {3, 2, 5, 4} -- the number of songs per genre

tell application "iTunes"
if exists user playlist RList then -- check if the playlsit exists or not
    delete tracks of user playlist RList -- delete all current tracks of the play list
    repeat while (number of tracks of playlist RList) > 0
        delay 0.1 -- wait for the library to clear out, because iTunes is asynchronous !
    end repeat
else -- creation of the play list
    set MyPlayList to make new user playlist with properties {name:RList}
end if

repeat with I from 1 to (count of ListGenres) -- loop per genre
    set ListTracks to (tracks whose genre is (item I of ListGenres))
    repeat with J from 1 to (item I of NumPerGenre) -- loop to add x tracks per genre
        set TheTrack to item (random number from 1 to (count of ListTracks)) of ListTracks
        duplicate TheTrack to playlist RList
    end repeat -- loop for all tracks per genre
end repeat -- loop by Genre
play playlist RList -- start to play !  
end tell

Я положил много комментариев, чтобы прояснить (я надеюсь). В этом примере у меня 4 жанра, и я получу 3 песни первого жанра, 2 песни второго жанра, и так далее. Вы можете изменить эти свойства, если список жанров содержит столько же элементов, сколько список numpergenre.

К сожалению, начиная с iTunes 11, атрибут shuffle не может быть установлен с помощью скрипта, вы должны установить его вручную в iTunes, чтобы воспроизвести список случайным образом (его можно установить один раз для всех)

Чтобы воспроизвести треки, вы должны сначала импортировать их в iTunes, как сказал Vadian. лучше импортировать их в список воспроизведения (легче удалить после). Сценарий ниже делает это:

set MyRatio to 0.2 -- the % of files randomly selected over the total file of the selected folder
set MyFolder to choose folder "select folder with your musics"
tell application "Finder" to set MyList to every file of MyFolder

-- build the random list
set SongList to {}
set MaxCount to (MyRatio * (count of MyList)) as integer
set MyCount to 0
repeat until MyCount = MaxCount
set MyItem to random number from 1 to (count of MyList)
set NewFile to (item MyItem of MyList) as string
if NewFile is not in SongList then
    copy NewFile to the end of SongList
    set MyCount to MyCount + 1
end if
end repeat

-- add the files to iTunes new playlist
tell application "iTunes"
set MyPlayList to make new user playlist with properties {name:"my Import"}
repeat with I from 1 to count of SongList
    add ((item I of SongList) as alias) to MyPlayList
end repeat
play MyPlayList -- start to play the play list
end tell
Другие вопросы по тегам