clementine-player / Clementine

:tangerine: Clementine Music Player
https://www.clementine-player.org/
GNU General Public License v3.0
3.72k stars 671 forks source link

dynamic playlist populated with similar artists #273

Open Clementine-Issue-Importer opened 10 years ago

Clementine-Issue-Importer commented 10 years ago

From phoebe@spambog.com on May 02, 2010 21:40:55

Upon playing a track query last.fm for similar artists and append an appropriate track from the collection to the end of the playlist.

Amarok2 sadly hides the toggle for this feature behind half a dozen clicks. Exaile on the other hand gets it completely right, a simple button beside shuffle/repeat, dead simple. Just turn it on, pick one track you are in the mood for, let the show run, can't imagine listening to my collection without it anymore.

Original issue: http://code.google.com/p/clementine-player/issues/detail?id=273

Clementine-Issue-Importer commented 10 years ago

From john.maguire on May 07, 2010 06:19:08

Labels: -Type-Defect Type-Enhancement Component-MusicLibrary

Clementine-Issue-Importer commented 10 years ago

From sgringwe on December 02, 2010 20:51:53

I agree completely with this idea. However, to at least be constructive here are some ideas:

  1. Make it like iTunes where you make a playlist based around one song.
  2. Add an option in smart playlists to dynamically add similar songs.
  3. Make it like Exaile where you have an on/off option to dynamically add songs as a per-playlist option.

I'm not a big fan of the "shuffle by similar" style that Banshee uses but that's just me.

EDIT: Looking through the source code, I can already see that this would be easy to do. You can use the lastfmtrackinfoprovider.h file to get the tags of the files.

Clementine-Issue-Importer commented 10 years ago

From sgringwe on December 02, 2010 21:21:54

Ok, Wow. We have all the information needed to complete this feature. We have song tags, artist tags, and similar artists. All we need to do is read in that data and find songs in the library that are from that artist or have similar song tags/artist tags.

I only know java, c#, and c but i will try and hack a file together to do this maybe.

Clementine-Issue-Importer commented 10 years ago

From gobnuts on December 03, 2010 03:39:53

Yep, this would indeed rock. Issue 1014 kinda goes hand-in-hand with this.

Clementine-Issue-Importer commented 10 years ago

From sgringwe on December 05, 2010 17:59:36

Developers, please see the following file and lines 31, 188 and the end of the file for my idea on this implementation.

Scott

Attachment: libraryview.cpp

Clementine-Issue-Importer commented 10 years ago

From s.rekatzky on December 06, 2010 21:49:32

I would like to see this. Adding ONE song at a time would be enough. I really like the rhythmbox plugin, and with guayadeque it's even build in. Please make it happen, since clementine is an awesome player already.

Clementine-Issue-Importer commented 10 years ago

From davidsansome on January 18, 2011 10:56:12

Issue 1318 has been merged into this issue.

Clementine-Issue-Importer commented 10 years ago

From cclonch on January 26, 2011 11:37:13

+1 @sgrin: I like all three options you have purposed.

I use Exaile currently because of its dynamic feature. However with a considerably large collection it can stray into stuff I'm not in the mood for. Having a dynamic option in creating smart playlists would allow me to lock it to a particular genre.

I'd also like to suggest the ability to spawn a dynamic playlist by right-clicking on song.

Clementine-Issue-Importer commented 10 years ago

From rhadenstone on February 07, 2011 15:21:56

+1 This is one of the few things that keeps me from using the otherwise lovely Clementine. It would also be nice to have filters. For example, I'm a DJ, so I have loads of remixes stuffed into one or two folders and sometimes that's all I want to listen to, or make a playlist of recently acquired tracks and then let the program continue on via last.fm tags.

Thanks!

Clementine-Issue-Importer commented 10 years ago

From matelich on May 11, 2011 09:10:55

Just started trying out Clementine, so I'm not sure how things have changed from AmaroK 1.4, but it had this last.fm related artist playlist feature (possibly as a plugin?).

Looks like it was called the Suggested Songs dynamic playlist.

Clementine-Issue-Importer commented 10 years ago

From CoachArnold on May 11, 2011 12:08:35

AMarok's feature of providing links to one of several songs based on the current song playing is the best possibility. I assume this is coming from the Last FM scrobble.

t

Clementine-Issue-Importer commented 10 years ago

From sturmgas on June 24, 2011 05:14:07

Sounds like the "smart DJ-mix" from the zune-software which i really like and use.

Clementine-Issue-Importer commented 10 years ago

From keirangtp on August 18, 2011 08:33:54

Issue 2081 has been merged into this issue.

Clementine-Issue-Importer commented 10 years ago

From davidsansome on December 18, 2011 10:19:02

Issue 2492 has been merged into this issue.

Clementine-Issue-Importer commented 10 years ago

From john.maguire on January 11, 2012 04:07:59

Issue 2600 has been merged into this issue.

Clementine-Issue-Importer commented 10 years ago

From VolpeRossa on January 20, 2012 05:13:19

I echo the desire!! The only reason to me to look at Clementine's alternatives (and I come from Amarok) is the dynamic playlist driven by fm.com-like associations. Guys, you're already half way: in the artist info you already indicate "similar artists", a first "approximation" of Genius (oops! did I say that?) would consist in picking up from collection the existent similar artists and then use a randomly generated number to pick up one of the authors eventually existing in collection. Reapplying the same more than once should build a kind of homogeneous playlist!...

Clementine-Issue-Importer commented 10 years ago

From Jbuencuerpo on January 22, 2012 05:40:35

Amarok 1.4 got it, so I hope will be ported this feature.

Clementine-Issue-Importer commented 10 years ago

From cedric.milesi on February 29, 2012 07:05:03

And if it could use songs from spotify or grooveshark subscription that would be awesome...

Clementine-Issue-Importer commented 10 years ago

From arnaud.bienner on March 01, 2012 03:57:18

@cedric.milesi: Note that "Grooveshark radio" starts a dynamic playlist, grabbing songs from Grooveshark based on Grooveshark songs you previously listen to. Not exactly what you except I think, because it's Grooveshark only, but quite similar.

Clementine-Issue-Importer commented 10 years ago

From jaosorior on July 12, 2012 11:05:31

I actually would like this feature too, is somebody working on this? or is it free to take?

Clementine-Issue-Importer commented 10 years ago

From dtverder on July 12, 2012 11:16:54

Amarok 2 has this feature. That is the only reason I still use Amarok 2 occasionally.

Clementine-Issue-Importer commented 10 years ago

From arnaud.bienner on July 13, 2012 01:44:31

@jaosorior: As far as I know, no one has started working on this. So if you're interested in, don't hesitate ;) If you have questions about the code or need some help, you can ask us (here or on IRC).

Also, I know that echonest (which we already use to fill Artist tab with artists' info and similar artist, etc. and Song tab) provides dynamic playlist functionalities. Not exactly "dynamic playlist populated with similar artists" but this is somehow similar I think. I know some on the team we're interested in working on the echonest dynamic playlist, but as far as I know nothing has been done yet.

Clementine-Issue-Importer commented 10 years ago

From dtverder on July 13, 2012 05:43:59

It would be good if there were two options with this feature.

  1. Similar to first track / artist in playlist
  2. Similar to last track / artist played. I can remember when using this function with Amarok 1.4 you could start listening to The Dubliners and end up listening to Led Zeppelin. Sometimes this was good and sometimes you wanted to stick with the same sort of thing as the original track. It would be nice to also have an option to include or not include more track from the original artist.
cperezmig commented 10 years ago

Hi, I would like to work on this issue. Could be by adding a new type of smaryplaylist that adds similar tracks to the current one from a set of similar tracks returned by last.fm or echonest. However, I have a little problem: no idea where to begin. I have been reading the code of Clementine and I am completely lost.

So, question to the developers of Clementine: how can I add a new type of smartplaylist? Is there any documentation about smartplaylists generators? I saw that there is a generator class in src/smartplaylists, but, how can be used to extend the functionality of smartplaylists?

aquada commented 8 years ago

Is this still being considered? I just wanted to add in case it is that Guayadeque has a pretty decent option called smart play. The playlists seems to keep on track and not wander too much across decades or genres. It also has filters for allow and deny, so you can for example deny tracks you have already listened too or allow certain ratings. Maybe this can be of some use

laclaro commented 8 years ago

To mention this again: I would also be very happy to have this feature. Many other players already support it. There should be lots of code around. (-> Amarok, Ario, mpd-sima)

rohieb commented 8 years ago

That reminds me, I recently tried to use the last.fm similar-artists API for another project, but I was not able to apply for an API key, and in overall it seems to me that the last.fm API is slowly dying (HTTP timeouts on the API endpoint, many unresponded API questions in the support forums, etc.). But the Spotify API also has similar artists, which could be used instead.

AndydeCleyre commented 8 years ago

@rohieb Yes, the Last.fm API is unreliable these days, as they are apparently pushing forward with their new strategy of self-sabotage.

I've made (and still make) Last.fm related tools, and I have to rely on a special blend of API usage and little tricks. One of the best tricks I've learned is that you don't need the API to get station playlists with Spotify URIs (though there's no guarantee of stability).

For example, if you do a simple get request for http://www.last.fm/player/station/music/Reigning+Sound, you get a response like this (actually there are a lot more fields, but most of them have null values, so I stripped those for concision):

{
  "playlist": [
    {
      "url": "/music/Reigning+Sound/_/Falling+Rain",
      "duration": 191,
      "artists": [{"url": "/music/Reigning+Sound", "name": "Reigning Sound"}],
      "name": "Falling Rain",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/1H4GOvboZnTIWhfQQZ9x5H",
          "id": "1H4GOvboZnTIWhfQQZ9x5H",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/The+Almighty+Defenders/_/The+Ghost+With+The+Most",
      "duration": 244,
      "artists": [{"url": "/music/The+Almighty+Defenders", "name": "The Almighty Defenders"}],
      "name": "The Ghost With The Most",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/3eLS2t2p8kQWMnD0FCWMil",
          "id": "3eLS2t2p8kQWMnD0FCWMil",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/Reigning+Sound/_/North+Cackalacky+Girl",
      "duration": 166,
      "artists": [{"url": "/music/Reigning+Sound", "name": "Reigning Sound"}],
      "name": "North Cackalacky Girl",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/2dozWR4XVaR4L0GeNmnYcc",
          "id": "2dozWR4XVaR4L0GeNmnYcc",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/The+Detroit+Cobras/_/It%27s+Raining",
      "duration": 154,
      "artists": [{"url": "/music/The+Detroit+Cobras", "name": "The Detroit Cobras"}],
      "name": "It's Raining",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/7BQg6UcAsVEd5maZEfIsXZ",
          "id": "7BQg6UcAsVEd5maZEfIsXZ",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/Oblivians/_/Christina",
      "duration": 119,
      "artists": [{"url": "/music/Oblivians", "name": "Oblivians"}],
      "name": "Christina",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/7ah8dRCjJFGCWstleG0PpD",
          "id": "7ah8dRCjJFGCWstleG0PpD",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/Reigning+Sound/_/In+My+Dreams",
      "duration": 178,
      "artists": [{"url": "/music/Reigning+Sound", "name": "Reigning Sound"}],
      "name": "In My Dreams",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/2386ZbOjwKtPz3wUDbAZrd",
          "id": "2386ZbOjwKtPz3wUDbAZrd",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/Compulsive+Gamblers/_/Rock+&+Roll+Nurse",
      "duration": 250,
      "artists": [{"url": "/music/Compulsive+Gamblers", "name": "Compulsive Gamblers"}],
      "name": "Rock & Roll Nurse",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/1pOsQ80ML6F6c8QtXiirw6",
          "id": "1pOsQ80ML6F6c8QtXiirw6",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/Thee+Headcoats/_/Davy+Crockett",
      "duration": 175,
      "artists": [{"url": "/music/Thee+Headcoats", "name": "Thee Headcoats"}],
      "name": "Davy Crockett",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/2U5298Y8BAUo41n74yv16D",
          "id": "2U5298Y8BAUo41n74yv16D",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/Reatards/_/I%27m+Down",
      "duration": 114,
      "artists": [{"url": "/music/Reatards", "name": "Reatards"}],
      "name": "I'm Down",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/2xPhIaqxaOaDPkk6mKnMFY",
          "id": "2xPhIaqxaOaDPkk6mKnMFY",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/Reigning+Sound/_/Medication",
      "duration": 83,
      "artists": [{"url": "/music/Reigning+Sound", "name": "Reigning Sound"}],
      "name": "Medication",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/65BRuBhpQoIyqOSENpoVgO",
          "id": "65BRuBhpQoIyqOSENpoVgO",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/Thee+Mighty+Caesars/_/Wily+Coyote",
      "duration": 203,
      "artists": [{"url": "/music/Thee+Mighty+Caesars", "name": "Thee Mighty Caesars"}],
      "name": "Wily Coyote",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/4fBOggW0kXQDNlM9UJvrau",
          "id": "4fBOggW0kXQDNlM9UJvrau",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/Les+Sexareenos/_/My+Baby+Keeps+Me+Up+All+Night",
      "duration": 95,
      "artists": [{"url": "/music/Les+Sexareenos", "name": "Les Sexareenos"}],
      "name": "My Baby Keeps Me Up All Night",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/3wa5Hs0KlT5zy1N5oRKlHy",
          "id": "3wa5Hs0KlT5zy1N5oRKlHy",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/Thee+Headcoatees/_/Johnny+Jack",
      "duration": 163,
      "artists": [{"url": "/music/Thee+Headcoatees", "name": "Thee Headcoatees"}],
      "name": "Johnny Jack",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/09pzrcLc1fZY8rzdyFN71z",
          "id": "09pzrcLc1fZY8rzdyFN71z",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/The+King+Khan+&+BBQ+Show/_/Animal+Party",
      "duration": 217,
      "artists": [{"url": "/music/The+King+Khan+&+BBQ+Show", "name": "The King Khan & BBQ Show"}],
      "name": "Animal Party",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/0OlGcfxb58mFgkCNz5547g",
          "id": "0OlGcfxb58mFgkCNz5547g",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/The+Ettes/_/The+Pendulum",
      "duration": 141,
      "artists": [{"url": "/music/The+Ettes", "name": "The Ettes"}],
      "name": "The Pendulum",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/5femXsHjBxoBe6NmviYr0a",
          "id": "5femXsHjBxoBe6NmviYr0a",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/Blacktop/_/Blacktop+(Intro)",
      "duration": 175,
      "artists": [{"url": "/music/Blacktop", "name": "Blacktop"}],
      "name": "Blacktop (Intro)",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/4vrkRN4Y41xpa2pyv80WFE",
          "id": "4vrkRN4Y41xpa2pyv80WFE",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/BBQ/_/Outta+My+Mind",
      "duration": 185,
      "artists": [{"url": "/music/BBQ", "name": "BBQ"}],
      "name": "Outta My Mind",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/4qfoBEEUU3RdX8lfBGn9se",
          "id": "4qfoBEEUU3RdX8lfBGn9se",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/The+Deadly+Snakes/_/Gore+Veil",
      "duration": 275,
      "artists": [{"url": "/music/The+Deadly+Snakes", "name": "The Deadly Snakes"}],
      "name": "Gore Veil",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/6ug3dPZgRljwMQaGsx7xKT",
          "id": "6ug3dPZgRljwMQaGsx7xKT",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/Holly+Golightly/_/That%E2%80%99s+What+I+Want+For+Christmas",
      "duration": 140,
      "artists": [{"url": "/music/Holly+Golightly", "name": "Holly Golightly"}],
      "name": "That’s What I Want For Christmas",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/2g68J1eIHfkpdxzUuiKa6t",
          "id": "2g68J1eIHfkpdxzUuiKa6t",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/The+Spaceshits/_/Can%27t+Fool+With+Me",
      "duration": 173,
      "artists": [{"url": "/music/The+Spaceshits", "name": "The Spaceshits"}],
      "name": "Can't Fool With Me",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/1syaoIvDrIAmotc382rb5b",
          "id": "1syaoIvDrIAmotc382rb5b",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/Nobunny/_/Motorhead+with+Me",
      "duration": 149,
      "artists": [{"url": "/music/Nobunny", "name": "Nobunny"}],
      "name": "Motorhead with Me",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/1s68lSsNtzSyTAu8hVx8we",
          "id": "1s68lSsNtzSyTAu8hVx8we",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/Jack+Oblivian/_/Rat+City",
      "duration": 206,
      "artists": [{"url": "/music/Jack+Oblivian", "name": "Jack Oblivian"}],
      "name": "Rat City",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/53nXMiIGwwu1r0t0tEYbSD",
          "id": "53nXMiIGwwu1r0t0tEYbSD",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/The+Parting+Gifts/_/This+House+Ain%27t+A+Home",
      "duration": 128,
      "artists": [{"url": "/music/The+Parting+Gifts", "name": "The Parting Gifts"}],
      "name": "This House Ain't A Home",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/1PxJVDguyQqhIEOjE3YV1e",
          "id": "1PxJVDguyQqhIEOjE3YV1e",
          "affiliate": "spotify"
        }
      ]
    },
    {
      "url": "/music/Gore+Gore+Girls/_/Where+Evil+Grows",
      "duration": 168,
      "artists": [{"url": "/music/Gore+Gore+Girls", "name": "Gore Gore Girls"}],
      "name": "Where Evil Grows",
      "playlinks": [
        {
          "url": "http://open.spotify.com/track/6j9JIPQRRL4RgrhjL0C3T6",
          "id": "6j9JIPQRRL4RgrhjL0C3T6",
          "affiliate": "spotify"
        }
      ]
    }
  ]
}
thechitowncubs commented 6 years ago

+1