├── README.md ├── css ├── github.css └── main.css ├── img └── spotify-logo.png ├── index.html ├── js ├── jquery.min.js ├── playlist.js └── rainbow-custom.min.js └── manifest.json /README.md: -------------------------------------------------------------------------------- 1 | ### DISCLAIMER 2 | Since writing this code I have noticed a couple of pretty bad bugs in here which make the wrong Keys/BPMs appear next to the tracks. If you are a programmer who isn't afraid of trying to fix a few things, please do so (and do a Pull Request if you feel like it!), as I believe this repo still does give you a bit of a headstart in terms of formatting and all of the EchoNest API call stuff... 3 | 4 | If you are not a programmer and are expecting something finished and working, I'm afraid this is not it... 5 | 6 | # Key and BPM browser for Spotify 7 | 8 | Hacked together at MIDEM Music Hack Day 2014. Lots of dodgy code in here... 9 | 10 | ## Installation 11 | 12 | 1. Sign up for a [developer account on Spotify](https://developer.spotify.com/technologies/apps/#developer) by logging in and agreeing to the [terms of use](https://developer.spotify.com/technologies/apps/terms-of-use/). 13 | 2. Create the Spotify folder if it doesn't exist already: `~/Spotify` (Mac OS X and Linux) or `My Documents\Spotify` (Windows). 14 | 3. Open the Spotify folder. 15 | 4. Run `git clone git://github.com/reactify/spotify-key-bpm`. 16 | 5. Download the [latest version of Spotify](http://spotify.com/download). 17 | 6. Open Spotify and type "spotify:app:key-bpm" in the search bar (restart Spotify completely in case it doesn't find the App at first). 18 | 19 | ## License 20 | 21 | Copyright (c) 2014 Yuli Levtov 22 | 23 | Permission is hereby granted, free of charge, to any person obtaining a copy 24 | of this software and associated documentation files (the "Software"), to deal 25 | in the Software without restriction, including without limitation the rights 26 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 27 | copies of the Software, and to permit persons to whom the Software is 28 | furnished to do so, subject to the following conditions: 29 | 30 | The above copyright notice and this permission notice shall be included in all 31 | copies or substantial portions of the Software. 32 | 33 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 34 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 35 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 36 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 37 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 38 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 39 | SOFTWARE. -------------------------------------------------------------------------------- /css/github.css: -------------------------------------------------------------------------------- 1 | /** 2 | * GitHub theme 3 | * 4 | * @author Craig Campbell 5 | * @version 1.0.2 6 | */ 7 | pre { 8 | border: 1px solid #ccc; 9 | word-wrap: break-word; 10 | padding: 6px 10px; 11 | line-height: 19px; 12 | margin-bottom: 20px; 13 | } 14 | 15 | code { 16 | border: 1px solid #eaeaea; 17 | margin: 0px 2px; 18 | padding: 0px 5px; 19 | font-size: 12px; 20 | } 21 | 22 | pre code { 23 | border: 0px; 24 | padding: 0px; 25 | margin: 0px; 26 | -moz-border-radius: 0px; 27 | -webkit-border-radius: 0px; 28 | border-radius: 0px; 29 | } 30 | 31 | pre, code { 32 | font-family: 'Bitstream Vera Sans Mono', Courier, monospace; 33 | color: #333; 34 | background: #f8f8f8; 35 | -moz-border-radius: 3px; 36 | -webkit-border-radius: 3px; 37 | border-radius: 3px; 38 | } 39 | 40 | pre, pre code { 41 | font-size: 13px; 42 | } 43 | 44 | pre .comment { 45 | color: #998; 46 | } 47 | 48 | pre .support { 49 | color: #0086B3; 50 | } 51 | 52 | pre .tag, pre .tag-name { 53 | color: navy; 54 | } 55 | 56 | pre .keyword, pre .css-property, pre .vendor-prefix, pre .sass, pre .class, pre .id, pre .css-value, pre .entity.function, pre .storage.function { 57 | font-weight: bold; 58 | } 59 | 60 | pre .css-property, pre .css-value, pre .vendor-prefix, pre .support.namespace { 61 | color: #333; 62 | } 63 | 64 | pre .constant.numeric, pre .keyword.unit, pre .hex-color { 65 | font-weight: normal; 66 | color: #099; 67 | } 68 | 69 | pre .entity.class { 70 | color: #458; 71 | } 72 | 73 | pre .entity.id, pre .entity.function { 74 | color: #900; 75 | } 76 | 77 | pre .attribute, pre .variable { 78 | color: teal; 79 | } 80 | 81 | pre .string, pre .support.value { 82 | font-weight: normal; 83 | color: #d14; 84 | } 85 | 86 | pre .regexp { 87 | color: #009926; 88 | } 89 | -------------------------------------------------------------------------------- /css/main.css: -------------------------------------------------------------------------------- 1 | /* Main Elements */ 2 | body { 3 | font-family: 'Lucida Grande',Tahoma,Calibri,Arial,sans-serif; 4 | font-size: 12px; 5 | line-height: 1.584; 6 | color: #222; 7 | background-color: #ecebe8; 8 | } 9 | 10 | a { 11 | color: #333; 12 | } 13 | 14 | h1 { 15 | font-size: 40px; 16 | } 17 | 18 | h1, h2, h3 { 19 | margin-top: 1em; 20 | margin-bottom: 1em; 21 | } 22 | 23 | h1, h2, h3, h4, h5, h6, .hdr-xxl, .hdr-xl, .hdr-l, .hdr-m, .hdr-sm, .hdr-xsm { 24 | font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; 25 | font-weight: bold; 26 | line-height: 1.2; 27 | color: #343434; 28 | } 29 | 30 | .description { 31 | font-size: 1.2em; 32 | } 33 | 34 | .reference { 35 | padding: 0.5em 0; 36 | font-size: .9em; 37 | border-top: 1px solid #ddd; 38 | border-bottom: 1px solid #ddd; 39 | } 40 | 41 | #wrapper {position: relative; max-width: 800px;min-height: 100%;margin: 0 auto;padding: 20px;} 42 | 43 | section {position: relative;overflow: hidden;margin: 0 0 40px;} 44 | 45 | .breadcrumb { 46 | list-style: none; 47 | padding: 0; 48 | } 49 | 50 | body::before { 51 | content: '.'; 52 | background: url('/img/spotify-logo.png') no-repeat top right; 53 | width: 100%; 54 | height: 400px; 55 | top: 0; 56 | right: 0; 57 | position: absolute; 58 | opacity: 0.2; 59 | } 60 | 61 | /* Text */ 62 | ul {margin:0 0 20px;} 63 | 64 | /* Player */ 65 | #player {min-height:140px;} 66 | #player .sp-player {float:left;margin-right:10px;} 67 | #player .sp-list {width:inherit;max-height:inherit;} 68 | 69 | /* Drop Box */ 70 | #drop-box {border:4px dashed #333;width:100%;height:100px;padding:10px;} 71 | #drop-box.over {opacity:0.8;border-color:#74c043;} 72 | 73 | /* Buttons */ 74 | .buttons button {margin: 0 20px 0 0;} 75 | 76 | body, html {overflow:visible !important;} 77 | 78 | code {-webkit-user-select: auto;} -------------------------------------------------------------------------------- /img/spotify-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/reactify/spotify-key-bpm/ef7799ce285af411024a5737cf2ee5ed699b825d/img/spotify-logo.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |t |