Sorteren in iTunes

Sorteren in iTunes. Het lijkt eenvoudig. Gewoon klikken op een kolomkop, en je sorteert je complete muziekbibliotheek op die kolom. Werkt uitstekend. Dat wil zeggen… Het lijkt uitstekend te werken.

Het probleem.
Als de naam van een nummer/artiest/album begint met “A”, “An” of “The”, dan sorteert iTunes op het eerste woord daarná. En dat vind ik irritant.

Twee voorbeelden…
Als ik sorteer op bandnaam, dan verwacht ik dat “A tribe called Quest” bij de A gesorteerd staat. Niet bij de T.
Als ik sorteer op titel, dan verwacht ik dat “The sound of winter” van Bush bij de T staat. Niet bij de S.

Gelukkig is hier een eenvoudige oplossing voor. Je kunt de automatisch gekozen sorteernaam namelijk aanpassen.
Sorteervenster in iTunes

Het simpelweg leegmaken van de sorteervelden werkt helaas niet. iTunes zet dan stiekem de zelfgekozen sorteernaam terug.
Dus in bovenstaand geval; voeg een “A” toe bij “Artiestsortering” en “Albumartiestsortering”, en je bent klaar.

Lijkt een goede oplossing. Maar wat te doen als je duizenden en duizenden nummers in iTunes hebt staan? Maak je dan een interactieve playlist voor alles dat begint met “A”, en ga je die tracks dan allemaal handmatig aanpassen? En daarna hetzelfde voor “The” en “An”? Lijkt mij niet. Ik in ieder geval niet.

De oplossing (deel 1).
Er blijkt een iTunes-configuratiebestand te bestaan waarin letterlijk omschreven staat welke woorden niet moeten worden meegenomen bij het sorteren, als deze woorden aan het begin van een nummer/artiest/album staan. Dat bestand heet SortPrefixes.plist en is hier te vinden:

OSX:
/Applications/iTunes.app/Contents/Resources/Dutch.lproj/SortPrefixes.plist

Windows 7:
C:\Program Files (x86)\iTunes\iTunes.Resources\nl.lproj\SortPrefixes.plist

Dit is de inhoud van dat bestand:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>SortPrefixes</key>
	<array>
	  <string>the</string>
	  <string>a</string>
	  <string>an</string>
	  <string>de</string>
	  <string>het</string>
	  <string>een</string>
	</array>
</dict>
</plist>

Open het bestand met een text-editor, en haal alles tussen

<array>

en

</array>

weg, en sla het bestand op. Alle muziek die je vanaf dat moment importeert in iTunes zal gewoon op de volledige naam worden gesorteerd.
Ik weet overigens niet of een update van de iTunes-software deze aanpassing terugdraait en je bovenstaande handeling dan dus opnieuw moet uitvoeren. Zodra ik dat wel weet zal ik het hier melden.
[Update (16-12)] Zojuist iTunes (OSX) geüpdate naar versie 10.5.2, en het bestand SortPrefixes.plist is niet aangepast door de update :) [/Update]

Ter info… Ik kon het bestand SortPrefixes.plist in Windows gewoon wijzigen in notepad, maar in OSX moest in als root inloggen in de terminal om het bestand vervolgens via vi aan te kunnen passen.

Maar wat nou als je heel veel muziek in iTunes hebt staan, en je niet de behoefte kunt ontwikkelen om iTunes leeg te gooien en alles opnieuw te importeren? Bovenstaande oplossing werkt immers alleen voor muziek, geimporteerd ná de aanpassing aan het bestand SortPrefixes.plist.

De oplossing (deel 2).
NB. Deze oplossing is OSX-only. Mocht iemand weten hoe hetzelfde te bereiken in Windows 7, dan hoor ik dat graag.

Zoals in de afbeelding hierboven te zien is, is er in iTunes in het sorteervenster (o.a.) een veld “Artiest” en een veld “Artiestsortering” te vinden.
Wat praktisch zou zijn, is als de tekst in het veld “Artiest” (de correcte naam) ook in het veld “Artiestsortering” (de ingekorte naam) komt te staan. Onderstaand AppleScript kan dat bijkans volautomagisch voor je regelen.

Open de AppleScript-editor en plak onderstaande code in een leeg venster van de AppleScript-editor.

property allOptions : {"Song Name", "Artist", "Album", "Album Artist", "Composer", "Genre", "Comments", "Show", "Grouping", "Sort Name", "Sort Album", "Sort Artist", "Sort Album Artist"}
property my_title : "Put This In That"
global thisTag, thatTag, theNewTags, theOriginalTags, yn

tell application "iTunes"
	if selection is not {} then -- if tracks are selected...
		set sel to selection
		set numTracks to (length of sel)
		set s to "s"
		if numTracks is 1 then set s to ""
		display dialog "The data from one tag REPLACES the data in another tag in all the selected tracks, with option to delete data in first tag." & return & return & (numTracks & " track" & s & " selected.") buttons {"Cancel", "Continue"} default button 2 with title my_title giving up after 30
		if gave up of result is true then return

		my choose_this_tag()

		my choose_that_tag()

		set yn to (button returned of (display dialog "Delete data in " & thisTag & " afterwards?" buttons {"Yes", "No"} default button 2 with title my_title giving up after 45) is "Yes")

		set oldfi to fixed indexing
		set fixed indexing to true

		repeat with t from 1 to numTracks
			tell contents of item t of sel
				set theOriginalTags to {get name, get artist, get album, get album artist, get composer, get genre, get comment, get show, get grouping, get sort name, get sort album, get sort artist, get sort album artist}
				set theNewTags to theOriginalTags
				my do_put()
				set {name, artist, album, album artist, composer, genre, comment, show, grouping, sort name, sort album, sort artist, sort album artist} to theNewTags
			end tell
		end repeat

		set fixed indexing to oldfi
	else
		display dialog "No tracks have been selected." buttons {"Cancel"} default button 1 with icon 0 giving up after 30
	end if -- no selection
end tell

to choose_this_tag()
	tell application "iTunes"
		set n to (choose from list allOptions with prompt ("Select a tag to get data from:") with title my_title)
		if n is false then error number -128
		set thisTag to (n as text)
	end tell
end choose_this_tag

to choose_that_tag()
	set o to {}
	repeat with t in allOptions
		if (t as text) is not thisTag then copy t to end of o
	end repeat

	tell application "iTunes"
		set n to choose from list o with prompt ("Use data from the " & thisTag & " tag to REPLACE data in...") with title my_title
		if n is false then error number -128
		set thatTag to n as text
	end tell
end choose_that_tag

to do_put()
	try
		repeat with i from 1 to (length of allOptions)
			if thisTag is (item i of allOptions) then
				set thisTag_sto to (item i of theOriginalTags)
				exit repeat
			end if
		end repeat

		repeat with i from 1 to (length of allOptions)
			if thatTag is (item i of allOptions) then
				set (item i of theNewTags) to thisTag_sto
				exit repeat
			end if
		end repeat

		if yn then
			repeat with i from 1 to (length of allOptions)
				if thisTag is (item i of allOptions) then
					set (item i of theNewTags) to ""
					exit repeat
				end if
			end repeat
		end if

	end try

end do_put

(Dit script is een aangepaste versie van een script van Doug Adams dat hier te vinden is.)

Open iTunes, en selecteer een aantal tracks waarvan je de gegevens (in dit geval “Artiestsortering”) wilt aanpassen.
Ga naar de AppleScript-editor en klik op de knop “Voer uit”.

Je krijgt nu de vraag “Wat is de BRON”. Kies voor “Artist”.
AppleScript iTunes sort from

En daarna “Wat is het DOEL”. Kies “Sort Artist”.
AppleScript iTunes sort to

Vervolgens krijg je de “Yes/No”-vraag of je na deze tag-kopie-actie de bron-tag (“Artist”) wilt wissen. Het antwoord hierop is uiteraard “No”.
Het script zal nu van de in iTunes geselecteerde nummers de gegevens uit het veld “Artist” kopiëren naar het veld “Sort Artist”. Als de computer daar klaar mee is kan je dezelfde actie nogmaals uitvoeren, maar nu voor bijvoorbeeld “Song Name” en “Sort Name”, enzovoort.
Op deze manier kan je de sorteergegevens van je complete muziekbibliotheek bijwerken, zonder dat je alles opnieuw hoeft te importeren.

Handig :)

Qua credits; “Oplossing deel 1 en 2″ heb ik via discussions.apple.com.

About Beun

Nieuwsjunk, muziekfreak, weerfan, stamboomuitdokteraar, geluidsgoeroe, gadgetnerd, websitefrutter, nep-astronoom, taalzeur.
This entry was posted in Muzak and tagged , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>