New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Soundcloud Browser #1828

Closed
declension opened this Issue Feb 17, 2016 · 11 comments

Comments

Projects
None yet
3 participants
@declension
Member

declension commented Feb 17, 2016

This would be nice; Clementine has one as do a few other things.

Imagine it would be either similar (or even an extension) to the Internet Radio Browser. Obviously this would require users signing up.

There is a lightweight API and everything.

Ideally this would be implemented using Browsers as plugins (see #157).

@nodiscc

This comment has been minimized.

nodiscc commented Feb 17, 2016

It would be a great addition. There is https://github.com/soundcloud/soundcloud-python - A Python wrapper around the Soundcloud API. Do you know if one would be able to use this plugin (browsing/searching/playing soundcloud tracks) without a soundcloud user account?

@declension

This comment has been minimized.

Member

declension commented Feb 21, 2016

@nodiscc - no it would / will be account-only for now. The API is geared that way, and most of the interesting features come with that anyway. It wouldn't require a pro account anyway..

Edit: maybe not actually, there's a bit more anonymous(ish) access than I'd thought. Let's see..

@declension declension self-assigned this Feb 21, 2016

@declension

This comment has been minimized.

Member

declension commented Feb 26, 2016

Some experimental work in the souncloud-browser branch.

Pretty rough still, but the authentication flow, basic UI, searching, and integration with QL is working (for me).

Needs the soundcloud module, though longer term might try to ditch that and use the GTK+ libraries.

@lazka

This comment has been minimized.

Member

lazka commented Feb 27, 2016

Some experimental work in the souncloud-browser branch.

Cool, got it working, kinda. Please tell if you want feedback.

Needs the soundcloud module, though longer term might try to ditch that and use the GTK+ libraries.

As soundcloud isn't in debian (I think?) that would make it easier. On Windows/OSX shipping soundcloud from pypi isn't a problem.

@declension

This comment has been minimized.

Member

declension commented Feb 27, 2016

Good point. I've not used the Soup stuff but it looks OK so I'll try duplicating as little of the helper methods as needed to get it working.

And yes feedback would be useful.... in particular I'm debating how to integrate searching with QL in a way that makes sense for a/any remote "library" of millions of tracks... that supports almost none of the querying we do... Currently it's keeping a local cache of results and then using normal filtering which feels "native" but will fail miserably with non-text searches...

@lazka

This comment has been minimized.

Member

lazka commented Feb 28, 2016

Also have a look at util.thread.call_async() + if you want we can use requests instead of urllib. Might make the update to py3 easier anyway.

(I don't know what the API exposes..)
I'd just try to replicate the online version and only allow text queries, for starters.
Have a combobox selecting between Tracks/Playlists/People/Groups. + a sidebar containing the filters + the results for playlist/people/group search.

@declension

This comment has been minimized.

Member

declension commented Feb 28, 2016

Cool I'll have a look at the threading helpers, was on my TODO list. Happy to use requests especially if that

As to the UI, I'd pretty much decided to ditch people and groups - I don't think QL could provide much that the web app wouldn't do a lot better. Probably playlists too - though that's worth thinking through more still.

@lazka

This comment has been minimized.

Member

lazka commented Feb 28, 2016

Sounds good.

I got somewhat confused with the current login state as it opened a browser, I logged in and then it said "Connecting..." forever. After trying that 3 times I noticed that QL seems to work regardless.
Better feedback and would help there, before the login and after.

What does registering with an account give us btw?

@declension

This comment has been minimized.

Member

declension commented Feb 28, 2016

Todo list

  • Separate library / api / ui code better
  • Fix tests
  • Ditch soundcloud module, reimplementing where necessary (using Soup / requests)
  • Allow manual entry of auth codes - if quodlibet:// URLs don't work
  • Tidy authentication in general - error handling.
  • Fixing side panel / filters to be useful: text, duration, favourites, (your) playlists
  • Tidy UI
  • Add icons / branding to match official branding guidelines
  • proper asynchronous querying
  • Acceptable integration with QL main (as plugin, leave as browser, enabled / disabled)

Further ideas

  • Writeable rating
  • Add to Soundcloud playlist
  • Optimise interactions for less network traffic
  • Additional search filters: (creation) date, tags
  • Custom songlist - clickable URLs, download buttons, single-value rating / heart icon for ratings.
  • New query syntax subset / evaluator to allow only Soundcloud-compatible search filters?
  • Think about generalising for other / similar online services in the future
  • One-click download where available for the track - prefs could control how this gets named (with QL pattern ideally à la Rename Files) disallowed by terms of usage
  • Integrate comments with QL bookmarks e.g. 1:57 User: This is my comment.... Might have to limit the results here for big tracks.
  • Reauthenticating expired tokens automatically (current workaround: logout, login)
  • Plugin / button to upload a local track...
@declension

This comment has been minimized.

Member

declension commented May 18, 2016

Lots more support done, including some of the nice to haves, still kept in https://github.com/quodlibet/quodlibet/tree/soundcloud-browser for now

@declension

This comment has been minimized.

Member

declension commented Jul 24, 2016

It's merged. Bugs / additional features can go in new tickets, so closing this.

@declension declension closed this Jul 24, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment