Bug 14854 - Awkward Intermediate menu in Rhapsody playlists
: Awkward Intermediate menu in Rhapsody playlists
Status: NEW
Product: MySqueezebox.com
Classification: Unclassified
Component: Rhapsody
: Prod
: PC Other
: P1 normal with 1 vote (vote)
: Joplin
Assigned To: Andy Grundman
: ipeng
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2009-10-20 02:07 UTC by Joerg Schwieder
Modified: 2009-10-20 07:40 UTC (History)
2 users (show)

See Also:
Category: Task


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Joerg Schwieder 2009-10-20 02:07:21 UTC
If I open a Rhapsody playlist (e.g. "Rhapsody->Playlists->Top Playlists-><anything>"
I get an awkward intermediate menu not containing the playlist itself but

Play playlist (n tracks)
Add playlist to library
Playlist length: xx
Created: xx
Last Modified: xx

This kills my playlist processing in iPeng, mainly because on the level above this menu (where the list of playlists is shown) this is tagged with "type => playlist" which is clearly not true because it doesn't contain a playlist.

Contrary to the wording, "Play Playlist" will NOT play the playlist but actually open it.

Could any of the following be done:
- Contract this menu and the "Play Playlist" menu to a single one which contains all the commands as well as the playlist itself. I believe this is what is being done for Albums on Rhapsody
- At least remove the "type => playlist" tag on the parent level but keep it for the actual playlist menu (the "Play Playlist" item; here it is correct, it's also present).

Example code for one of these menus:
do {
  my $a = [
    {
      channel => "/c75d0c4f/slim/request",
      data => {
            base      => {
                           actions => {
                                 add => {
                                       cmd => ["myapps", "playlist", "add"],
                                       itemsParams => "params",
                                       params => { menu => "myapps" },
                                       player => 0,
                                     },
                                 "add-hold" => {
                                       cmd => ["myapps", "playlist", "insert"],
                                       itemsParams => "params",
                                       params => 'fix',
                                       player => 0,
                                     },
                                 go => { cmd => ["myapps", "items"], itemsParams => "params", params => 'fix' },
                                 more => {
                                       cmd => ["myapps", "items"],
                                       itemsParams => "params",
                                       params => 'fix',
                                       player => 0,
                                       window => { isContextMenu => 1 },
                                     },
                                 play => {
                                       cmd => ["myapps", "playlist", "play"],
                                       itemsParams => "params",
                                       nextWindow => "nowPlaying",
                                       params => 'fix',
                                       player => 0,
                                     },
                                 "set-preset-0" => {
                                       cmd => ["jivefavorites", "set_preset", "key:0"],
                                       itemsParams => "params",
                                       player => 0,
                                     },
                                 "set-preset-1" => {
                                       cmd => ["jivefavorites", "set_preset", "key:1"],
                                       itemsParams => "params",
                                       player => 0,
                                     },
                                 "set-preset-2" => {
                                       cmd => ["jivefavorites", "set_preset", "key:2"],
                                       itemsParams => "params",
                                       player => 0,
                                     },
                                 "set-preset-3" => {
                                       cmd => ["jivefavorites", "set_preset", "key:3"],
                                       itemsParams => "params",
                                       player => 0,
                                     },
                                 "set-preset-4" => {
                                       cmd => ["jivefavorites", "set_preset", "key:4"],
                                       itemsParams => "params",
                                       player => 0,
                                     },
                                 "set-preset-5" => {
                                       cmd => ["jivefavorites", "set_preset", "key:5"],
                                       itemsParams => "params",
                                       player => 0,
                                     },
                                 "set-preset-6" => {
                                       cmd => ["jivefavorites", "set_preset", "key:6"],
                                       itemsParams => "params",
                                       player => 0,
                                     },
                                 "set-preset-7" => {
                                       cmd => ["jivefavorites", "set_preset", "key:7"],
                                       itemsParams => "params",
                                       player => 0,
                                     },
                                 "set-preset-8" => {
                                       cmd => ["jivefavorites", "set_preset", "key:8"],
                                       itemsParams => "params",
                                       player => 0,
                                     },
                                 "set-preset-9" => {
                                       cmd => ["jivefavorites", "set_preset", "key:9"],
                                       itemsParams => "params",
                                       player => 0,
                                     },
                               },
                         },
            count     => 5,
            item_loop => [
                           {
                             params => {
                                         favorites_title => "Play Playlist (12 tracks)",
                                         favorites_type => "playlist",
                                         favorites_url => "http://www.mysqueezebox.com/api/rhapsody/v1/opml/metadata/getAllTracksForPlaylist?playlistId=pp.25277214",
                                         isContextMenu => 1,
                                         item_id => "a3e46907.6.3.2.0.0",
                                         type => "playlist",
                                       },
                             text   => "Play Playlist (12 tracks)",
                           },
                           {
                             actions => {
                                   add => {
                                            cmd => ["myapps", "items"],
                                            params => {
                                                  favorites_title => "Add playlist to library",
                                                  favorites_type => "link",
                                                  favorites_url => "http://www.mysqueezebox.com/api/rhapsody/v1/opml/library/createMemberPlaylistFromPlaylist?playlistId=pp.25277214&newPlaylistName=Sly%20%26%20Robbie%20%2B%20The%20Taxi%20Gang%20V%20Purpleman%20%26%20Friends",
                                                  item_id => "a3e46907.6.3.2.0.1",
                                                  menu => "myapps",
                                                  type => "link",
                                                },
                                          },
                                   go  => { cmd => ["myapps", "items"], params => 'fix' },
                                 },
                             addAction => "go",
                             text => "Add playlist to library",
                           },
                           {
                             action    => "none",
                             actions   => {
                                            add => { cmd => ["myapps", "items"], params => { menu => "myapps" } },
                                            go  => { cmd => ["myapps", "items"], params => 'fix' },
                                          },
                             addAction => "go",
                             style     => "itemNoAction",
                             text      => "Playlist Length: 46:35",
                           },
                           {
                             action    => "none",
                             actions   => {
                                            add => { cmd => ["myapps", "items"], params => { menu => "myapps" } },
                                            go  => { cmd => ["myapps", "items"], params => 'fix' },
                                          },
                             addAction => "go",
                             style     => "itemNoAction",
                             text      => "Created: 2008-12-27",
                           },
                           {
                             action    => "none",
                             actions   => {
                                            add => { cmd => ["myapps", "items"], params => { menu => "myapps" } },
                                            go  => { cmd => ["myapps", "items"], params => 'fix' },
                                          },
                             addAction => "go",
                             style     => "itemNoAction",
                             text      => "Last Modified: 2009-05-06",
                           },
                         ],
            offset    => 0,
            title     => "Sly & Robbie + The Taxi Gang V Purpleman & Friends",
            window    => { windowStyle => "text_list" },
          },
      ext => { priority => "" },
      id => 139,
    },
  ];
  $a->[0]{data}{base}{actions}{"add-hold"}{params} = $a->[0]{data}{base}{actions}{add}{params};
  $a->[0]{data}{base}{actions}{go}{params} = $a->[0]{data}{base}{actions}{add}{params};
  $a->[0]{data}{base}{actions}{more}{params} = $a->[0]{data}{base}{actions}{add}{params};
  $a->[0]{data}{base}{actions}{play}{params} = $a->[0]{data}{base}{actions}{add}{params};
  $a->[0]{data}{item_loop}[1]{actions}{go}{params} = $a->[0]{data}{item_loop}[1]{actions}{add}{params};
  $a->[0]{data}{item_loop}[2]{actions}{go}{params} = $a->[0]{data}{item_loop}[2]{actions}{add}{params};
  $a->[0]{data}{item_loop}[3]{actions}{go}{params} = $a->[0]{data}{item_loop}[3]{actions}{add}{params};
  $a->[0]{data}{item_loop}[4]{actions}{go}{params} = $a->[0]{data}{item_loop}[4]{actions}{add}{params};
  $a;
}
Comment 1 Andy Grundman 2009-10-20 05:31:46 UTC
Yeah this menu does suck, but the top-level type=playlist does work, because there is a separate playlist URL element.  Maybe this is broken via CLI though.  I'll rework the menu to be more like the album menu.
Comment 2 Joerg Schwieder 2009-10-20 07:40:40 UTC
I don't exactly understand what you mean by "does work".
You mean you can use it to play? That's ok and I can indeed play the playlist.
I don't use CLI for this.

What I can NOT do though, is enter the "Play playlist" submenu because iPeng sees this as a playable item within a playlist and thus doesn't descend.
So it would be good if you could re-wrap that lower level into the first level playlist menu.