On Mon, Dec 18, 2006 at 11:11:27PM +0000, Hamish Allan wrote: > itunes = app('iTunes') > x = itunes.sources.first.playlists[its.name.contains('MyName')] > > This code fetches any playlists containing the string 'MyName'. But I > want an exact match. Using 'equals' rather than 'contains' doesn't > work.
You just use '==' instead. In [4]: itunes.sources.first.playlists[its.name == 'Stations']() Out[4]: [app(u'/Applications/iTunes.app').sources.ID(41).user_playlists.ID(1936)] But in this case, you don't need to. In [6]: itunes.sources.first.playlists['Stations']() Out[6]: app(u'/Applications/iTunes.app').sources.ID(41).user_playlists.ID(1936) Most objects support multiple reference forms, as you'll see if you look at their documentation. > How do I find out which operations its.name supports? And more > generally, what is possible in other similar situations with different > objects? Use .help(). So, for example, you can see that the playlists can be referenced by index, name or ID: In [7]: itunes.sources.first.playlists.help() ============================================================================== Appscript Help (-t) Reference: app(u'/Applications/iTunes.app').sources.first.playlists ------------------------------------------------------------------------------ Description of reference Element: playlists -- by index, name, id [...] Note the reference forms above. It also helps to view the scripting dictionary, either using appscript's tools for doing so in a Web browser, or just with Script Editor (as I normally do). > I also want to do what the following code suggests: > > x = itunes.sources.first.playlist_folders[its.name.equals('MyFolder')] You want 'folder_playlists' not 'playlist_folders'. So again it's pretty simple: In [15]: itunes.sources.first.folder_playlists['Statistics']() Out[15]: app(u'/Applications/iTunes.app').sources.ID(41).folder_playlists.ID(122340) > y = itunes.sources.first.playlists[its.parent.equals(x)] Unfortunately here you run into a problem, as Apple didn't fully implement terminology for 'folder playlists', but you can view the scripting dictionary to figure it out. 'parent', while a property of playlists, isn't always set. So the only thing I could figure out was to iterate through them in Python: In [45]: stats_id = itunes.folder_playlists['Statistics'].id() In [46]: [p for p in itunes.user_playlists() if p.parent.exists() ....: and p.parent.id() == stats_id] Out[46]: [app(u'/Applications/iTunes.app').sources.ID(41).user_playlists.ID(1032), app(u'/Applications/iTunes.app').sources.ID(41).user_playlists.ID(1158), app(u'/Applications/iTunes.app').sources.ID(41).user_playlists.ID(1060)] -- Nicholas Riley <[EMAIL PROTECTED]> | <http://www.uiuc.edu/ph/www/njriley> _______________________________________________ Pythonmac-SIG maillist - Pythonmac-SIG@python.org http://mail.python.org/mailman/listinfo/pythonmac-sig