PYThing banner

PYThing

19 devlogs
51h 33m 42s

An alternate web UI (and more) for the discontinued Spotify Car Thing that was bricked in 2024. This opens up the device to be used with other services (like apple music), or even to completely repurpose the device. This makes it possible to bring…

An alternate web UI (and more) for the discontinued Spotify Car Thing that was bricked in 2024. This opens up the device to be used with other services (like apple music), or even to completely repurpose the device. This makes it possible to bring back functionality that was lost with this otherwise good device. It’s written in python, which I think is perfect, as apps can be written, even by a beginner.

This project uses AI

The javascript of the lyrics app and the build script was debugged with GitHub Copilot. The styling of the music app page was assisted by Gemini.

Demo Repository

Loading README...

Trey

Shipped this project!

I’m reshipping PYThing, an alternate web UI for the discontinued Spotify Car Thing. This alternate UI is made to be used with whatever you want, provided you can make your own app. You could make a hackatime dashboard if you want, or change spotify to apple music! This reship is to cover lost time from the first ship.

Trey

I added an optimization section to the README so I can submit for the optimization sidequest (hopefully).

Attachment
0
Trey

There is a demo video on GitHub now!

Attachment
0
Trey

PYThing has banner art now! It’s pretty simple, and might be improved later.

0
Trey

Frontend

The visual language has been changed. All apps have a slight transparency now. It’s supposed to be close to glass, but I can’t blur it due to old chrome restrictions, so it’s just transparent.

Backend

A few backend bugs were fixed

  • The spotify and lyrics app actually send a user agent now.
  • The number of ignored type errors went from 28 to 7, these were not actual bugs, but just false positives that have been refactored to not trigger anymore.
  • The carthing related code has been moved to an app in an attempt to reduce the file size of init.py
  • The spotify app downloads the cover art at half resolution now, which makes the file ~1/3 of the space on average.
Attachment
Attachment
Attachment
Attachment
Attachment
Attachment
0
Trey

More backend and documentation changes, but oooh pretty gradient. Jokes aside I think it looks pretty nice.

Attachment
0
Trey

Another big update, there are now configurable accent colors, and they can also be set automatically by the current song (or any app if you feel like making your own)! The code that determines the color is just ok (it favors saturated colors over the one with the most area, feel free to pr), in the demo video I kept getting yellow. Anyway, for the songs that work, it works really well! All apps have been given some color, some more than others. Another notable mention, more apps tell you when it has nothing to show, like the lyrics app, which used to just show a blank screen, but now tells you what it’s doing. The dashboard also tells you to check out settings, and there is a setting to turn off the message (to make sure you have actually visited the page). The loading animation also now actually waits for the app to fully load, and for the websocket to be established before revealing the app. Apps can also inject code into other apps now, so that’s cool I guess. The customizer app uses it to allow the app to get the current accent color. There were a few more changes, but I dont have a reason to include all of them.

Attachment
Attachment
0
Trey

The README is sorted now, so it’s not one giant chunk of text.

Attachment
Attachment
0
Trey

Wrapping up, there is now a binary release (hour of debugging for a problem that copilot solved in 5 minutes), and a few other changes. The music app now gives a warning if it has gotten no data, and the app data is stored in the home folder, instead of the source directory.

Attachment
Attachment
0
Trey

Shipped this project!

Hours: 38.65
Cookies: 🍪 713
Multiplier: 18.45 cookies/hr

I made PYThing, an alternate web UI for the discontinued Car Thing. I spent a lot of time making a well-thought-out app ‘API’, that lets anyone create their own apps easily. This projects biggest strength is its modularity.

Trey

As I get ready to ship, I have created a release with usage instructions.

Attachment
0
Trey

The music app now has a UI! It’s pretty basic, but it shows what song is playing. The UI was assisted by Gemini, and is a little bugged on desktop chrome, but looks fine on the Car Thing. This might be the one of the last few devlogs before ship.

0
Trey

Quick devlog, but I want to be honest with my AI usage. Before, the lyrics app would poll every 20ms, which was way heavier then what I wanted. I have gotten copilot to rewrite the client javascript, so it should be less heavy. Also (non-ai), the spotify app can fetch the album art for the current song to be used in other apps.

Attachment
0
Trey

I have added a readme with usage instructions and how to make your first app.

Attachment
0
Trey

New app: Lyrics! Get the synced lyrics for whatever song is currently playing, not many backend changes this time, I think the app API is almost complete.

0
Trey

Windows support has been added and tested! Also, the music playbar moves the app content up and out of the way. The background is now black again.

0
Trey

The settings page has been completed, and to demo it, there is now a music app that shows a progress bar of the current song at the bottom of the screen. The music and spotify apps are both separate, so you can create your own provider (like jellyfin) with your own data if you wish. Other apps can also hook into this and get the current playback state for their own use. Also, the rounded corners now only show on car things. To make all this work, apps can now directly inject html into the client page, for whatever they want.

Attachment
Attachment
0
Trey

The hardware app has been completed! I was not able to find a good way to get GPU data, so it was replaced with disk r/w. Also, carthing detection and setup is faster now. There was a 3 second delay to check if the carthing already had the client on it, but now it is done by checking for a specific file in the root of the webapp directory that is placed there on setup. For carthing support, the app needs access to adb, and if it is not in path, the app now asks to download it for you. Work is also being done to allow apps to inject html directly into the client view, so that apps can have persistent overlays across apps.

0
Trey

I have changed the background color to make the fake rounded corners stand out more, in the future a custom color should be able to be set. The auto-time element and getRealDate client function should also now be able to be used quicker, as the real date offset is now sent on connect, and updated every minute, instead of every second, and having the client wait for the next update. The most notable feature is that apps are now able to send data between the client and server in real time, and can be demoed in the new “System” app, which updates ram usage once per second. Client > server communication has no demo yet. There was also a bugfix where I was accidentally importing init.py multiple times, so variables could have two different values depending on where you read them from.

0
Trey

This log comes with a few style changes, a working dashboard, and a clock app. Apps also now have more functions available for them to use. Also, this should work on Windows now, although I have not been able to test yet. The menu button on the car thing (key m on desktop) sends you to the apps menu, and you can select apps with the wheel and button, or the touch screen.

0
Trey

As a start, there is one working backend, and one working app, although no dashboard (so no app demos yet).

Attachment
0