Giter Site home page Giter Site logo

musish / musish Goto Github PK

View Code? Open in Web Editor NEW
3.0K 54.0 218.0 22 MB

Apple Music...ish

Home Page: https://musi.sh

License: GNU Affero General Public License v3.0

JavaScript 3.56% HTML 0.45% CSS 20.15% Shell 0.40% TypeScript 75.43%
react musickit apple-music apple music musickitjs

musish's Introduction

Musish

Musish (musi.sh)

The unofficial open source Apple Music webapp.

Built with React and Apple's MusicKit JS while utilising the official Apple Music API. Contains some serverless functions deployed with AWS Lambda to speed up certain functionalities. (Found in backend).

CircleCI Dependencies OpenCollective

Musish Browse Page

Looks neat, how can I contribute?

The Musish project welcomes contributions of all sorts; PRs, issues, feedback, comments, donations, or even just sharing the project would all be infinitely useful to us!

Please do remember to read our contributing guidelines before making a pull request.

We also welcome financial contributions in full transparency on our open collective, and we are extremely thankful for all those who have contributed already:

Backers on Open Collective

A massive thank you also to our code contributors, who you can see here

Self hosting

Building Musi.sh requires node and yarn.

Running the Musish web app:

1. Generating an Apple Developer Token (JWT):

Musish uses the Apple Music API and therefore you'll need a signed developer token from Apple.

Please reference Apple's official guide on generating the keys and an associated token.

2. Environment setup:

Musish requires two environment variables to start. You'll need to enter your Apple Developer token as APPLE_TOKEN, and a link to your hosted Musish backend with BACKEND_URL.

.env.example:

APPLE_TOKEN=your_apple_music_token
BACKEND_URL=https://musish.app
3. Install dependencies:
yarn
4. Launch Musish:

Start webpack dev server on port 8080:

yarn start

Or:

yarn build

This will create a directory called dist in the project root, these files can be served from a web server as static content.

Running the Musish backend:

We use Serverless to run our backend on AWS lambdas, however you can choose differently here.

Generating a Genius Developer Token:

If you wish to work on the Musish project's serverless backend, you will require a Genius Developer token.

Create a client access token via Genius' developer portal.

Is it safe?

Musish uses official Apple public APIs and libraries to handle authentication. The user is prompted to login directly on a new window under the Apple.com domain. Apple.com returns the user a temporary valid token to allow their browser to make requests to Apple Music data only.

At no point do we request, log, or gain access to information from a user of the site. The user's token is never sent to any server other than Apple's own. At no point do we ever intentionally pass any user information to any server which we control.

Our official build (https://musi.sh/) is powered by Github Pages with an AWS lambda providing both lyrics and artist information, we send no cookies or headers related to your Apple account.


Credits:

  • Musish logo (headphone icon) provided by zidney from the Noun Project.

musish's People

Contributors

0x750 avatar alessioluciani avatar brychanodlum avatar chrisdusovic avatar dedeswim avatar dependabot[bot] avatar dnlgrgly avatar el avatar filipgrebowski avatar hanqyu avatar inomn avatar ishakm avatar jamesjarvis avatar jokly avatar kabirsandhu avatar laosb avatar martineso avatar michelmelo avatar napieralla avatar paindefender avatar raphaelvigee avatar romandueck avatar yesdevnull avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

musish's Issues

content loaders

have cute little content loaders for album/playlist/song lists

Context menu: Create dynamically.

Context menu on the songs list (and other similar components) should be generated and rendered dynamically when required (i.e. on a right click on a song).

Will also allow for simplified 'songBacker' css class (border between songs + background colours).

Music player queue

User needs to be able to see and adjust the current queue for the music player.

Show complete album button for library albums

If you are viewing a library album and you have not stored all of the songs in your library, you should be able to see the whole album on Apple Music from a 'show complete album' button.

Serverless functions

Currently identified requirements:

  • Artist name -> catalogue id mapping
  • Artist name -> catalogue data
  • Artist name -> catalogue image

Shuffle

Add the shuffle button, I miss it

Add to library

If a song is not in the users library, then show a button to add to library. Maybe cool animation for the button as well when the song is added?

Browse while not logged in

Not an urgent issue - but would be great for people to be able to check out how our site works, and play the song previews, without actually being signed in.

Base64 encoded url parameters

Albums, songs, artists, and playlists need to have the url parameter for their identifiers base64 encoded as to not upset the router.

Users are not able to play music on the chrome browser.

Works on some chrome browsers, and not others. Running the project on localhost in development causes no issues. When pushed to production under its domain, certain people cannot access it on even the latest versions of chrome.

Songs playing on top of each other.

When playing a song from your playlist, and then searching for a song, and playing it, they will both play at the same time on top of each other.

Song list: non-playable songs

Songs which are not playable should be displayed in the list, but disabled. They should be filtered out of the songs list in the queue (when added).

Browse page actually needs data

Need to add data for browse, including heavy rotation, recently played, and recommendations (like chill mix, favourites mix etc)

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.