khinsider.py: a one-file command line downloader for game soundtracks
A script for khinsider mass downloads. Get video game soundtracks quickly and easily! Also a Python interface.
At a glance
- What is it?
- khinsider.py is a single Python script that turns a soundtrack name or URL into a folder of tracks, and doubles as an importable module with download, search and object classes. It is a scraper for a site that hosts the audio, so the copyright position of what you pull down stays with you.
- Who is it for?
- khinsider.py fits a person who wants one game soundtrack on disk in a chosen format, or a small script that pulls a fixed set of albums, and who is comfortable with a scraper that reads the site's HTML. It does not fit a pipeline that needs a supported data source, a stable API contract, or an expectation that the site's markup will not change, since the project is a single script with no releases and no versioned interface.
- Can I use it commercially?
- Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
- Is it still maintained?
- Yes. The repository last received commits 92 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
One file, two ways to use it
khinsider.py is a Python interface and script for getting soundtracks from khinsider, and the repository is remarkably small: a .gitignore, the script itself and a readme. That is the whole inventory, and it shapes what the tool is. From the command line, you pass a soundtrack identifier.
khinsider.py jumping-flashThe same thing from Python, which is the part that makes it usable inside a larger script.
import khinsider
khinsider.download('jumping-flash')
# And bam, you've got the Jumping Flash soundtrack!The comment is the author's, and the tone matches the project. There is no package structure, no configuration file and no test suite directory. For a utility that wraps one website, that is a defensible choice, and it also means there is no API stability promise: a change in the site's markup is a change in your script.
Identification by name or by full URL
The usage section is specific about how the script resolves what you asked for. The sole parameter is the soundtrack you want, and you can either use the soundtrack's ID or simply copy its entire URL. That second option is convenient because khinsider addresses albums by a trailing slug, and the download function's documentation says the argument should be the name the soundtrack uses at the end of its album URL. There is a second, optional parameter for the output folder. The script also accepts a search term instead of a soundtrack name: if the first parameter or parameters are not a valid soundtrack, khinsider.py gives you a list of soundtracks matching that term. That fallback is what makes the tool usable without browsing the site, and it is a nice touch, because searching and downloading are the two things anyone actually wants from a scraper.
Format selection with a preference order, not a single choice
Beyond MP3, the script can download other formats where they are available, such as FLAC or OGG.
khinsider.py --format flac mother-3The module API generalises this into an ordered preference rather than a single target. The download function takes a formatOrder argument, and the documentation gives the example formatOrder=['flac', 'mp3'], which will download FLACs if available and MP3s if not. So the behaviour is best described as a fallback chain: the first format in the list that exists for a given track is the one you get. That is the design detail worth knowing, because it means you can request lossless and still receive MP3 for tracks that were never ripped in FLAC, and a script that assumes otherwise will silently mislabel files. The command line exposes the simpler single-format version of the same idea.
The download function and its four knobs
The public function is download, and its signature is documented in full: khinsider.download(soundtrackName[, path="", makeDirs=True, formatOrder=None, verbose=False]). The soundtrackName argument is the album slug. The path argument says where the soundtrack files go, and if it is not specified they land in the current working directory. The makeDirs flag, which defaults to True, creates the directory if it does not exist. The formatOrder argument is the preference chain described above. The verbose flag, defaulting to False, prints progress as the download runs, which is the one you will want on a slow connection with a large album. The README is candid that there is more API than it makes sense to write down here, and points you at the Soundtrack, Song and File objects in the source for advanced use.
Search returns objects, not strings
The second main function is khinsider.search(term), which searches the site and returns a list of Soundtrack objects matching the term. From each one you can read soundtrack.id or soundtrack.url. The object model is the part that makes this a module rather than a script, and it is also the part the README deliberately leaves to the source code. The Soundtrack, Song and File objects are documented in the code, and the types of information a search result carries, such as the album name, its tracks and the available formats per track, are what a caller would want before deciding to download anything. The README notes that these objects are documented properly in the source for your reading pleasure, which is a fair summary of a project whose documentation is a readme and inline comments.
Dependencies are installed for you on first run
The runtime requirements are modest. The script needs Python, and the README notes it works with both Python 2 and 3, though if you do not know which version to get it suggests the latest Python 3. It needs two non-standard modules, requests and beautifulsoup4, which the README says are most likely already installed if you have pip. The unusual part is the setup: the first time khinsider.py runs, it will install these two for you. That behaviour is convenient for a person who just wants an album and mildly awkward for anyone with a locked-down environment, since a script that installs packages on first execution is doing something most tools leave to your package manager. Running khinsider.py --help gives the option list, and the README points there for more detail.
A script with no releases, and the copyright question it does not answer
The maintenance picture is thin. The repository is not archived, but the last push was on 2026-07-23 and there are no GitHub releases, so there is no version history to consult and no published artifacts to pin. The topics list includes bulk-download and download, which describes the intent plainly, and the script is described as making mass downloads a breeze. That framing deserves a direct note. The tool automates fetching audio files hosted by a third party, and the terms under which that audio is available are set by the site and by the rights holders of the game soundtracks themselves, not by this script. The author asks for issues and feature requests on GitHub, and points to a Twitter account and an email address, and notes a separate project for anime music. If what you need is a soundtrack for personal listening, the mechanism works. If you need it for redistribution, that is a question for the rights holders and not for this repository.
Editorial conclusion
khinsider.py fits a person who wants one game soundtrack on disk in a chosen format, or a small script that pulls a fixed set of albums, and who is comfortable with a scraper that reads the site's HTML. It does not fit a pipeline that needs a supported data source, a stable API contract, or an expectation that the site's markup will not change, since the project is a single script with no releases and no versioned interface. Verify first that the soundtrack names you want are identified the way the script expects, run it with --help to see the options, and check the licensing of the audio itself, because the script is a downloader and the responsibility for what you download does not transfer to it.
Frequently asked questions
How do I download a soundtrack with khinsider.py?
Run the script with the soundtrack name or its full URL, for example khinsider.py jumping-flash. An optional second argument sets the output folder, and if the first argument is not a valid soundtrack the script lists the soundtracks matching it as a search.
Can khinsider.py download FLAC or OGG files?
Yes, where the site has them. The command line takes a --format option, for example khinsider.py --format flac mother-3, and the module accepts a formatOrder list such as ['flac', 'mp3'], which downloads the first available format in the order given.
What dependencies does khinsider.py need?
Python, plus requests and beautifulsoup4. The README says the script works with both Python 2 and 3, and that the first time it runs it installs those two modules for you if they are missing.
How do I use khinsider.py as a Python module?
Import khinsider and call khinsider.download with the album slug, optionally with a path, a makeDirs flag, a formatOrder list and a verbose flag. khinsider.search returns a list of Soundtrack objects exposing id and url, and the source documents the Soundtrack, Song and File classes.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/obskyr-khinsider)Was this useful?