Skip to content
This repository was archived by the owner on Mar 30, 2024. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
3c6dd07
Fixed Lyrics sync, started adding multi-language support and added a …
BobbyESP Nov 29, 2022
5218717
Fixed some UI components and bugs and also updated build.gradle files…
BobbyESP Dec 1, 2022
6df00e1
Fixed (partially) searching, moved some hard coded text to resources …
BobbyESP Dec 2, 2022
dccf766
Added UpdateUtil (not implemented) and also added some Spanish strings
BobbyESP Dec 2, 2022
ac559f9
Changed build naming
BobbyESP Dec 2, 2022
8d56cd2
Fixed app crashing
BobbyESP Dec 3, 2022
6384363
Added some strings and also added search header
BobbyESP Dec 3, 2022
93b1c90
Added logs in some parts of the code.
BobbyESP Dec 3, 2022
d02dfd7
Added releases folder to the gitignore file
BobbyESP Dec 3, 2022
bffd07f
Formatted code in some files
BobbyESP Dec 3, 2022
a0b2092
Added no lyrics found in the lyrics composition and fullscreen
BobbyESP Dec 4, 2022
9c64a5f
Added a little elevation in the fullscreen artwork
BobbyESP Dec 4, 2022
914d47c
Added light theme background in Full screen player
BobbyESP Dec 4, 2022
d068013
Default audio quality as High instead of Very High in non-premium users.
BobbyESP Dec 4, 2022
3bae982
Updated R8 rules. Release build still failing
BobbyESP Dec 4, 2022
0d4540f
Fixed release build failing. DON'T EVER USE android.util.Log !
BobbyESP Dec 4, 2022
af08532
Updated listening history to don't have unsupported ids and temporary…
BobbyESP Dec 4, 2022
f074a16
Added an ignore battery optimization hint in settings to keep the app…
BobbyESP Dec 5, 2022
e6dfaa4
Updated some strings
BobbyESP Dec 5, 2022
27076a8
Updated xy position of the dominant color in the fullscreen player
BobbyESP Dec 5, 2022
fff1288
Made some UI changes
BobbyESP Dec 6, 2022
6cb4045
Update README.md
BobbyESP Dec 6, 2022
c4da110
Update README.md
BobbyESP Dec 6, 2022
a5ac794
OMG, LOCALIZATION FUNCTION WERE JUST HEADERS
BobbyESP Dec 6, 2022
64b8b41
Fixed battery optimization hint not working in some devices
BobbyESP Dec 8, 2022
3f1137c
Deleted some log writings for user's security
BobbyESP Dec 8, 2022
1d0404b
Update README.md
BobbyESP Dec 8, 2022
15c8d0c
Update README.md
BobbyESP Dec 8, 2022
9e39c8b
Added issue and feature request templates for GitHub.
BobbyESP Dec 8, 2022
28132f2
Added in-app updating.
BobbyESP Dec 8, 2022
ad86c91
Updated Spanish strings
BobbyESP Dec 8, 2022
aff60c4
fix: kotlinx serialization crashed the app
BobbyESP Dec 8, 2022
80d557b
Changed "Choose an artist" string to app "R" denotation and fixed Hub…
BobbyESP Dec 9, 2022
b123f00
Fixed all "unsupported" id's in the Listening History. Made the login…
BobbyESP Dec 9, 2022
c834e9a
Modified some files to merge this fork with the original project.
BobbyESP Dec 10, 2022
543ab46
Improved Light Mode experience (mostly player). Added support for lar…
BobbyESP Dec 15, 2022
a5eb959
Added a little transition based in the miniplayer offset.
BobbyESP Dec 15, 2022
f52cbf6
Started implementing a "More Options" bottom sheet dialog.
BobbyESP Dec 18, 2022
daf7b1f
Improved light mode, anims improved and More Options dialog
BobbyESP Dec 18, 2022
0cdbd63
Almost finished the "new" miniplayer UI and changed a string
BobbyESP Dec 18, 2022
a984e3d
Merge pull request #11 from BobbyESP/master
BobbyESP Dec 19, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Bug Report
description: Create a report to help us improve
title: "[Bug Report]"
labels: [bug]
body:



- type: textarea
attributes:
label: Describe the bug
description:
placeholder: |
A clear and concise description of what the bug is.
validations:
required: false

- type: textarea
attributes:
label: To Reproduce
placeholder: |
Steps to reproduce the behavior:
1.Go to '...'
2.Click on '....'
3.Scroll down to '....'
4.See error
validations:
required: false

- type: textarea
attributes:
label: Error reports & Screenshots
placeholder: |
When the error happened, click at the bottom of the page on Copy Details and paste it here.
validations:
required: false


- type: textarea
attributes:
label: Device info
description: |
Please provide some information of the device you are using.
placeholder: |
App version, OS version, device model, etc...
validations:
required: false

- type: textarea
attributes:
label: Additional context
description:
placeholder: |
Add any other context about the problem here.
41 changes: 41 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Feature Request
description: Suggest a new feature for Jetispot
title: "[Feature Request]"
labels: [enhancement]
body:
- type: checkboxes
id: checklist
attributes:
label: Checklist
description: |
Even if you're not sure about the answer, feel free to leave it blank and provide us with more information about this request.
options:
- label: This feature is merely a UI/UX update.
required: false
- label: This feature is not going to conflict with many of the existing options.
required: false
- type: textarea
id: description_1
attributes:
label: Is your feature request related to a problem? Please describe.
description:
placeholder: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
validations:
required: false
- type: textarea
id: description_2
attributes:
label: Describe the solution you'd like
description:
placeholder: A clear and concise description of what you want to happen.
validations:
required: false
- type: textarea
id: description_4
attributes:
label: Additional context
description:
placeholder: Add any other context or screenshots about the feature request here.
validations:
required: false
render: shell
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,6 @@
.externalNativeBuild
.cxx
local.properties
/.idea/.name
/app/release/
/jetispotkeypass.jks
60 changes: 42 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,59 @@
## Jetispot
_probably usable __UNOFFICIAL__ Spotify client for Android, built with Jetpack Compose and librespot-java_
<div align="center">
</div>
<h1 align="center">Jetispot</h1>

#### Spotify Premium account is REQUIRED*. Offline caching, DRM bypassing or raw file downloading is prohibted by ToS and will NEVER be implemented in Jetispot. Don't waste your time trying to request these features.
<div align="center">

A Spotify unofficial client built with Jetpack Compose, Material You/3 and librespot-java

__What's working:__
- sign in (login/pass only, no FB/Meta/whatsoever support, no Smart Lock either)
- "browse", "home", album, premium plan, artist and genre screens (some of the blocks might be unsupported)
- library: "liked songs" w/ tag&sort support, rootlist (liked playlists) + pins + artist/album support w/ nice animations, delta updates + pub/sub processing support
- basic playback w/ Spotify Connect support (connect support is very WIP)
- fairly optimized R8 rules, providing __approx. 5-6 megabytes__ release APK size (with the playback and protobuf parts!)
</div>

__What's in progress:__
## 📣 NOTICE
Spotify Premium account is **REQUIRED***. Offline caching, DRM bypassing or raw file downloading is prohibted by ToS and will NEVER be implemented in Jetispot. Don't waste your time trying to request these features.

## 🔮 App features
- Sign In (login/pass only, no FB/Meta/Google support, no Smart Lock either)
- "Browse", "Home", Album, Premium Plans overview, Artists and Genres screens (some of the blocks might be unsupported).
- Library: "liked songs" with tag & sort support, rootlist (liked playlists) + pins + artist/album support with nice animations, delta updates and also pub/sub processing support
- Basic playback with Spotify Connect support (Spotify Connect support is actually WIP)
- Fairly optimized R8 rules, providing the release APKs with a size of 4-5mb (with the playback and protobuf parts!)

## 📸 Screentshots

<div>
<img width="300" alt="image" src="https://user-images.githubusercontent.com/60316747/205959791-b3f3098b-0d39-42b3-a4d0-3747245a8511.jpg" />
<img width="300" alt="image" src="https://user-images.githubusercontent.com/60316747/205959820-481963c3-6159-4ccd-adea-f788d7480d83.jpg" />
<img width="300" alt="image" src="https://user-images.githubusercontent.com/60316747/205959868-e82b2278-b1a8-4577-a485-486dec5d9f11.jpg" />
<img width="300" alt="image" src="https://user-images.githubusercontent.com/60316747/205959884-25f94cd1-1dae-47ad-8061-c49f20c2d99b.jpg" />
<img width="300" alt="image" src="https://user-images.githubusercontent.com/60316747/205959913-c855d0b9-39a7-4449-86a6-a6674bee8457.jpg" />
<img width="300" alt="image" src="https://user-images.githubusercontent.com/60316747/205959936-0e064bd6-9731-4015-8294-cff997a1572b.jpg" />
</div>


## 🔨 What's in progress
- "Now Playing" improvements
- better service (notification improvements)
- Better playback service (notification improvements)
- Fixing "unsupported" warnings

__Application stack:__
- playback: librespot-java as the core + sinks/decoders from librespot-android + Media2 for the mediasession support
- UI: Jetpack Compose
## 👷 App specifications
- Playback: librespot-java as the core + sinks/decoders from librespot-android + Media2 for the mediasession support
- UI: Jetpack Compose with Material You
- DI: Hilt/Dagger
- network: Retrofit w/ Moshi+Protobuf converters
- network: Retrofit w/ Moshi + Protobuf converters
- pictures: Coil
- storage: Room (collection), MMKV (metadata)
- arch: MVVM
- preferences: Jetpack Datastore (proto)

__Credits:__
## ⬇️ Downloads
You can go to the [releases page](https://github.com/BobbyESP/Jetispot/releases) and download any version updated.

## Credits
- [librespot-java](https://github.com/librespot-org/librespot-java) for the core API part and playback
- [librespot-android](https://github.com/devgianlu/librespot-android) for sink and decoder source (in Jetispot they are rewritten to Kotlin)
- [moshi](https://github.com/square/moshi/) and [moshix](https://github.com/ZacSweers/MoshiX/) for the undocumented API JSON parsing
- [VK Icons](https://github.com/VKCOM/icons) for the amazing icon set used in the application's icon
- [MMKV](https://github.com/Tencent/MMKV) for ultra-fast way to cache entity extended metadata
- Google for Android/Jetpack/Hilt
- Google for Jetpack Compose, Protocol Buffers and Material UI components

_* I heard some people can log in with a free account, but I won't provide any assistance to people without premium subscription. There is a possibility that a subscription check may be added to the client side in the future._
_* Some people can actually login without an Spotify Premium account. Assistance to this accounts may be not be provided and you risk yourself for using a free acount. We will not be held responsible for any ban._
163 changes: 0 additions & 163 deletions app/build.gradle

This file was deleted.

Loading