Roblox supposedly has “hundreds of thousands” of songs from APM. However, there’s no way to find them given the search tools provided. This plugin aims at solving this problem by categorizing all the songs and helping developers search through the music.
Pretty neat idea! However, it should be noted that a lot of songs don’t show up in this plugin currently. Do you have any estimate on how long it will take for the majority of the audio to be accessible by this plugin?
I’m still working on migrating my resources to AWS to speed it up and automate everything. The biggest problem is that the MarketplaceService throttles requests, so I can only make 100 requests per minute. I have to scan through millions of IDs. I’m going to try to parallelize the process on AWS to speed it up a bit.
I will have a rough estimate once I know the min/max ID range properly & how many EC2 instances I can reasonably run on AWS to split up the task.
For anyone curious, the collection process is quite straightforward:
Loop through a range of possible IDs
Send a request to the Marketplace API for each ID
Check if the asset is audio (AssetTypeId == 3), and if the creator is Roblox (Creator.Id == 1)
Parse the info for the song & store it
Yield for the required time to meet the throttling limits
The hardest part of the process is running this in parallel. The reason this is complicated is due to the nature of splitting up the ID ranges per instance/thread/EC2 & dealing with failures. I have to create a “master” lambda that keeps a reference to the ranges being handed out, and each range needs to be marked with state (e.g. “Not scanned”, “Scanning”, “Done”, “Error”). So it’s becoming quite a large infrastructure project, but it’s kinda fun. (I’m over-complicating this quite a bit because it’s also serving as self-training for my job which is primarily AWS focused.)
My collection process is almost in full use, but I’m still finishing up a couple pieces on it. It will take roughly 9 days to collect everything. Again, this is due to the throttle limit.
After the collection process is done, I have to somehow parse all that information out and throw it into the plugin. This will be a big challenge, considering the number of songs will increase over 10x. For all I know, the JSON parser won’t work with that much data! I don’t know.
So, roughly speaking, I’ll have the remaining 100k+ songs in about a month.
This looks like it’ll be worth the purchase, I’m buying this right now. Using the finnicky search algorithm on the website is a pain as it is but being able to get into the grit of APM tracks exclusively is equally as painful. Having access to a dedicated tool to searching such tracks, including extra options such as to preview tracks and all topped off with a lovely UI, already tell me that this will be money well spent.
Love ya CM32, always out there making the coolest stuff.
I’ve been surprised that I haven’t hit any snags yet. A full week of smooth running so far! Kudos to Python for running smoothly & the Roblox API for staying up without any interruptions.
Thank you so much for this! I tend to use it a lot, and I found some good sauce to use.
For game developers who want their mouths to water, search “Drama” in the category “Album”
The collection process has completed. It has found 371,576 songs!
So…now the real challenge starts: How do I migrate 300k entries of song metadata into a Roblox plugin and still allow real-time searching? I hope to have some free time this week to work on this.
As of posting this, RbxMusic now has nearly 372,000 songs available! This has been a month-long journey of insanity to hack together a usable search feature for all the APM music.
Thanks to everyone for the support and feedback. I will continue to keep this plugin updated.
Some features I still want to add:
Ability to right-click on genre/library/etc. and search by that value
Multi-filter ability (e.g. filter by a selection of libraries and/or albums)
Importable script that can be used to play the music in your game