Activity

qwik

Shipped this project!

This is…. honestly just a really simple project droidtehe Sure it’s got a decent amount of stuff for a beginner but I just threw it together literally last minute to submit to Codextentions because I want that sweet second monitor (and I need the extra votes to get cookies for my real project lmao)

I’ve already done one hackatime tomfoolery way back as like, my first python project back in Siege when I first joined Hack Club, and i’m quite proud of making myself go full circle. I still think the other one was way cooler because CLI and themes and stuff but honestly I’m happy to be able to revisit the hackatime API despite how godawful it is LMAO

thanks for flavouring this town with me everyone! it’s been fun droidhappy 💖

qwik

Finished off the CSS, it looks Standard™️, dont want to put too much effort into styling it (and it won’t fit other people’s themes to be honest), and wrote a really quick readme + published a demo. Ready to ship, an hour ahead of time :3

Attachment
0
qwik

Wrote the render loop to actually spit this data into HTML! and there’s no styling yet, but it all shows :) this is… honestly all I really wanted out of this! Just going to pretty it up and ship in the now 90 minutes remaining lmfao

CSS TIME YAYYYYYY yippeee yayayayayay fish-magic_wand

0
qwik

spent a stupid amount of time figuring out the hackatime API, but that’s the backend done and being sent properly to the frontend, now I just need to render the information :) should be super simple to just render a few lists, unfortunately i won’t be able to get very creative with the CSS because… you know… two hours left in flavourtown…. fear

Attachment
0
qwik

Okay the image is NOT all that I did, slowly piecing things together from google searches, looks like this project is pretty doable! this is before I went through and made some scaffolding for the API and config that i’ll need later, but this shows the proof of concept of it sending a message between the “backend” (js) and the “frontend” (the html webview, it’s basically just an iframe)

Attachment
0
qwik

aaaalright that was surprisingly easy! I sorted package.json out with the metadata it wanted, set up the interactions, and set up a webview (which is literally just html in a multi line string lmao agh i hate vscode) now i can actually start building the project hopefully
Also I tested vsce package and it builds the extension properly so when it’s time to ship then yippeee (please be fast 3c )

Attachment
0
qwik

Okay so this extension is mostly gonna be low effort; i’m tired and haven’t used vscode in a while I just want a monitor grant lmao

Anyways, i got it to set up a template project, got it to load, and got the first interaction to render (it’s just hello world by default but hey it works) and it Runs™️ so hopefully this should be relatively painless… but i still have to use javascript, so……. we will see pf

0
qwik

15 minute change but uh just added the interactions for system level media players, not much to say, SHIPPED!!!! under review!!

0
qwik

Shipped this project!

Hours: 69.17
Cookies: 🍪 1991
Multiplier: 28.79 cookies/hr

Okay I keep seeing people do really long heartfelt ship messages which i don’t really feel like doing BUT HERE GOES ANYWAY:

Spotify has always sucked, especially after they broke spicetify, youtube music is somewhat usable, but I’ve been really meaning to get my hands on a proper selfhosted solution and my server is a pentium E6700 (yay-67) machine from like 2005, so… I built something lighter than Jellyfin! And it works! Annnnd… it’s missing a whole load of features, bUT IT WORKS, and hopefully I’ll be able to keep updating it in the future yayayayayay

this is the first project where I really felt like I knew what I was doing with Python, and it’s given me invaluable knowledge working with a database, and files, and REST APIs, and networking, et cetera, other latin term, uhhh… as well as using a proper framework for the first time for web dev (I still hate javascript…)

this also gave me a really good style guide for my future projects! already my personal site exists with the same UI elements, eventually I’ll turn into a proper kit for buttons etc, and CSS is actually… fun? sometimes? how!! this will be super awesome to put on a portfolio when I maybe kind of someday somehow get a j*b! this is awesome

also please dont dmca me

qwik

i spent some time doing MATH OH GODS AAAAAA
Anyways the visualizer thing looks really good and I’m glad I had a place for it all this time lmao
Uhh there are a few constants to tweak it but honestly I’m pretty happy with this and it’s still surprisingly lightweight!
also i spent a while uploading an unhealthy amount of tracks for when the demo goes out lmao :3 thank you val youre awesome
going to hopefully ship after i check for bugs real quick and fix the mpris integration!

1

Comments

sl4shed
sl4shed 2 days ago

yoo fire yay

qwik

suprisingly easily: made the search bar, you know, search things 3c
one more feature and i can ship! don’t really know what else to say about this, just had to make a minor mod to the backend (get rid of artists with 0 tracks in the results, ignore that i. found one in the demo, too lazy to rerecord it)
i just want to make a visualizer which really is just a feature to make it look a little cooler

0
qwik

patched in the clock (which is suprisingly annoying in svelte), finished up the recent tracks tab (which is reactive + won’t show duplicates), made the first move towards a search endpoint, i need to hurry and ship waow

0
qwik

Okay don’t question the songs I let somebody test the server-
Put together the queue feature (and its draggable), should mostly just Work, hopefully its usable
then also did a really simple random button that just shuffles all the songs into a queue which might be a bit slow but Whatever
and I got a friend to test the server for vulnerabilities none found :D although auth is pretty insecure, other people tested it, it all works, fixed a few bugs…….. GOTTA SHIP
things i have left to do: just the recent feature and the search (also the clock) and ill get someone to test it

0
qwik

just spent a little while writing the readme! not much to say about this to be honest pf i’m getting pretty close to done though so hopefully should be able to ship soon :)

Attachment
0
qwik

Uhhhhhhhhh okay yeah I was really tired today and probably wasted waaaaay too much time on this I HATE JAVASCRIPT but I got all the artist shit rendering, objects are a pain, the queue system Kind of works (though the ui isn’t done yet), also I started a bit on writing the devlog and getting stuff ready to ship yay hOLY SHIT THREE HOURS?? HOW???

0
qwik

(video: audio warning, also make sure its unmuted)

THE MUSIC PLAYER PLAYS MUSIC HOLY SHIT THATS WHAT IT DOES ITS THE POINT OF IT WAOW okay sorry i already used that bit

But Yeh it plays music! from the server! and i also figured out how to build it -> host it to the public internet (suuuurely that’s not a bad idea right trolley) ok uh, now i have to populate the artists and albums views, which should be pretty simple copy and paste jobs, then it’s getting close? to being done oh wait i have to write documentation uuuuuuuugh

0
qwik

okay so there’s a lot of work on scripts that you can’t really see, but i’ve gotten the queue set up, and the track list rendering properly! right now it’s a bit limited in terms of navigation unfortunately :( there are functions for the now playing i just have to hook it up! will have to do a bit of a mod to the backend for auth because yeh html is weird

0
qwik

Okay so my backend DEFINITELY still needs work uh my import flow is broken as shit, that’ll be something to do after ft pf BUT:
i did a really stupid workaround by directly injecting id3 tags into files via the browser because it detects them fine lmao

(I HATE ID3 IT CAN GO DIE I HATE IT SO MUCH AAA)

Anyways also made the form :D and it uploads fine! except this One copy of megalovania that breaks because it’s an m4a in an mp3 container which i thought was really funny thanks sans dont break my program kthx ANYWAYS hopefully i can actually get songs streaming now~!

0
qwik

wrote the login flow, there’s not much to say about it :p it works! connects to the api! that’s the first time i’ve done that :) now to hopefully get some meaningful content rendering!!

0
qwik

Added the tab system!! it works surprisingly easily, and all the sidebar items still work, added a volume slider (god styling them is annoying), and did a bit of backend stuff to make sure state management works properly! And still making sure everything scales properly because holy fuck i hate css aaaaaaa

0
qwik

Did some work fixing the layout and scaling, then worked on the state system for all the different content views / settings / login / queue / lyrics :)

and the sidebar is actually a bunch of buttons now, i like this sliiightly modern look better

0
qwik

i split all the files into their own components and then spent an UNGODLY amount of time tweaking things around til it could zoom in and out and work on as many aspect ratios as I could find and will look decent on 4k and phones which is pretty cool i think! then I just made the slider element, which isn’t much, but like, it’s there lol, now I wanna make a bunch of separate components for the panel and tracks

0
qwik

WOW oops i lost track of time holy shit apparently css is not as terrible when you kind of understand it :p

I got Svelte + Vite set up pretty easily, there’s a simple template you can just use, moved all the stuff around… I’m still figuring out svelte but it looks like it’s super good and cool and awesome

then the uh, three hours doing CSS which apparently worked out pretty well :) i’m still yet to separate these into components but the css is coming pretty well, soon i will be able to start making more adaptive components and getting music functional!

Attachment
0
qwik

i made a search endpoint! Too lazy to populate the database to actually search it but it’s straightforward, should work pretty simply :)

then I made some skeletoning for features that I wanna add after this ships for the first time, it’s getting way too late to do job management and playlists :( i promise i’ll do them totalllyyyyyyy

after that- did some small bugfixes after scanning through everything, then noticed that a bunch of myt database logic was REALLY inefficient and fixed it all up so it should be much faster now 🚀🚀🚀🚀

AAAAAAAAAND i spent like three hours (not tracked pf) making a mockup of what i want the client to look like!! i am proud of it !!!! cannot wait, i think i will use vite and svelte, hopefully it takes less than a week ohgod

Attachment
0
qwik

THE MUSIC STREAMING APP STREAMS MUSIC!! ITS A MUSIC STREAMER!! OFFICIALLY! THAT IS ITS PURPOSE!!! THE APP IS FULFILLING ITS PURPOSE!!!!!!!

okay So there’s that pretty simple feature of just fetching the entire file but also you can fetch a range with a header so you can listen to songs without downloading the entire thing :) generator functions are hard

2

Comments

Darko Sabo
Darko Sabo 14 days ago

Do you-use-arch-btw?

qwik
qwik 14 days ago

Perchance :droidangel:

qwik

aaaaaaaaaaaa I HAVE DONE THE FFMPREG
it’s transcoding to opus! and it gets all the metadata! content id will come after ft i think probably, i need to improve the import flow a lot but i still haven’t started on the frontend soooo
now i need to work on getting it to stream the music!! then the endpoints are getting close to done and i’ll stop for a while to work on the frontend and ship a super ultra alpha version <3

oh god i’m going to have to write documentation for all this oh no oh fuck

0
qwik

wow that took WAY too long uh, i’m going to tryhard on this devlog to hopefully make up for the 2nd 8 hour devlog pf

anyways this marks the first time i was able to upload a track and handle it! it got all the extraction on that one, but if that didn’t work you can always patch details on it later <3 i might refactor that later but right now i just want to get it Working

now i have to work on being able to stream that track (transcoding oh god ffmpreg) and a few other small interactions, maybe content id, then it’s polish stuff! then i can, oh god i have to build a frontend in 2 weeks this is going to be terrible for my votes

0
qwik

ok i spent an hour getting pyright to shut up about the random stuff that was fine but it didn’t like, mostly updating models.py (the database schema) to use a slightly newer class that has type hinting, then went around and did some cleanup work with the remaining type mismatches!!

i know you’re not supposed to do code screenshots but uh ts is just too satisfying + there’s not much else to show

the next devlog I SWEAR FOR REAL THIS TIME will have some audio data being tossed around the api in a few hours but first i need to sleep

Attachment
0
qwik

I had to spend like an hour trying to figure out how to fix my stupid python install, spent probably a bit too long chasing bugs that didn’t exist… but I also finished the import service, which should be super easy to link into an endpoint and then i can FINALLY start serving things with the api :3

i uhh don’t have much to show for the picture sorry </3 its just like 3 functions

Attachment
0
qwik

wrote a quick test script for the new metadata extraction, and it Works now™️
this file doesn’t show anything on musicbrainz because it already has all the metadata, i’m too stupid to figure out how to modify files to get a partial match, so you’ll have to trust that part works, there’s also some file validation logic and stuff you can’t see here

now I can finally start implementing actually. importing tracks and files :3
breaking news from the future: broke the db and wasted 2 months of some 50 year old’s time lmao

Attachment
0
qwik

Didn’t want to use a logging system so I just threw my own thing together lmao, also there are albums endpoints now

0
qwik

This devlog video uh Really sucks because i’m like halfway between features but you can see that it works (kinda)… ignore me not knowing how to call my own api (the docs page doesn’t let me authenticate for some reason, i should really build a devtool or something)

0
qwik

well two months have passed how did that happen
i dunno if i’ll ship this in the next Two Weeks but uh-
auth endpoints are working somehow??
hopefully now i can actually start handling media files

0
qwik

uh. Oh. 8 hours. Uh. Oops.
Yeah uh I wanted to have a frontend utility to have all of my devlogs not just be a bunch of code spewed out and then I decided I needed to do all the config stuff and spend way too long overthinking exactly how it will work… BUT GOOD NEWS next devlog I’ll be able to actually start the app and start moving some data about! First orders of business will probably be to figure out how to transcode files (jobs) then serve them to clients with direct Song ID requests, then I can start organizing them. I will uh. Try to make that Not 8 hours this time.

0
qwik

iiiiiii am in Pain trying to learn databases and SQLAlchemy at the same time, so this has taken far longer than it should have to set up the “model” files (basically a guide for the software to translate python objects later into SQL)

Set up a neat diagram for the tables to hopefully let me understand them better because I may be in a bit over my head, this may or may not change over time, but you can see it at https://dbdiagram.io/d/qwave-db-setup-695a456039fa3db27b0c1f73

(very minor mistake (you can’t change devlog attachments) in playlist_tracks there should not be a connection between playlist_id and track_id)

Attachment
0
qwik

https://github.com/qwikster/qwave/blob/main/qwave-docs/endpoints.md

I’m really spending a long time setting up everything I need to do before I start writing code. This time around, I got all the endpoints (hopefully) that i’ll need to start writing routing files under FastAPI, and spent some time getting the package set up. if you’re just finding this, maybe join #qwave? :3c

Attachment
0
qwik

Spent a probably unhealthy amount of time working on setting up files and directories as well as deciding exactly what I want the project to be. I’m taking a bit of a bold step not downloading album covers, but I think it will be a good idea in the end. The project will use FastAPI and SQLAlchemy to use data, and I’d like to make this possible to develop your own frontend for!

Attachment
0