Coder Social home page Coder Social logo

protonosgit / spicetify_installer Goto Github PK

View Code? Open in Web Editor NEW
9.0 3.0 4.0 29.22 MB

Install, manage and update spicetify from an easy to use gui written in python

License: GNU Lesser General Public License v2.1

Python 100.00%
easy-to-use gui modding music patches pyqt5 pyqt6 python spicetify spotify installer

spicetify_installer's Introduction

spicetify manager icon

Spicetify Manager

A project for installing and managing Spicetify from a Gui written in python and running on PyQt6. The manager comes included with tools like block Spotify updates and a mode for running automatically on boot/Spotify startup.

GitHub release (with filter) GitHub commit activity (branch) GitHub last commit (by committer) GitHub (Pre-)Release Date GitHub code size in bytes GitHub repo file count (file type)

Attention:

This repo is looking for a new maintainer! I personally don't have the time anymore to support this project in the future, so feel free to reach out if you're interested โค๏ธ

Screenshot

Key Features

  • Simple installation,update,removal of Spicetify
  • Installation status/version checker
  • Automatically update spicetify and apply patches after spotify update
  • Detect and solve problems with your spicetify installation
  • Block Spotify updates
  • Options to manage Spotify in background
  • Always use the newest spicetify version
  • Custom cli commands
  • Suggest new versions of Spicetify / Manager

Made with Love by Protonos

Installation and Running

If you do not trust the generated binary you may run the application directly with your local python installation using the provide instructions below.

  # Download the project
  git clone https://github.com/Protonosgit/Spicetify_Installer.git

  # Install required dependencies
  pip install -r requirements.txt
  
  #Start the application
  python main.py

Important!

Only the main.py file will start the application!
The other files are dynamically used as components and windows.

Building binary

  # Download the project
  git clone https://github.com/Protonosgit/Spicetify_Installer.git

  # Install required dependencies
  python -m pip install requirements.txt
  python -m pip install pyinstaller

  # Build using pyinstaller and predefined config
  pyinstaller main.spec

  # Alternatively build an optimized version using upx (slower)
  pyinstaller main.spec --upx-dir "./upx"

Usage Guide

[1] After running the main.py file wait a few seconds for the menu to show up

[2] Click on install and wait for the process to finish

[3] Inside the spotify window search for the shopping cart in the sidebar on the left

[4] Click on the icon and download your favorite themes, addons and more...

Uninstalling

Simply click on the uninstall icon in the bottom right and confirm your choice

Updating, Activating, Repairing

All of the above will be automatically detected, just confirm the actions!

Manager API

Due to rate limiting I decided to create my own relay for the official Github api. It just returns the latest release tag from the spicetify-cli repo.
You can monitor the status here: Netlify Status
There might be more efficient ways to do this so feel free to suggest any improvements as an issue!

Safety

This project was flagged by some antivirus programs and I currently don't know how to avoid this! So feel free to download the executables from Github actions and use them instead of the release files (They are identical)

Currently Windows only! If would like to improve support for other Platforms feel free to do so!

Acknowledgements

spicetify_installer's People

Contributors

protonosgit avatar nive9 avatar nikhilkulkarni1755 avatar

Stargazers

 avatar Hashem avatar Saloframes avatar Bharathi avatar  avatar  avatar  avatar BlackNeutron avatar BloodDragooner2 avatar

Watchers

Kostas Georgiou avatar  avatar BlackNeutron avatar

spicetify_installer's Issues

Server connectivity status

Describe the feature
Show icon on manager window when server request failed (spicetify / manager updates)
Also show icon when client is offline.

Additional context
Maybe Switch to alternative update checking.
(Not part of this issue)

App crashes after uninstall clicked

Describe the bug
The uninstall button crashes the app when its pressed and spicetify is not installed

To Reproduce
Steps to reproduce the behavior:

  1. Dont install spicetify
  2. Click uninstall

OS/Platform:
Windows

Update button disables install button

Describe the bug
Clicking update button hides launch / install button after checking version

To Reproduce
Click on update button and wait for check to finish

OS/Platform:
Windows

Additional context
~

Schedule status update

Perform regular status updates in background and while using ui so information stays updated.

Improved contributer readme

Add some information about basic function behaviour in the contributing markdown file using annotations in python code.
Shouldn't be detailed just a small overview over the most important functions and files!
There is no need for advanced knowledge of my code (I know it's bad) just something to work with if a quick overview is needed.

Useful locations

Main python file
UI files (Only .ui files!!)
Additional components

Detect spicetify updates without api

Describe the feature
Manager is currently using its own api with github token.
Sometimes the api goes down,token expires(only valid for 90days or so) or url is blocked by whitelist.
In future use local update checking which is already done by spicetify itself.
Could come with problems if spotify is not run for a while updates will only be shown on runntime!

Additional context
Maybe check from config files or similar

Spotify restarts too often

Describe the bug
Spotify restarts to often while performing actions ( -n flags are gone)

Steps To Reproduce

  1. Perform any action like updating,installing,etc

New management options

Describe the feature
Manager currently only allows uninstalling all components.
Adding the abilty to select what to remove in a dialog with checkbox style menu would be nice.

Additional context
Could look like:

What components would like to remove

  • Deactivate themes and mods
  • Remove all mods and themes
  • Uninstall Spicetify
  • Full cleanup

App crashes while searching for injected snippet

Describe the bug

I just found this project today (Dec.3, 2023) and tried to install it and the installer can't able to execute the program.

Device info: Windows 10

Steps To Reproduce

  1. Go to 'Downloaded package v1.1.2'
  2. Double-Click to install.
  3. the following error provided below appears.

Additional context

Spicetify_Manager_v1 1 2_SBliEXi7mp

Block spotify update service

Find a way to prevent spotify from downloading and installing updates.
Needs to be reversible and should not have effects on the normal operation of spotify and spicetify!

1.3 Project completion

1.3.0 Spicetify Manager

  • Clean up remaining code snippets and add comments
  • Finally add upgrade/update in background option
  • Finally Enable restart spotify Checkbox option #17
  • Fix spotify restarting randomly or never even if it should
  • Fix remaining input methods (block update checkbox bugging out)
  • Advanced error system (currently broken)
  • Maybe add response to custom commands (this is not a priority for me)

Help als always appreciated!
You can always open an issue and request new features or report bugs so feel free to do so.

This might be the last release for a while so I can keep on working at other projects!

Dialog system

Cleanup current system and make greater use of the popup module

Background graphics and design elements

This repo is pretty new and so is my ability to write somewhat usefull python code so please only try to edit the .ui files (maybe in qt designer)

I am not a ui/ux designer and would appreciate help in finding background graphics and other design elements for this tool.
The general theme should be obvious.
(changing existing design elements is allowed)

Dropdown menu on main menu

The main menu should be simplified but for this I would need to add a simple dropdown-menu in the top left corner for stuff like: updates, uninstalling, etc.
An image can be used as the anchor for the menu (no windows tool bar menus)

There is not much to care about regarding the design it just should be simple and functional.

*I am using qt designer (.ui files) for the UI

Add window icon

Add a window icon to uninstall dialog (button in right corner)
Problem lies here

Detecting start of Application

Detect when spotify starts (utilizing a background service) and trigger a version check.

I only need the background service and detection mechanism!

Refresh spam crashes Manager

Describe the bug
Clicking the refresh button causes the Manager to freeze

To Reproduce
Steps to reproduce the behavior:

  1. Click refresh button 6-20 times
  2. Attempt any other interaction with the window
  3. Window freezes

Improve startup time

Describe the feature
The manager suffers from poor startup performance due to forced synchonous startup operation. (status checks)
The startup time needs to be reduced drastically for a good user experience!

Additional context
The system needs following improvements:

  • Only do neccesary checks (don't check versions if not installed)
  • Implement asynchronous operations (currently status check and ui combined)
  • Make checks after startup (display loading info)
  • Optimize network requests and use config files instead
    • Optionally try to get update notification from spicetify itself #24

Replace background gif

Change gif in background of the window to something more subtle and fitting.

If you would like to help just swap this file with something you know your allowed to use or made yourself.
(The gif needs to loop and match the spicetify/spotify/music theme)

Blocking Spotify Updates crashes the app

Describe the bug

The UI/ app fails to load after enabling 'Block Spotify Updates'. Running the main.py returns the following, which includes PermissionError when trying to access the Update folder.

PS D:\Downloads\Spicetify_Installer-main> python main.py
D:\Downloads\Spicetify_Installer-main\components\shellbridge.py:111: SyntaxWarning: invalid escape sequence '\s'
  'powershell.exe -Command "rmdir -r -fo $env:APPDATA\spicetify"', check=True, shell=True)
D:\Downloads\Spicetify_Installer-main\components\shellbridge.py:114: SyntaxWarning: invalid escape sequence '\s'
  'powershell.exe -Command "rmdir -r -fo $env:LOCALAPPDATA\spicetify"', check=True, shell=True)
D:\Downloads\Spicetify_Installer-main\components\statusInfo.py:70: SyntaxWarning: invalid escape sequence '\M'
  "Software\Microsoft\Windows\CurrentVersion\Run", 0, winreg.KEY_READ)
D:\Downloads\Spicetify_Installer-main\components\tools.py:71: SyntaxWarning: invalid escape sequence '\M'
  "Software\Microsoft\Windows\CurrentVersion\Run", 0, winreg.KEY_SET_VALUE)
D:\Downloads\Spicetify_Installer-main\components\tools.py:77: SyntaxWarning: invalid escape sequence '\M'
  "Software\Microsoft\Windows\CurrentVersion\Run", 0, winreg.KEY_SET_VALUE)
QFont::setPointSize: Point size <= 0 (-1), must be greater than 0
QFont::setPointSize: Point size <= 0 (-1), must be greater than 0
Launching in debug mode...
Traceback (most recent call last):
  File "D:\Downloads\Spicetify_Installer-main\main.py", line 294, in DisableUpdate
    if (blockSpotifyUpdate(self.check_noupdate.isChecked())):
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Downloads\Spicetify_Installer-main\components\shellbridge.py", line 173, in blockSpotifyUpdate
    shutil.rmtree(os.path.join(
  File "%LOCALAPPDATA%\Programs\Python\Python312\Lib\shutil.py", line 820, in rmtree
    return _rmtree_unsafe(path, onexc)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "%LOCALAPPDATA%\Programs\Python\Python312\Lib\shutil.py", line 624, in _rmtree_unsafe
    onexc(os.scandir, path, err)
  File "%LOCALAPPDATA%\Programs\Python\Python312\Lib\shutil.py", line 621, in _rmtree_unsafe
    with os.scandir(path) as scandir_it:
         ^^^^^^^^^^^^^^^^
PermissionError: [WinError 5] Access is denied: '%LOCALAPPDATA%\\Spotify\\Update'

Steps To Reproduce

  1. Start app
  2. Enable 'Try to block Spotify updates'
  3. Close app
  4. Open app
  5. Crash/ Fails to start

Display update/apply dialog

Show a popup to announce new updates and inform about status changes,
Triggered in main.py in function def alertSpicetifyStatus():

Warning watch parent thread issues!

Toast buttons not working

Describe the bug
Toast buttons on update / error event are not working

Steps To Reproduce

  1. Trigger update toast or status toast (alertSpicetifyStatus function)
  2. Toast will show up
  3. Callback function is not called on button actions

Information:
Iam using windows_toasts library

persist the settings change in Advanced tab

Describe the feature

I tried to use the option Close manager after progress, but when I start the manager app later as new session, the options have been rest to the default.
i really looking forward to see the options be persistent.

Implement basic user documentation

Just implement a basic documentation for contributors and users.
Should not be too large and extensive!
For new users informations like how to run a python project, what are github workflows and how to use the manager in general should be enough!

1.2 Manager rework

  • Romoval of Splash screen
  • Fix broken background service
  • #20
  • Reduce binary size
  • Extend error catching
  • Add more runntime status information
  • Improve modularisation
  • Reduce startup time

Custom commands output missing

Describe the bug
No output is shown when custom commands are run

Steps To Reproduce

  1. Go to advanced section
  2. Select any command
  3. Click run

Additional context
No output is returned

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.