HTTP API
TIP
All example urls in this section require you to have StreamCompanion running, with some song selected.
TIP
By default all connections to api are restricted to browser requests from local computer (localhost).
That can be changed by enabling remote access in Web overlay
settings tab.
WebSocket endpoints
tokens
WebSocket stream of requested tokens, with can be changed at any point by sending message with serialized JArray, containing case sensitive token names
Code example
Minimal working JavaScript example looks like this:
let ws = new WebSocket('ws://localhost:20727/tokens');
ws.onopen = () => {
//send token names with should be watched for value changes
ws.send(JSON.stringify(['rankedStatus', 'titleRoman', 'artistUnicode']));
};
ws.onmessage = (wsEvent) => {
//do things with data here
console.log(wsEvent.data);
};
if you execute this code and change songs in osu few times, you'll notice that not all tokens are always sent. This is intentional - messages received contain only changed values.
To have access to all current token values you need to cache them:
let ws = new WebSocket('ws://localhost:20727/tokens');
ws.onopen = () => {
ws.send(JSON.stringify(['rankedStatus', 'titleRoman', 'artistUnicode']));
};
let cache = {};
ws.onmessage = (wsEvent) => {
Object.assign(cache, JSON.parse(wsEvent.data));
//cache will always contain up to date token values
console.log(cache);
};
By default token values are sent as soon as specific plugin updates it, resulting in several messages containing information about single map/state change.
As this may be sometimes undesirable, SC can be configured to send token updates once all plugins have completed their work by appending ?bulkUpdates=MainPipeline,LiveTokens
to url:
let ws = new WebSocket('ws://localhost:20727/tokens?bulkUpdates=MainPipeline,LiveTokens');
ws.onopen = () => {
ws.send(JSON.stringify(['rankedStatus', 'titleRoman', 'artistUnicode']));
};
let cache = {};
ws.onmessage = (wsEvent) => {
Object.assign(cache, JSON.parse(wsEvent.data));
//cache will always contain up to date token values
console.log(cache);
};
Maximum amount of messages sent per second by StreamCompanion can be controlled by appending ?updatesPerSecond=15
to url (adjust number as necessary). Limited to 20 by default.
let ws = new WebSocket('ws://localhost:20727/tokens?bulkUpdates=MainPipeline,LiveTokens&updatesPerSecond=15');
ws.onopen = () => {
ws.send(JSON.stringify(['rankedStatus', 'titleRoman', 'artistUnicode']));
};
let cache = {};
ws.onmessage = (wsEvent) => {
Object.assign(cache, JSON.parse(wsEvent.data));
//cache will always contain up to date token values
console.log(cache);
};
outputPatterns
WebSocket stream of output patterns, which can be changed at any point by sending message with serialized JArray, containing case sensitive output pattern names
This works in same manner as tokens endpoint. Same code can be reused by replacing endpoint with ws://localhost:20727/outputPatterns
and provide output pattern names instead of token names.
HTTP endpoints
json
All tokens available in StreamCompanion in form of json object.
TIP
This endpoint should be used only as a tokens reference. Use these via tokens WebSocket endpoint in actual implementations.
Ignoring this will result in unnecessary resource usage, as live token values are computed only when used.
Example output
{
"backgroundImageLocation": "E:\\Gry\\osu!\\Songs\\504770 Shiron - CODE -CRiMSON-\\crimson.jpg",
"backgroundImageFileName": "crimson.jpg",
"osu_SSPP": 451.456,
"osu_99_9PP": 447.866,
"osu_99PP": 385.707,
"osu_98PP": 333.322,
"osu_97PP": 290.926,
"osu_96PP": 260.512,
"osu_95PP": 235.882,
"osu_90PP": 177.718,
"osu_mSSPP": 451.456,
"osu_m99_9PP": 447.866,
"osu_m99PP": 385.707,
"osu_m98PP": 333.322,
"osu_m97PP": 290.926,
"osu_m96PP": 260.512,
"osu_m95PP": 235.882,
"osu_m90PP": 177.718,
"mania_1_000_000PP": null,
"mania_990_000PP": null,
"mania_950_000PP": null,
"mania_900_000PP": null,
"mania_800_000PP": null,
"mania_700_000PP": null,
"mania_600_000PP": null,
"mania_m1_000_000PP": null,
"mania_m990_000PP": null,
"mania_m950_000PP": null,
"mania_m900_000PP": null,
"mania_m800_000PP": null,
"mania_m700_000PP": null,
"mania_m600_000PP": null,
"osuIsRunning": 1,
"mapStrains": {
"0": 44.96864417597254,
"1162": 69.29098204347187,
"2324": 87.12462449655517,
"3486": 108.90038884735,
"4648": 109.60957814776218,
"5810": 109.24483826251956,
"6972": 106.77096580395647,
"8134": 103.48400165956663,
"9296": 102.78336433611233,
"10458": 94.30775652256068,
"11620": 94.15728780857452,
"12782": 94.98483955855899,
"13944": 100.65286160400264,
"15106": 107.58959321414706,
"16268": 101.07761864311611,
"17430": 104.40529778171658,
"18592": 110.40180625845045,
"19754": 102.48273186689454,
"20916": 102.11430606446046,
"22078": 83.55372624978081,
"23240": 74.774650734963,
"24402": 83.26737795273651,
"25564": 90.70024045686402,
"26726": 107.12853708002561,
"27888": 96.15420940140662,
"29050": 87.78299170428674,
"30212": 85.57844368587492,
"31374": 83.63468735310929,
"32536": 86.36607285262785,
"33698": 87.43032535541167,
"34860": 74.06410799470335,
"36022": 55.32905058564928,
"37184": 55.91805724153695,
"38346": 49.68790935104358,
"39508": 53.506916716488064,
"40670": 54.380625083244006,
"41832": 64.18709022018889,
"42994": 83.55127044813347,
"44156": 91.2027107390281,
"45318": 99.64299374867973,
"46480": 109.13365389350531,
"47642": 121.9757931699888,
"48804": 142.48238674797602,
"49966": 175.85153477634913,
"51128": 177.33213117116827,
"52290": 178.33635093590206,
"53452": 171.75859668748598,
"54614": 173.72412020353707,
"55776": 171.30807086983785,
"56938": 164.0145552685746,
"58100": 154.17435320508292,
"59262": 150.79266763430596,
"60424": 155.40490566442617,
"61586": 145.9386694776438,
"62748": 140.44226628941172,
"63910": 145.9235936494571,
"65072": 135.68924624848776,
"66234": 177.29127502550472,
"67396": 176.61458756095928,
"68558": 160.45085526920974,
"69720": 125.26438661212777,
"70882": 70.89759334385263,
"72044": 49.70023461099993,
"73206": 43.19123349369499,
"74368": 48.21241087280583,
"75530": 48.75957689963867,
"76692": 47.297759377186544,
"77854": 52.19087944829928,
"79016": 66.71420445854723,
"80178": 75.70832715648534,
"81340": 85.26194642649821,
"82502": 88.26139852865204,
"83664": 77.58307914782175,
"84826": 82.0712621454316,
"85988": 62.90234651567482,
"87150": 69.49881872871893,
"88312": 73.16252709308846,
"89474": 77.27665995597455,
"90636": 96.42235647647499,
"91798": 104.31247479939282,
"92960": 121.22781434635428,
"94122": 141.33532410336898,
"95284": 159.48130682161712,
"96446": 181.3878196767104,
"97608": 180.35164662455207,
"98770": 179.5875073525588,
"99932": 179.1092903151047,
"101094": 175.7805786211659,
"102256": 162.86706571245148,
"103418": 155.5054062264992,
"104580": 148.64302467977888,
"105742": 152.22348549174973,
"106904": 148.93337322948943,
"108066": 157.3761760080899,
"109228": 155.61912980081001,
"110390": 150.52047269644947,
"111552": 162.68533495251341,
"112714": 154.003012085019,
"113876": 160.09372710052708,
"115038": 117.3268307058951
},
"skin": "old",
"skinPath": "E:\\Gry\\osu!\\Skins\\old",
"firstHitObjectTime": 733,
"mapBreaks": [],
"mapTimingPoints": [
{
"startTime": 733,
"bpm": 167,
"beatLength": 359.28144
}
],
"rankedStatus": 7,
"status": 1,
"rawStatus": 5,
"mapid": 1765848,
"mapsetid": 504770,
"username": "",
"acc": 0,
"katsu": 0,
"geki": 0,
"c300": 0,
"c100": 0,
"c50": 0,
"miss": 0,
"grade": 9,
"mapPosition": "00:01:00.4510000",
"time": 60.451,
"timeLeft": "00:00:58.1260000",
"combo": 0,
"comboLeft": 0,
"score": 0,
"currentMaxCombo": 0,
"playerHp": 0,
"ppIfMapEndsNow": 0,
"aimPpIfMapEndsNow": 0,
"speedPpIfMapEndsNow": 0,
"accPpIfMapEndsNow": 0,
"strainPpIfMapEndsNow": 0,
"ppIfRestFced": 0,
"noChokePp": 0,
"simulatedPp": 245.934,
"unstableRate": 0,
"convertedUnstableRate": 0,
"hitErrors": [],
"localTimeISO": "2021-09-03T13:31:00.7605731Z",
"localTime": "15:31:00.7605751",
"sliderBreaks": 0,
"liveStarRating": 5.386,
"isBreakTime": 0,
"currentBpm": 167,
"leaderBoardPlayers": "[]",
"leaderBoardMainPlayer": "{}",
"keyOverlay": "{}",
"chatIsEnabled": 0,
"ingameInterfaceIsEnabled": 0,
"songSelectionRankingType": 1,
"songSelectionTotalScores": 1359,
"songSelectionScores": "[{\"Username\":\"Woey\",\"ModsEnum\":8,\"Mode\":0,\"MaxCombo\":1145,\"Score\":31985508,\"Hit100\":4,\"Hit300\":903,\"Hit50\":0,\"HitGeki\":85,\"HitKatu\":4,\"HitMiss\":2,\"Date\":\"2020-08-28T08:57:26\",\"UserId\":3792472,\"Accuracy\":99.4866132736206,\"Mods\":\"HD\",\"Grade\":4},{\"Username\":\"wooz\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1148,\"Score\":30490040,\"Hit100\":0,\"Hit300\":909,\"Hit50\":0,\"HitGeki\":90,\"HitKatu\":0,\"HitMiss\":0,\"Date\":\"2021-04-15T00:41:55\",\"UserId\":6888206,\"Accuracy\":100.0,\"Mods\":\"NM\",\"Grade\":2},{\"Username\":\"Viveliam\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1148,\"Score\":30378760,\"Hit100\":3,\"Hit300\":906,\"Hit50\":0,\"HitGeki\":87,\"HitKatu\":3,\"HitMiss\":0,\"Date\":\"2021-04-10T16:18:05\",\"UserId\":3506793,\"Accuracy\":99.77997541427612,\"Mods\":\"NM\",\"Grade\":3},{\"Username\":\"oPixay\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1148,\"Score\":30164720,\"Hit100\":18,\"Hit300\":891,\"Hit50\":0,\"HitGeki\":77,\"HitKatu\":13,\"HitMiss\":0,\"Date\":\"2021-08-28T15:20:56\",\"UserId\":12796317,\"Accuracy\":98.67987036705017,\"Mods\":\"NM\",\"Grade\":3},{\"Username\":\"Rhythm blue\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1148,\"Score\":30146180,\"Hit100\":15,\"Hit300\":894,\"Hit50\":0,\"HitGeki\":80,\"HitKatu\":10,\"HitMiss\":0,\"Date\":\"2020-07-31T19:31:17\",\"UserId\":6506107,\"Accuracy\":98.89988899230957,\"Mods\":\"NM\",\"Grade\":3},{\"Username\":\"Sh4rq_\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1133,\"Score\":29331330,\"Hit100\":22,\"Hit300\":885,\"Hit50\":1,\"HitGeki\":78,\"HitKatu\":11,\"HitMiss\":1,\"Date\":\"2021-04-01T15:34:15\",\"UserId\":11684622,\"Accuracy\":98.18481802940369,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"magnatagamer123\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1124,\"Score\":29177290,\"Hit100\":14,\"Hit300\":895,\"Hit50\":0,\"HitGeki\":83,\"HitKatu\":7,\"HitMiss\":0,\"Date\":\"2021-06-06T15:14:53\",\"UserId\":7587763,\"Accuracy\":98.97323250770569,\"Mods\":\"NM\",\"Grade\":3},{\"Username\":\"_wonderer\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1126,\"Score\":29151630,\"Hit100\":21,\"Hit300\":888,\"Hit50\":0,\"HitGeki\":74,\"HitKatu\":16,\"HitMiss\":0,\"Date\":\"2021-07-11T17:41:08\",\"UserId\":8215374,\"Accuracy\":98.4598457813263,\"Mods\":\"NM\",\"Grade\":3},{\"Username\":\"Arge\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1130,\"Score\":29140610,\"Hit100\":22,\"Hit300\":886,\"Hit50\":0,\"HitGeki\":76,\"HitKatu\":13,\"HitMiss\":1,\"Date\":\"2020-07-16T20:59:27\",\"UserId\":11215030,\"Accuracy\":98.27649593353271,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"_Shield\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1122,\"Score\":29124610,\"Hit100\":10,\"Hit300\":899,\"Hit50\":0,\"HitGeki\":83,\"HitKatu\":7,\"HitMiss\":0,\"Date\":\"2020-07-03T05:20:07\",\"UserId\":1860489,\"Accuracy\":99.2665946483612,\"Mods\":\"NM\",\"Grade\":3},{\"Username\":\"itay\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1114,\"Score\":28894150,\"Hit100\":19,\"Hit300\":886,\"Hit50\":3,\"HitGeki\":79,\"HitKatu\":8,\"HitMiss\":1,\"Date\":\"2020-07-15T04:23:05\",\"UserId\":10701418,\"Accuracy\":98.2214868068695,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"BoshyMan741\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1106,\"Score\":28579810,\"Hit100\":12,\"Hit300\":894,\"Hit50\":0,\"HitGeki\":81,\"HitKatu\":8,\"HitMiss\":3,\"Date\":\"2021-01-22T06:04:07\",\"UserId\":4830687,\"Accuracy\":98.78987669944763,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Ceja\",\"ModsEnum\":8,\"Mode\":0,\"MaxCombo\":1067,\"Score\":28345584,\"Hit100\":15,\"Hit300\":892,\"Hit50\":1,\"HitGeki\":79,\"HitKatu\":9,\"HitMiss\":1,\"Date\":\"2021-02-10T01:32:48\",\"UserId\":4185921,\"Accuracy\":98.69820475578308,\"Mods\":\"HD\",\"Grade\":4},{\"Username\":\"Arnold576\",\"ModsEnum\":8,\"Mode\":0,\"MaxCombo\":1055,\"Score\":27756541,\"Hit100\":15,\"Hit300\":893,\"Hit50\":0,\"HitGeki\":80,\"HitKatu\":9,\"HitMiss\":1,\"Date\":\"2021-05-15T15:47:54\",\"UserId\":11967146,\"Accuracy\":98.78987669944763,\"Mods\":\"HD\",\"Grade\":4},{\"Username\":\"rarebostonian\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1085,\"Score\":27638040,\"Hit100\":10,\"Hit300\":893,\"Hit50\":0,\"HitGeki\":83,\"HitKatu\":6,\"HitMiss\":6,\"Date\":\"2021-08-16T19:20:02\",\"UserId\":8097065,\"Accuracy\":98.60652685165405,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"CosmicWolf\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1079,\"Score\":26916090,\"Hit100\":28,\"Hit300\":876,\"Hit50\":0,\"HitGeki\":74,\"HitKatu\":14,\"HitMiss\":5,\"Date\":\"2021-04-08T16:27:53\",\"UserId\":8352298,\"Accuracy\":97.39640355110168,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Dsan\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1068,\"Score\":26901030,\"Hit100\":3,\"Hit300\":900,\"Hit50\":0,\"HitGeki\":86,\"HitKatu\":2,\"HitMiss\":6,\"Date\":\"2021-03-07T08:08:48\",\"UserId\":1266166,\"Accuracy\":99.11991357803345,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Ritseh\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1067,\"Score\":26849940,\"Hit100\":14,\"Hit300\":893,\"Hit50\":0,\"HitGeki\":81,\"HitKatu\":7,\"HitMiss\":2,\"Date\":\"2020-12-30T00:09:46\",\"UserId\":4585205,\"Accuracy\":98.75320792198181,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"blejd\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1067,\"Score\":26774630,\"Hit100\":8,\"Hit300\":894,\"Hit50\":0,\"HitGeki\":80,\"HitKatu\":6,\"HitMiss\":7,\"Date\":\"2020-07-03T17:23:50\",\"UserId\":4033022,\"Accuracy\":98.64319562911987,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Ootsuha\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1066,\"Score\":26646990,\"Hit100\":19,\"Hit300\":886,\"Hit50\":0,\"HitGeki\":78,\"HitKatu\":10,\"HitMiss\":4,\"Date\":\"2020-07-02T23:47:04\",\"UserId\":10499827,\"Accuracy\":98.16648364067078,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"temka na\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1066,\"Score\":26493710,\"Hit100\":17,\"Hit300\":890,\"Hit50\":1,\"HitGeki\":80,\"HitKatu\":8,\"HitMiss\":1,\"Date\":\"2020-07-03T08:22:53\",\"UserId\":10504596,\"Accuracy\":98.55152368545532,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Suprawn\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1066,\"Score\":26304530,\"Hit100\":32,\"Hit300\":872,\"Hit50\":0,\"HitGeki\":75,\"HitKatu\":12,\"HitMiss\":5,\"Date\":\"2021-04-09T17:14:22\",\"UserId\":9723388,\"Accuracy\":97.10304141044617,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Voss\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1047,\"Score\":26188300,\"Hit100\":12,\"Hit300\":896,\"Hit50\":0,\"HitGeki\":81,\"HitKatu\":8,\"HitMiss\":1,\"Date\":\"2021-01-18T15:30:34\",\"UserId\":7657761,\"Accuracy\":99.00990128517151,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Pancho\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1044,\"Score\":26071610,\"Hit100\":7,\"Hit300\":900,\"Hit50\":0,\"HitGeki\":88,\"HitKatu\":0,\"HitMiss\":2,\"Date\":\"2021-08-08T01:51:40\",\"UserId\":11305398,\"Accuracy\":99.2665946483612,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"PFFFFFFFFFFFFFT\",\"ModsEnum\":8,\"Mode\":0,\"MaxCombo\":1012,\"Score\":25807394,\"Hit100\":28,\"Hit300\":870,\"Hit50\":4,\"HitGeki\":72,\"HitKatu\":13,\"HitMiss\":7,\"Date\":\"2021-04-29T08:09:01\",\"UserId\":10683628,\"Accuracy\":96.80967926979065,\"Mods\":\"HD\",\"Grade\":4},{\"Username\":\"Chef\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1033,\"Score\":25048730,\"Hit100\":48,\"Hit300\":861,\"Hit50\":0,\"HitGeki\":71,\"HitKatu\":19,\"HitMiss\":0,\"Date\":\"2021-01-22T05:42:36\",\"UserId\":12736534,\"Accuracy\":96.47964835166931,\"Mods\":\"NM\",\"Grade\":3},{\"Username\":\"bze\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1024,\"Score\":24832270,\"Hit100\":18,\"Hit300\":888,\"Hit50\":0,\"HitGeki\":77,\"HitKatu\":11,\"HitMiss\":3,\"Date\":\"2021-01-07T22:55:46\",\"UserId\":4095562,\"Accuracy\":98.34983348846436,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Nowitskey\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1030,\"Score\":24720990,\"Hit100\":47,\"Hit300\":856,\"Hit50\":0,\"HitGeki\":67,\"HitKatu\":21,\"HitMiss\":6,\"Date\":\"2021-01-11T20:54:19\",\"UserId\":4375125,\"Accuracy\":95.89292407035828,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Orbi\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1008,\"Score\":24361270,\"Hit100\":22,\"Hit300\":885,\"Hit50\":0,\"HitGeki\":75,\"HitKatu\":13,\"HitMiss\":2,\"Date\":\"2020-07-21T17:42:48\",\"UserId\":3574151,\"Accuracy\":98.16648364067078,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Fuma\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1008,\"Score\":24216470,\"Hit100\":36,\"Hit300\":873,\"Hit50\":0,\"HitGeki\":74,\"HitKatu\":16,\"HitMiss\":0,\"Date\":\"2021-09-02T17:07:17\",\"UserId\":1501956,\"Accuracy\":97.35973477363586,\"Mods\":\"NM\",\"Grade\":3},{\"Username\":\"-forestguy-\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1005,\"Score\":23863930,\"Hit100\":36,\"Hit300\":867,\"Hit50\":0,\"HitGeki\":69,\"HitKatu\":17,\"HitMiss\":6,\"Date\":\"2021-01-01T10:40:12\",\"UserId\":9588826,\"Accuracy\":96.69967293739319,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"NovatoKing\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":1005,\"Score\":23699080,\"Hit100\":44,\"Hit300\":859,\"Hit50\":0,\"HitGeki\":66,\"HitKatu\":20,\"HitMiss\":6,\"Date\":\"2020-09-05T16:51:35\",\"UserId\":9316213,\"Accuracy\":96.11294269561768,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Musket\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":875,\"Score\":17894400,\"Hit100\":22,\"Hit300\":880,\"Hit50\":2,\"HitGeki\":77,\"HitKatu\":8,\"HitMiss\":5,\"Date\":\"2020-08-29T02:15:09\",\"UserId\":6124459,\"Accuracy\":97.65309691429138,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Dolter\",\"ModsEnum\":8,\"Mode\":0,\"MaxCombo\":677,\"Score\":16713743,\"Hit100\":10,\"Hit300\":898,\"Hit50\":0,\"HitGeki\":83,\"HitKatu\":6,\"HitMiss\":1,\"Date\":\"2021-04-06T10:33:06\",\"UserId\":6920104,\"Accuracy\":99.15658235549927,\"Mods\":\"HD\",\"Grade\":4},{\"Username\":\"im_a_burger_fox\",\"ModsEnum\":8,\"Mode\":0,\"MaxCombo\":587,\"Score\":16245653,\"Hit100\":4,\"Hit300\":903,\"Hit50\":0,\"HitGeki\":87,\"HitKatu\":2,\"HitMiss\":2,\"Date\":\"2020-09-07T13:55:55\",\"UserId\":5791401,\"Accuracy\":99.4866132736206,\"Mods\":\"HD\",\"Grade\":4},{\"Username\":\"Spinesnight\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":590,\"Score\":15295920,\"Hit100\":24,\"Hit300\":885,\"Hit50\":0,\"HitGeki\":74,\"HitKatu\":16,\"HitMiss\":0,\"Date\":\"2020-07-04T15:56:44\",\"UserId\":4519494,\"Accuracy\":98.23982119560242,\"Mods\":\"NM\",\"Grade\":3},{\"Username\":\"Reedkatt\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":618,\"Score\":15266810,\"Hit100\":20,\"Hit300\":888,\"Hit50\":0,\"HitGeki\":76,\"HitKatu\":13,\"HitMiss\":1,\"Date\":\"2021-04-17T16:58:08\",\"UserId\":8335950,\"Accuracy\":98.42317700386047,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Rebo\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":581,\"Score\":14948090,\"Hit100\":12,\"Hit300\":895,\"Hit50\":0,\"HitGeki\":81,\"HitKatu\":7,\"HitMiss\":2,\"Date\":\"2021-02-14T04:14:07\",\"UserId\":6942259,\"Accuracy\":98.89988899230957,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Suorik\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":587,\"Score\":14825140,\"Hit100\":39,\"Hit300\":869,\"Hit50\":0,\"HitGeki\":72,\"HitKatu\":17,\"HitMiss\":1,\"Date\":\"2020-12-29T18:08:03\",\"UserId\":13199087,\"Accuracy\":97.02970385551453,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"GermanLetsPlay\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":552,\"Score\":14413580,\"Hit100\":16,\"Hit300\":888,\"Hit50\":0,\"HitGeki\":80,\"HitKatu\":9,\"HitMiss\":5,\"Date\":\"2020-08-18T14:46:03\",\"UserId\":11495128,\"Accuracy\":98.27649593353271,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"HENKSELI\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":652,\"Score\":14398880,\"Hit100\":24,\"Hit300\":882,\"Hit50\":0,\"HitGeki\":74,\"HitKatu\":14,\"HitMiss\":3,\"Date\":\"2020-07-05T17:50:23\",\"UserId\":7005392,\"Accuracy\":97.90979027748108,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"BobbyZlich\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":659,\"Score\":14371610,\"Hit100\":32,\"Hit300\":871,\"Hit50\":2,\"HitGeki\":71,\"HitKatu\":15,\"HitMiss\":4,\"Date\":\"2021-07-19T04:30:03\",\"UserId\":6779549,\"Accuracy\":97.02970385551453,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Fixr\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":554,\"Score\":14323770,\"Hit100\":31,\"Hit300\":877,\"Hit50\":0,\"HitGeki\":70,\"HitKatu\":19,\"HitMiss\":1,\"Date\":\"2020-07-12T18:28:04\",\"UserId\":2762603,\"Accuracy\":97.61642813682556,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Sustain\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":665,\"Score\":14205840,\"Hit100\":41,\"Hit300\":863,\"Hit50\":0,\"HitGeki\":70,\"HitKatu\":16,\"HitMiss\":5,\"Date\":\"2021-08-03T12:01:52\",\"UserId\":1460342,\"Accuracy\":96.44297957420349,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"ALTERNATOR32\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":667,\"Score\":14125660,\"Hit100\":25,\"Hit300\":877,\"Hit50\":1,\"HitGeki\":70,\"HitKatu\":16,\"HitMiss\":6,\"Date\":\"2021-08-27T06:16:18\",\"UserId\":3895932,\"Accuracy\":97.41474390029907,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Njulsen\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":662,\"Score\":14035030,\"Hit100\":25,\"Hit300\":881,\"Hit50\":0,\"HitGeki\":69,\"HitKatu\":18,\"HitMiss\":3,\"Date\":\"2021-02-01T20:07:41\",\"UserId\":10773960,\"Accuracy\":97.83645272254944,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Jusstain-\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":659,\"Score\":13838080,\"Hit100\":43,\"Hit300\":857,\"Hit50\":2,\"HitGeki\":72,\"HitKatu\":14,\"HitMiss\":7,\"Date\":\"2021-02-19T20:22:19\",\"UserId\":13435594,\"Accuracy\":95.89292407035828,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"Felrion\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":581,\"Score\":13837220,\"Hit100\":12,\"Hit300\":892,\"Hit50\":0,\"HitGeki\":82,\"HitKatu\":6,\"HitMiss\":5,\"Date\":\"2020-11-20T16:46:56\",\"UserId\":3673083,\"Accuracy\":98.56985807418823,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"EzChock\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":565,\"Score\":13832930,\"Hit100\":15,\"Hit300\":891,\"Hit50\":0,\"HitGeki\":78,\"HitKatu\":9,\"HitMiss\":3,\"Date\":\"2020-07-03T03:17:22\",\"UserId\":9276293,\"Accuracy\":98.56985807418823,\"Mods\":\"NM\",\"Grade\":4},{\"Username\":\"httd\",\"ModsEnum\":8,\"Mode\":0,\"MaxCombo\":585,\"Score\":13799630,\"Hit100\":41,\"Hit300\":864,\"Hit50\":0,\"HitGeki\":67,\"HitKatu\":20,\"HitMiss\":4,\"Date\":\"2020-11-16T16:10:10\",\"UserId\":11919665,\"Accuracy\":96.55298590660095,\"Mods\":\"HD\",\"Grade\":4}]",
"songSelectionMainPlayerScore": "{\"Username\":\"Piotrekol\",\"ModsEnum\":0,\"Mode\":0,\"MaxCombo\":319,\"Score\":4420210,\"Hit100\":89,\"Hit300\":781,\"Hit50\":9,\"HitGeki\":46,\"HitKatu\":31,\"HitMiss\":30,\"Date\":\"0001-01-01T00:00:00\",\"UserId\":304520,\"Accuracy\":89.3472671508789,\"Mods\":\"NM\",\"Grade\":5}",
"plays": 0,
"retries": 0,
"osuFileLocation": "E:\\Gry\\osu!\\Songs\\504770 Shiron - CODE -CRiMSON-\\Shiron - CODE -CRiMSON- (Mijn Aim Zuigt) [EXHAUST].osu",
"titleRoman": "CODE -CRiMSON-",
"artistRoman": "Shiron",
"titleUnicode": "CODE -CRiMSON-",
"artistUnicode": "Shiron",
"mapArtistTitle": "Shiron - CODE -CRiMSON-",
"mapArtistTitleUnicode": "Shiron - CODE -CRiMSON-",
"mapDiff": "[EXHAUST]",
"creator": "Mijn Aim Zuigt",
"diffName": "EXHAUST",
"mp3Name": "audio.mp3",
"md5": "06a93b296b670505882488f7e1b2769c",
"osuFileName": "Shiron - CODE -CRiMSON- (Mijn Aim Zuigt) [EXHAUST].osu",
"maxBpm": 167,
"minBpm": 167,
"bpm": "167",
"mainBpm": 167,
"tags": "spaced streams schranz sdvx technical POMPEN Damnjelly",
"circles": 712,
"sliders": 195,
"spinners": 2,
"ar": 9.6,
"cs": 5,
"hp": 6,
"od": 9,
"sv": 1.4,
"starsNomod": 6.708969326688815,
"drainingtime": 117844,
"totaltime": 118577,
"previewtime": 49595,
"dl": "http://osu.ppy.sh/b/1765848",
"threadid": 0,
"sl": 0.7,
"mode": "0",
"source": "SOUND VOLTEX II -infinite infection-",
"dir": "504770 Shiron - CODE -CRiMSON-",
"lb": "\r\n",
"gameMode": "Osu",
"maxCombo": 1148,
"mods": "NM",
"modsEnum": 0,
"mAR": 9.6,
"mCS": 5,
"mOD": 9,
"mHP": 6,
"mStars": 6.708969326688815,
"mBpm": "167",
"mMaxBpm": 167,
"mMinBpm": 167,
"mMainBpm": 167
}
backgroundImage
Current map background image
- Base url with no parameters returns map image file as-is without any processing.
- setting
width
orheight
query parameters ensures that at least one of these will be matched while preserving original image aspect ratio. check it out- in addition, setting
crop=true
disregards image aspect ratio and returns cropped image with specified dimensions, resizing it beforehand if necessary. check it out
- in addition, setting
- Set
cache=true
and SC will set the Cache-Control response header to instruct the browser to cache background images. When images are repeatedly loaded, it will save a lot of loading time.cache usage
When using caching, it is necessary to add some query parameters to distinguish requests. If no other parameters are added, it will result in your browser always reusing the background image of the first loaded map. For example, you can use Id of the current map to create unique urls:
/backgroundImage?cache=true&mapId=123456
Songs
View into user osu! Songs folder
- Use backgroundImage endpoint for getting current map background instead of navigating to it here.
- This is provided mainly for cases where there is need for additional .osu file processing.
dev note
I would argue this sort of thing should end up as new StreamCompanion plugin or as addition to existing one.
Skins
View into user osu! Skins folder
- Combine this with
skin
token value to get access to skin assets user is currently using.
overlayList
List of available overlays (folder paths)
Mainly for use on web overlay index page. Folder is considered an overlay if it is contained somewhere in Files\Web\overlays
and it has index.html
file.
settings
All StreamCompanion settings