2013-01-01: ojdb is now superseded by freemusi.cc. The query syntax works on this new site as well…

ojdb is a HTML5-based online music player for streaming music hosted on archive.org. Its database currently contains several thousand tracks from the enormously big Internet Archive servers. This number may sound small, but every album is selected by hand, rated and tagged song by song before being uploaded here.

The tagging standard allows for an easier music discovery compared to music blogs, the Internet Archive itself or Jamendo. If you are—for example—after steamy, great rock music, just search for mood IS 3 AND rating GREATER 3 AND genre IS Rock. Full boolean queries (AND, OR and NOT) and comparison operators (HAS, IS, GREATER, LESS, …) are supported.

This page contains a full description of how to write search queries, together with examples. It is heavily inspired by foobar2000's query syntax. The page AutoHotkey Script has a code snipped for enabling media key in ojdb.


Query syntax

Text expressions

Text comparisons are case-insensitive. Don't use quotes (' or “) unless you want to search for them.

Expression Example
<field> IS <string> title IS air castle
<field> HAS <string> title HAS he's

Numeric expressions

Expression Example
<field> GREATER <number> rating GREATER 2
<field> LESS <number> mood LESS 3
<field> EQUAL <number> playcount EQUAL 10

Date/time expressions

Playback statistics have the format YYYY-MM-DD HH:MM:SS (UTC+0100). <datetime> must apply to one of the following formats: YYYY, YYYY-MM, YYYY-MM-DD, YYYY-MM-DD HH, YYYY-MM-DD HH:MM or YYYY-MM-DD HH:MM:SS.

Expression Example
<field> BEFORE <datetime> lastplayed BEFORE 2009-06-24 20:21:22 AND playcount GREATER 0
<field> AFTER <datetime> firstplayed AFTER 2011-03

Composed queries

Query Description
<expression1> AND <expression2> Matches tracks that are found by both expressions.
<expression1> OR <expression2> Matches tracks that are found by at least one expression.
NOT <expression> Matches tracks that are not found by <expression>.

Nesting and grouping expressions with parenthesis is possible.


Optionally, the following sort expression can be appended to any query expression.

Expression Example
SORT BY{ [-]fieldname} rating GREATER 3 SORT BY -playcount firstplayed

Sorting ascending or descending by one or more fields. Numeric and date fields are correctly sorted.


Field Name Description Comments w/ example queries
Basic information
title Track Title
artist Track Artist identical to Album Artist for most tracks of single-artist releases, except for featuring artists
album Album Name
albumartist Album Artist identical to Track Artist for single-artist releases, set to Various Artists for compilations
tracknumber Track Number
totaltracks Total Tracks track count on disc
discnumber Disc Number “1” for most albums/EPs, mainly used on large compilations
totaldiscs Total Discs “1” for most albums/EPs, mainly used on large compilations
genre Genre broad musical category; one value per track
style Style finer and different musical categories; multiple values per track allowed
rating Rating subjective, integer scale from 1 to 5; 0 for missing values
mood Mood activity of track, integer scale from 1 to 3; 0 for missing values
Playback statistics
firstplayed First played Date and time of first play on my computer. Tracks added starting from 2011-03-01
lastplayed Last played Date and time of last play on my computer. Long not played
playcount Play counter Number of times that I listened to a song. Rough indicator of personal popularity
  • ojdb/start.txt
  • Last modified: 2013/02/05 15:26
  • by ojdo