Coder Social home page Coder Social logo

spotmop's Introduction

The Iris repository (formerly Spotmop) has moved here.

Spotmop has been renamed to Iris. The Spotmop repository is no longer in development. Issues raised in the Spotmop repository will not be actioned; please only raise issues in Iris.

Mopidy web-based frontend that utilizes Spotify to create an interactive, user-friendly and collaborative music interface. Built and maintained by James Barnsley.

badge badge badge

Requirements

  • Mopidy
  • Mopidy-Spotify
  • Spotify Premium account
  • Mopidy-Local-Sqlite (recommended, not required)

Installation

  1. Install using pip: sudo pip install Mopidy-Spotmop
  2. Restart Mopidy server
  3. Navigate to Mopidy interface (ie http://localhost:6680/spotmop)

Features

  • Full web-based interface controls for Mopidy
  • Uses Spotify API to deliver high-quality audio and music information
  • Improved support for local libraries using SQLite extension
  • Browse and manage your playlists, along with top tracks, new releases and genre browser
  • Spotmop can be run completely independently of your Mopidy machine (ie on a remote server), just set your URL in the settings tab
  • Push notifications between users (requires port 6681, but this can be customised to suit your environment)

Screenshots

Overview

Play queue

Featured playlists

Artist

Single playlist

Dragging tracks

To-do

  • Increase stability of Mopidy server (perhaps limitation of Rpi?)
  • Improve websockets integration to attach users to tracks and changes within tracklist

Support

spotmop's People

Contributors

jaedb avatar kiwikern avatar pstechnical avatar johnyb avatar

Stargazers

Yuliya Payevska avatar Red Huang avatar Andrejs Baranovskis avatar Michael Zemsky avatar Roni Laukkarinen avatar Thomas Fillon avatar  avatar Ryan avatar derhintergrund avatar Michael Lunzer avatar Eduardo Trujillo avatar Jakob Kofoed Janot avatar Mike Pruett avatar Jonathan Zahedieh avatar Michalina Sidor avatar Jon Wu avatar Ivo Lima avatar Antoine avatar Tayyab avatar  avatar  avatar Ron avatar David Polynar avatar  avatar Ivan Malison avatar Bernd Bestel avatar  avatar Marek Czerski avatar Efrain avatar Brian Dorton avatar Mark Keele avatar Michael Ho avatar Sam Rogers avatar Thomas Lamiraud avatar Martin Pohanka avatar Mickey Schwab avatar Florian Dhaussy avatar Ryan Walder avatar Frank avatar John Hamelink avatar Andrew Taylor avatar Malik avatar Dylan Richardson avatar Barnim Grüneberg avatar Francisco Giordano avatar Anton Smith avatar rdv avatar Kevin Terry avatar Łukasz Myśliński avatar Matt Carrier avatar asteroidcow avatar Bernhard Schütz avatar Zack Harley avatar Lars Nørgaard avatar Robert Bak avatar Brandon Poe avatar  avatar  avatar ʞ-uɐʇsıɹʇ avatar  avatar Zero avatar Mees Boe avatar Zack Boehm avatar Łukasz Jendrysik avatar Dragan Marjanovic avatar Jozef Maxted avatar Djordje Stojanovic avatar Manuel Hotz avatar Deluxo avatar Shayan Eskandari avatar Henry Cook avatar Marcus Weiner avatar  avatar Equan P. avatar Pablo Exposito avatar Artur Kraft avatar 0x46616c6b avatar Ben Harris avatar  avatar Jacob O avatar Wouter avatar Tomas Kral avatar Jonathan Fretin avatar Eliza Zhang avatar Austin Sims avatar Sergio Gómez avatar Jaap Gerritsen avatar Alexander Hultnér avatar  avatar  avatar  avatar Júlio César avatar Jean Guibert avatar Karl von Randow avatar Piotr Raczynski avatar Ché Armstrong avatar Damian Worsdell avatar Garrett LeSage avatar kdbdallas avatar Adrian van Dongen avatar

Watchers

James Cloos avatar  avatar Marek Czerski avatar  avatar  avatar  avatar

spotmop's Issues

Aliases for standard content

A playlist can be accessed from multiple locations (as with Albums, Artists, etc). Need to find a way to smoothly handle aliases from different contexts (ie My Playlists, Browse, etc) or introduce a Spotify Player style sliding panel.

Url-based pagination

For Spotify assets where we lazy-load extra items, create this as a URL parameter. This will allow us to hit 'back' and return to the scroll point and items that we last had.

Would be worth investigating a better way to do this prior.

Feature Request: Disable Play on Double Click

When Doubleclicking a Song the Running Playlist is truncated. Would'nt it be nice when the doubleclicked Song is added to the Playlist instead?
Same for the "Play" Button in Context Menu.

Project needs a license

I noticed that Spotmop doesn't include a LICENSE file or text in the README indicating what license the software is licensed under. The setup.py file says Apache 2, but I'm afraid that was simply copy-pasted from another project and not a conscious choice?

As long as the project doesn't have an explicit license it is strictly speaking not open source and cannot be used by anyone without your explicit permission.

Connect to services without page reload

When connecting to a core service (Spotify and Mopidy), detect connection and update app accordingly, without requiring full page refresh.
This could be achieved by listening to localStorage (for Spotify), and $broadcasts for Mopidy.

Spotify authorized >> update interface

When the the Spotify authorization process is successful, detect this on the main window and update the interface accordingly. Currently it requires a refresh.

Integrate Pusher

Look at handling client-to-client communication with Pusher. It would be handy to see the current tracklist and see who added certain tracks. This may be part of upgrading to a Mopidy extension.

Using Spotmop with mobile device

I just installed mopidy and decided Spotmop would be a great client to use. However the screenshots show that I can use/control Spotmop with a mobile device. How do I go about doing this?

Cache Mopidy playlists

When a user doesn't log in to Spotify from the webinterface, Spotmop fetches the playlists from Mopidy. This however does not seem to be cached. When having loads of playlists this takes a rather large amount of time. If it would be cached locally, it would be a major speed-up. Would need some sort of refresh button so users can refresh the cache.

Mobile improvements

  • Resolve slow animation when swiping to hide/show mobile nav
  • Introduce hamburger icon to indicate menu is available
  • Volume controls for touch devices
  • Sticky player at bottom
  • Selected tracks (and context menu) remain, even when navigating to another page/state

Scrolling with asset sidebar

  • Assets (playlists, albums, etc) with sidebars should use magic-scrolling to nicely stick until next elements are shown (just like Mopidy docs)
  • Simplify scrolling and have the whole page scroll instead of a nested, fixed div element

Breadcrumbs

Breadcrumb trail for assets. Either fix the existing ones, or remove completely.

Artist Radio

Create the ability to create radio stations, as per Spotify Connect

Remote authentication for Spotify

Prevent users from having to create their own Spotify App authentication code and domain by creating an authentication layer on a shared domain name.

[Feature Request] When right clicking ability to copy track link from source

I commonly use the share functionality in the official Spotify client to send my friends a song / album I just discovered. Could this functionality be added? I have no problem making a PR with the change but I just want to see if it would be accepted before I put any effort in.

Basically I just want some way to be able to copy / access the url of the spotify song.

Add follow user

  • Setup ability to follow users (as per Spotify)
  • Handle where 'followed users' lives. Library? No, perhaps create a "Me" tab?

[Feature request] Handle large lists in 'My Albums'

If many albums are favored, it takes a really long time to scroll through the list of albums. It would be nice to have the possibility to collapse the titles and display all covers in a grid (like in the mopify webclient).

Adding to playlist on Mobile

Hello, great work on spotmop!

I am having a problem using it on my mobile device. I can't seem to add anything to a playlist via the context menu. The playlists show up but I can't "select" one.

I have the exact same problem on a regular browser when "Emulate Touch Device" is enabled. I choose the tracks, select add to playlist, my playlists show up as icons but I can't choose one!!!

Other than that great job, enjoying spotmop!

Feature request: Server-managed Spotify authentication

Each time i open spotmop, i need to enter a name and reauthenticate with spotify.
Spotify music in mopidy continues working, but the web interface needs a new authentication.

  • Mopidy-Spotify (3.0.0)
  • Mopidy-Spotmop (2.5.14)

Artist panel design

Create a unique visual look for artist square-panel items to it's easy to differentiate between artists, playlists and albums

Better support for Local MySQL

When using MySQL for local track database, not all categories entries are populated;
artist, album, release years, composers, performers

Empty Playlist, No Search Results (Tracks)

Hey,

seems like "Rebuild tracklist object to facilitate multiple instances within a single scope" resulted in some regression. It happens that there are no results for tracks after searching or the current playlist appears empty (no tracks).

Error:

app.min.js:10 Error: [ng:areq] Argument 'TracklistController' is not a function, got undefined
http://errors.angularjs.org/1.4.0-rc.1/ng/areq?p0=TracklistController&p1=not%20a%20function%2C%20got%20undefined
at app.min.js:8
at ja (app.min.js:8)
at ka (app.min.js:8)
at app.min.js:9
at p (app.min.js:9)
at q (app.min.js:9)
at h (app.min.js:9)
at q (app.min.js:9)
at h (app.min.js:9)
at h (app.min.js:9)(anonymous function) @ app.min.js:10(anonymous function) @ app.min.js:9n.$digest @ app.min.js:10n.$apply @ app.min.js:10(anonymous function) @ app.min.js:12_.event.dispatch @ app.min.js:7b.dispatch @ app.min.js:15q.handle @ app.min.js:7

include spotify's suggestions into 'discover' section

The spotify-webplayer shows a lot of useful suggestions for me under Browse -> discover, e.g. 'top recommendations' or 'because you listened to some band'. It would be awesome if spotmop could show these recommendations as well.

cannot connect more than one client browser

Have installed mopidy and your web interface for use with spotify, works great from one client, but from others I just get mopidy server is offline in settings. i.e. i start mopidy (running on raspbian) login to the web client from my laptop and am asked to create a username and am connected. from 2nd or more clients, ipad, iphone etc the client settings say the server is offfline no matter what settings i enter. Spotify shows as online and I can browse spotify but cannot execute any mopidy commands, i.e. queue song etc. Am I missing a mopidy config for multiple connections or is this a mobile browser problem?

webpage not found

After install and restart of mopidy, I cannot access the webpage.
When going to the url, I have a 404 page not found.
I am using a raspberry pi with raspbian Jessie distribution

I am not sure what to do to have it working

In my log of mopidy I have the following:
INFO Starting Mopidy 1.1.2
INFO Loading config from builtin defaults
INFO Loading config from /home/xxxx/.config/mopidy/mopidy.conf
INFO Loading config from command line options
INFO Enabled extensions: mopify, spotify, alsamixer, http, file, spotmop, spotify_tunigo, softwaremixer, moped, musicbox_webclient
INFO Disabled extensions: soundcloud, mpd, local, m3u, stream
INFO Starting Spotmop web client 2.5.7
INFO Starting Mopidy mixer: SoftwareMixer
INFO Mixer volume set to 80
INFO Starting Mopidy audio
INFO Starting Mopidy backends: FileBackend, SpotifyTunigoBackend, SpotifyBackend
INFO Audio output set to "alsasink"
INFO Starting Mopidy core
INFO Logged in to Spotify in offline mode
INFO Logged in to Spotify in online mode
INFO Starting Mopidy frontends: HttpFrontend, QueueManagerFrontend
INFO HTTP server running at [::]:6680
ERROR Loading spotmop failed.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/mopidy/http/actor.py", line 133, in _get_app_request_handlers
request_handlers = app['factory'](self.config, self.core)
File "/usr/local/lib/python2.7/dist-packages/mopidy_spotmop/init.py", line 58, in spotmop_client_factory
application.listen(pusherport)
File "/usr/local/lib/python2.7/dist-packages/tornado/web.py", line 1825, in listen
server.listen(port, address)
File "/usr/local/lib/python2.7/dist-packages/tornado/tcpserver.py", line 126, in listen
sockets = bind_sockets(port, address=address)
File "/usr/local/lib/python2.7/dist-packages/tornado/netutil.py", line 196, in bind_sockets
sock.bind(sockaddr)
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
error: [Errno 98] Address already in use

"Next track button" does not behave as expected

The "Next track" button skips backwards within the track instead of going to next track.
My configuration: Spotmop 2.6.2 running on a Raspberry Pi 3 (Raspian Jessie) and accessed from Chrome 49.0.2623.87.

Access Token fetching

Would be nice to allow users to handle their own Access Token fetching in stead of going through a PHP file on some server where we don't know what's actually being done there.

Seems Spotify also allows for Implicit Grant Flow (https://developer.spotify.com/web-api/authorization-guide/#implicit_grant_flow) it would then redirect directly to the app's callback URL with the Access Token. No server-side code is then needed, however I think the Access Token is then short-lived which may not be a problem when it would re-request Auth when the Access Token is expired.

CSS/styling issue apache mopidy mobile devices

I am seeing some sort of CSS / styling issue with mobile devices when I access spotmop on the mopidy server via an apache website (http://server/mywebsite/spotmop).

On desktop devices spotmop renders correctly, on mobile devices elements do not seem to be styled correctly i.e. the now playing page is completely unstyled.

On desktops spotmop looks and works fine, on mobile devices styling is not correct.

When I access spotmop via mopidy (http://server:6680/spotmop) mopidy works and renders correctly for desktop and mobile devices.

Spotmop does not work with HTTPS

I tried installing spotmop in my Mopidy installation, but I am unable to play files, because spotmop tries to do requests over HTTP, which isn't allowed by the browser.

Websocket connections are also done over non-secure websockets.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.