After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 408204 - sync / auto-sync to playlist
sync / auto-sync to playlist
Status: RESOLVED FIXED
Product: banshee
Classification: Other
Component: general
git master
Other Linux
: High enhancement
: 1.6
Assigned To: Banshee Maintainers
Banshee Maintainers
: 401838 586614 588538 607395 (view as bug list)
Depends on:
Blocks: 576709
 
 
Reported: 2007-02-15 12:14 UTC by Christopher Friedt
Modified: 2010-01-26 16:13 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
screenshot of extra question marks (121.88 KB, image/png)
2010-01-26 15:09 UTC, ross
Details

Description Christopher Friedt 2007-02-15 12:14:18 UTC
Hi Banshee Devs!

I posted this on the mailing list a while ago, but I also think that I should put it up here. 

The idea is this:

1) allow devices to be synchronized to playlists instead of the entire music library

2) give this mechanism some 'memory' so that device id's are stored in the banshee database along with a playlist name.

The benefits:

a) updating track meta-info, such as track numbers, album names, etc, could be    done in an incremental & very automatic manner, simply by right-clicking on the device and selecting 'synchronize-to-playlist'

motivation: 

When i update track meta-info, i usually do this on my desktop machine (iPods don't allow on-the-fly editing of track meta-data). Since only a subset of the songs on my desktop actually make it to my device, i have built a playlist for each device. However, save from remember each track that i change (or add or delete) and doing this track-by-track, the only efficient way to update all of the songs on my ipod is currently to completely erase it, and then copy the entire playlist over again. 

There are generally 2 scenerios where i could see this being useful, and those are i) if one only likes their favorite songs on their device, and ii) if the device is small, and their entire music library could by no means fit.

b) auto-sync on a per-device/playlist basis

motivation: making things automatic

Assume that there is a database of devices and associated playlists that have already connected, as in the table below:

> > 'unique id' | 'name of associated playlist'
> > =======================================================
> > asd98ysdgpuhasd   | (null)
> > 087aouhw4'p9u8ase | "General"
> > 0o8wruhas7yasdf   | "Nano"

===
***
if a device has never been connected, and thus it's 'unique id' is
new to the database, when banshee scans the database for a record it 
will have no records returned.

Banshee could then take this event, and ask the user to associate a 
playlist with this 'unique id'. If the user declines, then add the 
'unique id' | (null) record to the database, so that the user isn't 
prompted every time.

===

Then i suppose a module could be created so that this table could be manipulated in a preference record of some kind.

So in the above scenario, if 'asd98ysdgpuhasd' connected, nothing would 
happen. If '087aouhw4'p9u8ase' connected, then it (could / would) be 
automatically synced to the "General" playlist. Likewise, for 
'0o8wruhas7yasdf' -> "Nano"

if say 'newid00382' was scanned, then the user would go through *** 
exactly once.

I would be willing to help with the coding of this as a module i guess, although I have no practical experience with C# . My programming experience comes from C, C++, & Java.

Does anyone else think this is a good idea??
Comment 1 Nico Laum 2007-02-23 08:34:40 UTC
Yes, I think this is a good idea. I'm missing this feature too...
Comment 2 Justin J Stark 2008-01-21 23:38:34 UTC
This has my vote too.  I sent an email to the mailing list.  This bug report is almost a year old which is kind of depressing.
Comment 3 Christopher Friedt 2008-01-22 16:49:45 UTC
I wish I could have started coding this in the summer, but life has been insanely busy for me for the last 6 months. 

It would be a really great way to get some experience doing c# (primarly i code in c,c++, and java) and the idea also has some potential to be enhanced (forward / reverse syncing or both using some sort of rsync-like algorithm). 

Actually, this could probably become a keystone in a decentralized digital music sharing / distribution system.

For now at least it will have to wait - I'm 

1) doing a master's degree
2) a full-time engineer
3) about to become a dad
4) living on the other side of the planet

so i wouldn't say i've got a lot of spare cycles :P

(In reply to comment #2)
> This has my vote too.  I sent an email to the mailing list.  This bug report is
> almost a year old which is kind of depressing.
> 

Comment 4 Bertrand Lorentz 2008-11-23 18:17:14 UTC
The first part (allowing devices to be synchronized to playlists) would be bug #401838, so I'm marking this one as depending on it.

Let's keep this bug for the second part : giving this mechanism some 'memory' so that banshee knows which device is sync'ed with which playlist.
Comment 5 Christopher Friedt 2008-11-23 18:49:49 UTC
I'm glad that this bug is gaining some tread - it's good to hear that at least my ideas could be beneficial to others. 

Just to clarify, my vision for this project is 

1) Sync different DAPs to different (or possibly the same) playlists
   * might need to extend the Playlist object
   * create a new table to remember DAPs
2) Automatic (on-connect) Playlist -> DAP synchronization
   * add new tracks that appear in the Playlist to the DAP
   * delete tracks from that DAP that have been 
     deleted from the Playlist, since the last sync
3) Automatic (on-connect,with user interaction) DAP -> Playlist sync
   * on some DAPs its possible to delete the track on the DAP itself
   * if a track has been deleted on the DAP, then it could be
     removed from the Playlist as well
4) Spreadsheet-like user interface for choosing forward or reverse 
   sync on a track-by-track basis.

I would call #2 'forward' sync, and #3 'reverse' sync. Both could potentially happen simultaneously. I still wouldn't mind doing this but seriously, these days ...

try { 
  switch( time ) {
   case FREE:
    time = play_with_junior();
    break;
   case DAYS:
    time = money();
    break;
   case EVERY_OTHER_EVENING:
    time = hit_the_books();
    break;
   default:
    time = hit_the_books();
    break;
 } 
} catch( OverloadedException e ) { 
 e.forgetAboutStackTrace();
 time = try_to_get_some_sleep();
}

In spite of that, I would definitely give a good go at this if, say, I could do this project in the next Google Summer of Code and earn some extra $$. Luckily I'm still a student :)

I've been doing a lot more Groovy, Java, and JNI / C programming these days, which could hopefully translate into some useful Mono/C# stepping stones.

While being a Canadian and doing grad studies, my university is actually in Germany, but I think that still falls within the GSOC rules. 

What do you say, Banshee Devs / Project maintainers ? 

C
Comment 6 Gabriel Burt 2009-03-09 16:31:29 UTC
*** Bug 401838 has been marked as a duplicate of this bug. ***
Comment 7 Chris Van Steenlandt 2009-03-09 20:40:23 UTC
Glad I found this enhancement because I was going to file a bug report for exactly the same thing. 
Certainly the idea of a playlist per DAP is very practical.
I personally would like to call this feature 'sync sublibraries' because you can think of a scenario where you would like to sync a playlist itself with your DAP (in that case you would need to add a playlist to your playlist !?). For the same reason this should be a different object among all the other sources or at least be a child of the 'libray' source'.
Comment 8 David Nielsen 2009-04-05 12:54:36 UTC
This would especially be useful for situations where storage capacity of device < total library size. 

If someone with right could set this to block my metabug for Sansa Fuze support (#576709 it would be great. I am trying to track all the bugs and improvements required to make Banshee the top application for use with the Fuze. As a bonus many of the bugs apply will likely apply to other MTP devices.
Comment 9 Gabriel Burt 2009-04-27 15:24:21 UTC
70% or more of the code required to do this is already written/in git - see playlist_ids in src/Dap/Banshee.Dap/Banshee.Dap/DapLibrarySync.cs.  We just need a UI for choosing which to sync.

I'm marking this as high priority for 1.6 since it should be relatively easy to do, and is a pretty important sync feature.  If anybody wants to dive in and help, please do - just comment here saying you are and giving status reports.
Comment 10 Brian Lucas 2009-06-02 17:15:29 UTC
If no one has picked this up by then I am off on Thursday and Friday and will take a dive into it.  I will most likely be able to get the back end stuff working on my own.. however if anyone would like to help me with the GUI end of things.. its really not my forte.  Thanks
  Brian
Comment 11 Alexander Kojevnikov 2009-06-22 10:36:29 UTC
*** Bug 586614 has been marked as a duplicate of this bug. ***
Comment 12 Alexander Kojevnikov 2009-07-15 07:52:18 UTC
*** Bug 588538 has been marked as a duplicate of this bug. ***
Comment 13 Gabriel Burt 2009-11-20 02:23:46 UTC
This is some UI code I've written for this:
http://banshee-project.org/~gburt/tmp/banshee-dap-sync.png

It's not functional yet, but I think this is a nice, clean approach.
Comment 14 Christopher Friedt 2009-11-20 08:42:41 UTC
Very nice!
Comment 15 Gabriel Burt 2009-12-15 01:04:05 UTC
I just merged my local branch into master, please test!
Comment 16 Alexander Kojevnikov 2010-01-19 01:27:03 UTC
*** Bug 607395 has been marked as a duplicate of this bug. ***
Comment 17 Tim Hockin 2010-01-19 02:28:02 UTC
Excellent - this looks like what I need!  I don't see it in the latest PPA build - is it not integrated yet?
Comment 18 Alexander Kojevnikov 2010-01-19 04:01:41 UTC
(In reply to comment #17)
> Excellent - this looks like what I need!  I don't see it in the latest PPA
> build - is it not integrated yet?

It should be in the banshee daily PPA.
Comment 19 Tim Hockin 2010-01-19 05:58:10 UTC
I have the latest from http://ppa.launchpad.net/banshee-team/ppa/ubuntu and I don't see that UI... ?


thockin@thdesktop:~$ dpkg -l banshee
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version        Description
+++-==============-==============-============================================
ii  banshee        1.5.4~really1. Media Management and Playback application
Comment 20 Alexander Kojevnikov 2010-01-19 06:29:29 UTC
It's in the banshee *daily* PPA, the feature is not yet included in an official release: https://launchpad.net/~banshee-team/+archive/banshee-daily
Comment 21 ross 2010-01-26 14:46:46 UTC
I've seen the new functionality and it looks good. Obvious GUI problem is that the playlists are surrounded by 3 question marks on each, but I presume that is because the feature is still a work in progress?
Comment 22 Alexander Kojevnikov 2010-01-26 14:57:35 UTC
(In reply to comment #21)
> the playlists are surrounded by 3 question marks on each

Screen-shot or it didn't happen :)
Comment 23 ross 2010-01-26 15:09:34 UTC
Created attachment 152314 [details]
screenshot of extra question marks
Comment 24 Christopher Friedt 2010-01-26 15:15:15 UTC
I'm definitely impressed - there's no question about that (cue sound-effects for overly cheesy remark).
Comment 25 Gabriel Burt 2010-01-26 16:13:38 UTC
ross: please file a separate bug - those are supposed to be smart quotation marks (and they show up as such for me)