Skip to content
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
Closed

Add Soundcloud Browser #1828

declension opened this issue Feb 17, 2016 · 11 comments

Comments

@declension
Copy link
Member

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
Copy link

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
Copy link
Member Author

@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
Copy link
Member Author

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
Copy link
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
Copy link
Member Author

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
Copy link
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
Copy link
Member Author

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
Copy link
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
Copy link
Member Author

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
Copy link
Member Author

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
Copy link
Member Author

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

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

No branches or pull requests

3 participants