◂ KJsing Songbook ▸
for the KJ
KJsing Songbook — KJSing backend, Gopher+ interface
====================================================
This server speaks Gopher (RFC 1436) and Gopher+ on port 70.
The same data is available over HTTP:
/songlist.csv full song list, CSV
/v1/songs songs (json | csv | msgpack via ?format= or Accept)
/v1/requests pending requests (same formats)
/v1/venues venues + accepting state
/v1/meta server info + change serial
POST /v1/requests submit {singer, artist, title, key_change, venue_id}
POST / legacy okjsongbook JSON API (OpenKJ compatible)
Gopher+ views on this server:
text/plain human-readable
text/csv song/request rows
application/msgpack machine records for small clients
Request a view with: selector TAB + application/msgpack CRLF
Ask for attributes: selector TAB ! CRLF
Search: /7/search TAB your words [TAB +] CRLF
Submit a request: /7/request TAB Your Name :: Artist :: Title CRLF
(or Your Name :: #songid for an exact version;
append :: +2 for a key change. The name is
asked fresh every time — nothing is remembered.)
Apps & house clients: poll /0/serial (text or msgpack view); its
number advances whenever a request, venue, category, or the
songbook changes — one cheap check tells a client to refetch.
The status number matches the OpenKJ API's: any new/removed
request, venue state change, category change, or song sync bumps
the number.
Categories (holiday/seasonal): /1/categories lists them; featured
ones appear on the root menu — any number can be featured at once
(two holidays simultaneously is the normal case).