|
| 1 | + |
| 2 | + |
| 3 | +Spotube is a [qt](https://qt.io) based lightweight spotify client which uses [nodegui/react-nodegui](https://github.com/nodegui/react-nodegui) as frontend & nodejs as backend. It utilizes the power of Spotify & Youtube's public API & creates a hazardless, performant & resource friendly User Experience |
| 4 | + |
| 5 | + |
| 6 | +## Features |
| 7 | + |
| 8 | +Following are the features that currently spotube offers: |
| 9 | + |
| 10 | +- Open Source |
| 11 | +- No telementry, diagnostics or user data collection |
| 12 | +- Lightweight & resource friendly |
| 13 | +- Near native performance & seemless with default desktop themes (Win10, Win7, OSX, QT-default) |
| 14 | +- Playback control is on user's machine instead of server based |
| 15 | +- Small size & less data hungry |
| 16 | +- No spotify or youtube ads since it uses all public & free APIs (But it's recommended to support the creators by watching/liking/subscribing to the artists youtube channel or add as favourite track in spotify. Mostly buying spotify premium is the best way to support their valuable creations) |
| 17 | +- Lyrics |
| 18 | +- Downloadable track |
| 19 | + |
| 20 | +## Requirements (Linux🐧 only) |
| 21 | + |
| 22 | +Don't worry **spotify premium isn't required**😱. But some extra packages are required. |
| 23 | + |
| 24 | +- [MPV](https://mpv.io/installation/) player for playing the actual audio |
| 25 | +- [youtube-dl](https://github.com/ytdl-org/youtube-dl) for streaming the audio from youtube. It already comes pre bundled with mpv |
| 26 | + |
| 27 | +> **Important for [Ubuntu/Debian]():** If you're using any **ubuntu/debian** based linux distro then **youtube-dl** installed from the typical **apt-get** repositories will most likely not work as that version is older than current release. So remove it & install from the repository manually |
| 28 | +
|
| 29 | +Remove the **youtube-dl** installed with **mpv** player or from **apt package manger** |
| 30 | + |
| 31 | +```bash |
| 32 | +$ sudo apt-get remove youtube-dl |
| 33 | +``` |
| 34 | + |
| 35 | +Now, Install youtube-dl from |
| 36 | + |
| 37 | +- official github repo: https://github.com/ytdl-org/youtube-dl#installation (recommended) |
| 38 | + **or** |
| 39 | +- snap installation |
| 40 | + ```bash |
| 41 | + $ snap install youtube-dl |
| 42 | + ``` |
| 43 | + |
| 44 | +## Installation |
| 45 | + |
| 46 | +I'm always releasing newer versions of binary of the software each 2-3 month with minor changes & each 6-8 month with major changes. Grab the binaries |
| 47 | + |
| 48 | +All the binaries are located in the [releases](https://github.com/krtirtho/spotube/releases), just download |
| 49 | + |
| 50 | +### Windows |
| 51 | + |
| 52 | +Extract the **`Spotube-winx64-v<version>.zip`** & double click on **`install.bat`** & follow along the installer |
| 53 | + |
| 54 | +### Linux |
| 55 | + |
| 56 | +- **Ubuntu/Debian** |
| 57 | + Make sure you've fulfilled all the requirements |
| 58 | + ```bash |
| 59 | + sudo apt install spotube_linux-x86_64-v<version>.deb |
| 60 | + or |
| 61 | + sudo dpkg -i spotube_linux-x86_64-v<version>.deb |
| 62 | + ``` |
| 63 | +- **Others**: Navigate to the downloaded **`Spotube_linux-x86_64-v<version>.AppImage`** |
| 64 | + file & double click to run it |
| 65 | + |
| 66 | +**I'll/try to upload the package binaries to linux debian/arch/ubuntu/snap/flatpack/redhat/chocolatey stores or software centers or repositories** |
| 67 | + |
| 68 | +## Configuration |
| 69 | + |
| 70 | +There are some configurations that needs to be done to start using this software |
| 71 | + |
| 72 | +You need a spotify account & a web app for |
| 73 | + |
| 74 | +- clientId |
| 75 | +- clientSecret |
| 76 | + |
| 77 | +**Grab credentials:** |
| 78 | + |
| 79 | +- Go to https://developer.spotify.com/dashboard/login & login with your spotify account (Skip if you're logged in) |
| 80 | +  |
| 81 | + |
| 82 | +- Create an web app for Spotify Public API |
| 83 | +  |
| 84 | + |
| 85 | +- Give the app a name & description. Then Edit settings & add **http://localhost:4304/auth/spotify/callback** as **Redirect URI** for the app. Its important for authenticating |
| 86 | +  |
| 87 | + |
| 88 | +- Click on **SHOW CLIENT SECRET** to reveal the **clientSecret**. Then copy the **clientID**, **clientSecret** & paste in the **Spotube's** respective fields |
| 89 | +  |
| 90 | + |
| 91 | +> **Note!**: No personal data or any kind of sensitive information won't be collected from spotify. Don't believe? See the code for yourself |
| 92 | +
|
| 93 | +### Building from source |
| 94 | + |
| 95 | +**nodegui/react-nodegui** requires following packages to run |
| 96 | + |
| 97 | +- [CMake](https://cmake.org/install/) 3.1 & up |
| 98 | +- GCC v7 |
| 99 | +- Nodejs 12.x & up |
| 100 | + |
| 101 | +**Windows Specific:** |
| 102 | + |
| 103 | +- Visual Studio 2019 |
| 104 | + |
| 105 | +**MacOS & Linux specific:** |
| 106 | + |
| 107 | +- Make |
| 108 | + |
| 109 | +**Ubuntu/Debian based linux specific:** |
| 110 | +Having `pkg-config build-essential mesa-common-dev libglu1-mesa-dev` is important |
| 111 | + |
| 112 | +```bash |
| 113 | +$ sudo apt-get install pkg-config build-essential mesa-common-dev libglu1-mesa-dev |
| 114 | +``` |
| 115 | + |
| 116 | +After having this dependencies set up run following commands: |
| 117 | + |
| 118 | +```bash |
| 119 | +$ git clone https://github.com/KRTirtho/spotube.git |
| 120 | +$ cd spotube |
| 121 | +$ npm install |
| 122 | +``` |
| 123 | + |
| 124 | +Now start building: |
| 125 | + |
| 126 | +```bash |
| 127 | +$ npm run build |
| 128 | +$ npm run pack |
| 129 | +``` |
| 130 | + |
| 131 | +Go to built package directory replace `os-name` with `linux`|`win32`|`darwin`: |
| 132 | + |
| 133 | +```bash |
| 134 | +$ cd deploy/<os-name>/build/spotube |
| 135 | +``` |
| 136 | + |
| 137 | +If everything went smoothly then double clicking on the |
| 138 | + |
| 139 | +- `AppRun` or Spotube-x86_64.AppImage for **linux** |
| 140 | +- qode.exe for **Windows** |
| 141 | +- Spotube-x86_64.dmg for **MacOS** |
| 142 | + |
| 143 | +should work just fine without any problem |
| 144 | + |
| 145 | +### Development |
| 146 | + |
| 147 | +Follow the **Build from Source** guideline till `npm install` |
| 148 | +Now, to start the dev server run the command in one terminal: |
| 149 | + |
| 150 | +```bash |
| 151 | +$ npm run dev |
| 152 | +``` |
| 153 | + |
| 154 | +To start the application in development environment run following command in another terminal keeping the dev server running: |
| 155 | + |
| 156 | +```bash |
| 157 | +$ npm start |
| 158 | +``` |
| 159 | + |
| 160 | +## Known Issues |
| 161 | + |
| 162 | +There will be some glitches, lags & stuck motions because of the library Spotube is currently using under the hood. It has some issues with layouts thus sometimes some contents aren't shown or overflows out of the window. But resizing the window would fix this issue. Soon there will be some updates fixing this sort of layout related problems |
| 163 | + |
| 164 | +## TODO: |
| 165 | + |
| 166 | +- [ ] Compile, Debug & Build for **MacOS** |
| 167 | +- [x] Add support for show Lyric of currently playing track |
| 168 | +- [x] Track download |
| 169 | +- [x] Cached playback |
| 170 | +- [ ] Support for playing/streaming podcasts/shows |
| 171 | +- [x] Easy installation procedure/mechanism for simplicity in Windows |
| 172 | +- [ ] Artist, User & Album pages |
| 173 | + |
| 174 | +## Things that don't work |
| 175 | + |
| 176 | +- Shows & Podcasts aren't supported as it'd require premium anyway |
| 177 | +- Beautiful UI (you missed it, see the title😂👆) |
| 178 | +- OS Media Controls |
| 179 | + |
| 180 | +#### Social handlers |
| 181 | + |
| 182 | +Follow me on [Twitter](https://twitter.com/@krtirtho) for newer updates about this application |
0 commit comments