Получить случайный файл из папки и добавить его в плейлист iTunes
Я посмотрел на некоторые ответы, которые говорят мне, как получить случайные файлы из папок, и некоторые, которые могут иметь дело с плейлистами iTunes. Не удалось собрать их вместе.
То, что я ищу, - это способ (я думал в AppleScript) получить 200 песен в папке Folk playlist на жестком диске, выбрать случайным образом 20 из этих песен и затем добавить их в плейлист iTunes.
Я знаю, что умные плейлисты могут делать это, но я хочу делать это как можно чаще вне iTunes, потому что большая часть моей музыки находится в папках, а не в iTunes как таковой.
Я был бы очень благодарен за любую помощь с:
- Получение 20 случайных файлов из папки А
- Затем вставляем их в плейлист.
Я действительно задавался вопросом, есть ли какой-нибудь способ, которым я мог получить количество файлов в процентах (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