Created on Mon. 20 April 2020
I was in need of a new wallpaper, and I wanted to make one from my album collection, I have around 400 albums saved in my youtube music gallery so that's clearly enough for a wallpaper,
I have no prior knowledge of Image processing in any programming language, so after some googling I found a nice python library called PIL. That library looked good enough for me, I just needed to crop the images to a fitting size and place them on a blank canvas.
I started by downloading 4 sample Images and wanted to do a basic square canvas of 1000x1000 pixels. In my script I first enumerate each file and save them inside of an array as so:
onlyfiles=[f for f in os.listdir(DIR) if os.path.isfile(os.path.join(DIR, f))]
I then created a new image using the python library:
With the new image set I then looped through the 4 sample files and used the paste function of the PIL library to paste inside of the destination main picture.
Now I need some arithmetic to have the picture size scale accoridingly to the resolution passed in parameter to the function so that I could work with x amount of images.
one_side=math.trunc(math.sqrt((screen_size[0]*screen_size[1]) / number_files))
Because each album artwork is a square I just had to calculate only one side of the square without taking account weird width of screens and such.
Now with the python script ready I now need a way to download every single album artwork from YoutubeMusic. I looked online for a bit to see if youtube music has an API, but with no solution on the horizon I decided to extract them myself. With the Network Monitor builtin of most modern browsers I can create a .har file that keeps track of all of the requests my browser sent to music.youtube.com with that in mind, I built a python script that downloads Images from a .har file.
You first have to dump the youtube music album covers to do that, I visited the page music.youtube.com/library/playlists. Opened my Network Inspector, I then clicked on the Album link and scrolled all the way down so that my browser picked up all of the artworks.
I then exported the .har into the folder I had the ytm_extractor.py script in and ran the script:
The output should be similar to this with a bunch of output corresponding to each file downloaded. You then have to run the wallpaper-gen script with the corresponding arguments and the wallpaper should be generated:
If you don't want to bother with the python scripts you can still use the web version I made here.
Thank you for reading, please follow me on github and check out this forum a bit more I work on some cool projects. Share the page to your rice crazy friends.