Sat Sep 3 13:49:13 2005

Ticket #1438 (Closed: fixed)

problems with recursive opening for embedded playlists


Priority: urgent Reporter: maroy
Severity: major Assigned to: tomash
Component: bug Status: closed
Version:   Resolution: fixed
Milestone:   Keywords:  

Description by maroy:

I'm having problems with the recent changes to recursive playlist openings. I added an embedded playlist to the storage reset() method, see storageServer/var/tests/plistEmbedded.xml when I access this playlist with recursive = true, I only get an array that contains the audio clips for the playlist, but not the embedded playlists themselves. namely, I get the following XML-RPC result: <value><str uct><member><name>chsum</name><value>be20194014395a35fe4a635dd88275da< /value></member><member><name>files</name><value><array><data><value>f ile:///home/darkeye/src/livesupport/livesupport/modules/storageServer/ var/../../storageServer/var/access/7a7e6a705ad283e2.mp3</value><value> file:///home/darkeye/src/livesupport/livesupport/modules/storageServer /var/../../storageServer/var/access/1b4df31d1aeff922.mp3</value></data ></array></value></member><member><name>size</name><value><i4>1433</i4 ></value></member><member><name>token</name><value>40a9165828fcb084</v alue></member><member><name>url</name><value>http://localhost:80/~dark eye/livesupport/storageServer/var/access/40a9165828fcb084.xml</value>< /member></struct></value> please modify the new recursive access playlist method so that it will return the playlists as well.

Attachments

Changelog

Sat Sep 3 13:49:32 2005: Modified by maroy

  • status changed from new to assigned
  • owner changed from anonymous to tomash

Mon Sep 5 01:14:54 2005: Modified by tomash

    There is a problem - I can preaccess all audioClips in hierarchy of embedded playlists, but I can't generally access the embedded playlist themselves, because it may not be separately stored in the storageServer and then it may not exist as separately accessible object. Do you mean I should only reflect hierarchy of embedded playlists in the 'files' field istead of plain array of audioClips URLs? - i.e. make this field hierarchical? If there is only nested real playlist (playlist stored in the storageServer): <playlistElement id="..." relativeOffset="..."> <playlist id="real_playlist_ID" playlength="..." title="..." /> </playlistElement> it's OK - I can preaccess it as well. BTW. I will be on-line on IM tomorrow (Mon 5.Sep) as possible.

    Mon Sep 5 08:48:59 2005: Modified by maroy

      I'm not sure if I understand what you mean. let's take the following use case, of opening an embedded playlist via XML-RPC. suppose we have the following structure: playlist1 |-- clip1.1 |-- playlist1.2 | |-- clip2.1 | `-- clip2.2 |-- clip1.3 `-- clip1.4 with the 'old' XML-RPC API, one would make the following calls: xr_accessPlaylist(playlist1) then parse the XML returned, then call: xr_accessRawAudioData(clip1.1) xr_accessPlaylist(playlist1.2) (parse again) xr_accessRawAudioData(clip2.1) xr_accessRawAudioData(clip2.2) xr_accessRawAudioData(clip1.3) xr_accessRawAudioData(clip1.4) instead of all these calls, we would need a single call, that returns all information at once, that was returned above in separate calls. but this is quite easy: just create an tree structure in the return value, and pass on all information that would be returned with the separate calls. for example, currently xr_accessPlaylist returns a structure like: {url, token, checksum} and xr_accessRawAudioData returns a structure like: {url, token} (according to the documentation.. no checksum?) now, it could return: {plalyist1.url, playlist1.token, playlist1.checksum, { {clip1.1.url, clip1.1.token}, {playlist1.2.url, playlist1.2.token, playlist1.2.checksum, {clip2.1.url, clip2.1.token}, {clip2.2.url, clip2.2.token} }, {clip1.3.url, clip1.3.token}, {clip1.4.url, clip1.4.token}, } note that it's the same information returned as before, but only in one go...

      Mon Sep 5 09:17:12 2005: Modified by tomash

        I can use the return structure you described - it's clear and pretty, I'm going to implement it immediately, but there remains problem with embedded playlists. Terminology as I used - correct me, please, if I'm wrong: 1) nested playlist - playlist included in playlistElement, but without own inline content - its content is stored in storageServer under its id (its id is not equal with parent playlist id) - it's something as "playlist symlink" ;) 2) embedded playlist - included in playlistElement too - have inline content (own playlistElement tags) - <b>shouldn't be stored in storageServer under its own ID, because it would be redundant definition of this playlist</b> IMO we shouldn't use embedded playlists - there is problem with redundance or difficult accessibility. Nested playlists are IMO better - and we can call them "embedded" ;)

        Mon Sep 5 09:23:53 2005: Modified by maroy

          I'm not sure about inline playlists myself, Ferenc will clear this issue up shortly...

          Mon Sep 5 12:42:08 2005: Modified by tomash

            Return structure implemented now: {plalyist1.url, playlist1.token, playlist1.checksum, { {clip1.1.url, clip1.1.token}, {playlist1.2.url, playlist1.2.token, playlist1.2.checksum, {clip2.1.url, clip2.1.token}, {clip2.2.url, clip2.2.token} }.content, {clip1.3.url, clip1.3.token}, {clip1.4.url, clip1.4.token}, }.content } The field 'files' have been renamed to 'content' field - 'files' was not suitable for this type of structure. The current implementation handle inline playlists too, but returns null in url,token etc. fields for inline playlist.

            Mon Sep 5 12:50:42 2005: Modified by maroy

              thanks... I'm asking Ferenc on his view on these inlined playlists...

              Mon Sep 5 15:13:37 2005: Modified by fgerlits

                Yes, with the current structure it is theoretically possible to upload a playlist with an embedded playlist which is not in the storageServer. But the GUI does not allow this, so (barring some strange bug) it should never happen. The current structure is highly redundant and stupid, and should be changed as you suggest, to a symlink-type system. The question is: do we need to do this today, or can it wait for release 1.0.1?

                Mon Sep 5 15:44:28 2005: Modified by maroy

                  1.0.1

                  Tue Sep 6 14:53:18 2005: Modified by maroy

                  • resolution set to fixed
                  • status changed from assigned to closed

                  I incorporated the changes to be used by the storage client. but we have to look through this protocol in detail, as currently it's highly redundant and ugly as well :(


                  Add/Change #1438 (problems with recursive opening for embedded playlists)




                  Change Properties






                  Action