todo updates
This commit is contained in:
209
config.json
209
config.json
@@ -54,18 +54,19 @@
|
|||||||
],
|
],
|
||||||
"defaultPlaylist": "room-grind"
|
"defaultPlaylist": "room-grind"
|
||||||
},
|
},
|
||||||
"initialQueueSize": 3,
|
|
||||||
"defaultSceneName": "fgfm",
|
"defaultSceneName": "fgfm",
|
||||||
"commercialSceneName": "commercial",
|
"commercialSceneName": "commercial",
|
||||||
"videoPollSize": 5,
|
|
||||||
"currentActivitySceneItemName": "now-showing-txt",
|
"currentActivitySceneItemName": "now-showing-txt",
|
||||||
"commercialInterval": 3600,
|
"initialQueueSize": 3,
|
||||||
"auwChance": 25,
|
|
||||||
"recentlyPlayedMemory": 5,
|
"recentlyPlayedMemory": 5,
|
||||||
"roomGrindChance": 25,
|
"roomGrindChance": 25,
|
||||||
"roomGrindPlaytime": 1800,
|
"roomGrindPlaytime": 1800,
|
||||||
"defaultSRVolume": 75,
|
"videoPollSize": 5,
|
||||||
|
"videoPollIntervalMinutes": 15,
|
||||||
"commercialsEnabled": false,
|
"commercialsEnabled": false,
|
||||||
|
"commercialInterval": 3600,
|
||||||
|
"auwChance": 25,
|
||||||
|
"defaultSRVolume": 75,
|
||||||
"vods": [
|
"vods": [
|
||||||
{
|
{
|
||||||
"id": "ot-seg-escape",
|
"id": "ot-seg-escape",
|
||||||
@@ -80,7 +81,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 352
|
"length": 352,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "ot-seg-eastern",
|
"id": "ot-seg-eastern",
|
||||||
@@ -95,7 +97,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 277
|
"length": 277,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "ot-seg-desert",
|
"id": "ot-seg-desert",
|
||||||
@@ -110,7 +113,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 345
|
"length": 345,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "ot-seg-hera",
|
"id": "ot-seg-hera",
|
||||||
@@ -125,7 +129,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 299
|
"length": 299,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "ot-seg-atower",
|
"id": "ot-seg-atower",
|
||||||
@@ -140,7 +145,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 352
|
"length": 352,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "ot-seg-pod",
|
"id": "ot-seg-pod",
|
||||||
@@ -155,7 +161,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 309
|
"length": 309,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "ot-seg-thieves",
|
"id": "ot-seg-thieves",
|
||||||
@@ -170,7 +177,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 377
|
"length": 377,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "ot-seg-skull",
|
"id": "ot-seg-skull",
|
||||||
@@ -185,7 +193,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 267
|
"length": 267,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "ot-seg-ice",
|
"id": "ot-seg-ice",
|
||||||
@@ -200,7 +209,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 318
|
"length": 318,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "ot-seg-swamp",
|
"id": "ot-seg-swamp",
|
||||||
@@ -215,7 +225,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 345
|
"length": 345,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "ot-seg-mire",
|
"id": "ot-seg-mire",
|
||||||
@@ -230,7 +241,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 365
|
"length": 365,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "ot-seg-trock",
|
"id": "ot-seg-trock",
|
||||||
@@ -245,7 +257,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 361
|
"length": 361,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "ot-seg-gtower",
|
"id": "ot-seg-gtower",
|
||||||
@@ -260,7 +273,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 396
|
"length": 396,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "ot-seg-ganon",
|
"id": "ot-seg-ganon",
|
||||||
@@ -275,7 +289,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 108
|
"length": 108,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "st-seg-escape",
|
"id": "st-seg-escape",
|
||||||
@@ -290,7 +305,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 354
|
"length": 354,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "st-seg-eastern",
|
"id": "st-seg-eastern",
|
||||||
@@ -305,7 +321,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 281
|
"length": 281,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "st-seg-desert",
|
"id": "st-seg-desert",
|
||||||
@@ -320,7 +337,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 347
|
"length": 347,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "st-seg-hera",
|
"id": "st-seg-hera",
|
||||||
@@ -335,7 +353,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 303
|
"length": 303,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "st-seg-atower",
|
"id": "st-seg-atower",
|
||||||
@@ -350,7 +369,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 354
|
"length": 354,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "st-seg-pod",
|
"id": "st-seg-pod",
|
||||||
@@ -365,7 +385,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 310
|
"length": 310,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "st-seg-thieves",
|
"id": "st-seg-thieves",
|
||||||
@@ -380,7 +401,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 379
|
"length": 379,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "st-seg-skull",
|
"id": "st-seg-skull",
|
||||||
@@ -395,7 +417,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 270
|
"length": 270,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "st-seg-ice",
|
"id": "st-seg-ice",
|
||||||
@@ -410,7 +433,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 321
|
"length": 321,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "st-seg-swamp",
|
"id": "st-seg-swamp",
|
||||||
@@ -425,7 +449,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 351
|
"length": 351,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "st-seg-mire",
|
"id": "st-seg-mire",
|
||||||
@@ -440,7 +465,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 370
|
"length": 370,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "st-seg-trock",
|
"id": "st-seg-trock",
|
||||||
@@ -455,7 +481,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 364
|
"length": 364,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "st-seg-gtower",
|
"id": "st-seg-gtower",
|
||||||
@@ -470,7 +497,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 408
|
"length": 408,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "nmg-gold-escape",
|
"id": "nmg-gold-escape",
|
||||||
@@ -485,7 +513,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 360
|
"length": 360,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "nmg-gold-eastern",
|
"id": "nmg-gold-eastern",
|
||||||
@@ -500,7 +529,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 302
|
"length": 302,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "nmg-gold-desert",
|
"id": "nmg-gold-desert",
|
||||||
@@ -515,7 +545,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 374
|
"length": 374,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "nmg-gold-hera",
|
"id": "nmg-gold-hera",
|
||||||
@@ -530,7 +561,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 332
|
"length": 332,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "nmg-gold-atower",
|
"id": "nmg-gold-atower",
|
||||||
@@ -545,7 +577,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 314
|
"length": 314,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "nmg-gold-pod",
|
"id": "nmg-gold-pod",
|
||||||
@@ -560,7 +593,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 376
|
"length": 376,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "nmg-gold-thieves",
|
"id": "nmg-gold-thieves",
|
||||||
@@ -575,7 +609,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 432
|
"length": 432,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "nmg-gold-skull",
|
"id": "nmg-gold-skull",
|
||||||
@@ -590,7 +625,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 328
|
"length": 328,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "nmg-gold-ice",
|
"id": "nmg-gold-ice",
|
||||||
@@ -605,7 +641,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 379
|
"length": 379,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "nmg-gold-swamp",
|
"id": "nmg-gold-swamp",
|
||||||
@@ -620,7 +657,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 418
|
"length": 418,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "nmg-gold-mire",
|
"id": "nmg-gold-mire",
|
||||||
@@ -635,7 +673,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 432
|
"length": 432,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "nmg-gold-trock",
|
"id": "nmg-gold-trock",
|
||||||
@@ -650,7 +689,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 434
|
"length": 434,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "nmg-gold-gtower",
|
"id": "nmg-gold-gtower",
|
||||||
@@ -665,7 +705,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 433
|
"length": 433,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "nmg-gold-ganon",
|
"id": "nmg-gold-ganon",
|
||||||
@@ -680,7 +721,8 @@
|
|||||||
"scale.x": 960
|
"scale.x": 960
|
||||||
},
|
},
|
||||||
"sceneItem": "4x3ph",
|
"sceneItem": "4x3ph",
|
||||||
"length": 117
|
"length": 117,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "pb-100-ahp",
|
"id": "pb-100-ahp",
|
||||||
@@ -695,7 +737,8 @@
|
|||||||
"scale.x": 1280
|
"scale.x": 1280
|
||||||
},
|
},
|
||||||
"sceneItem": "16x9ph",
|
"sceneItem": "16x9ph",
|
||||||
"length": 4786
|
"length": 4786,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "pb-ab",
|
"id": "pb-ab",
|
||||||
@@ -710,7 +753,8 @@
|
|||||||
"scale.x": 1280
|
"scale.x": 1280
|
||||||
},
|
},
|
||||||
"sceneItem": "16x9ph",
|
"sceneItem": "16x9ph",
|
||||||
"length": 4200
|
"length": 4200,
|
||||||
|
"includeInShuffle": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "pb-ad",
|
"id": "pb-ad",
|
||||||
@@ -725,7 +769,8 @@
|
|||||||
"scale.x": 1280
|
"scale.x": 1280
|
||||||
},
|
},
|
||||||
"sceneItem": "16x9ph",
|
"sceneItem": "16x9ph",
|
||||||
"length": 4555
|
"length": 4555,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "pb-any-nmg",
|
"id": "pb-any-nmg",
|
||||||
@@ -740,7 +785,8 @@
|
|||||||
"scale.x": 1280
|
"scale.x": 1280
|
||||||
},
|
},
|
||||||
"sceneItem": "16x9ph",
|
"sceneItem": "16x9ph",
|
||||||
"length": 5190
|
"length": 5190,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "pb-any-no-eg",
|
"id": "pb-any-no-eg",
|
||||||
@@ -755,7 +801,8 @@
|
|||||||
"scale.x": 1280
|
"scale.x": 1280
|
||||||
},
|
},
|
||||||
"sceneItem": "16x9ph",
|
"sceneItem": "16x9ph",
|
||||||
"length": 1833
|
"length": 1833,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "pb-master-sword",
|
"id": "pb-master-sword",
|
||||||
@@ -770,7 +817,8 @@
|
|||||||
"scale.x": 1280
|
"scale.x": 1280
|
||||||
},
|
},
|
||||||
"sceneItem": "16x9ph",
|
"sceneItem": "16x9ph",
|
||||||
"length": 1409
|
"length": 1409,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "pb-ms",
|
"id": "pb-ms",
|
||||||
@@ -785,7 +833,8 @@
|
|||||||
"scale.x": 1280
|
"scale.x": 1280
|
||||||
},
|
},
|
||||||
"sceneItem": "16x9ph",
|
"sceneItem": "16x9ph",
|
||||||
"length": 3068
|
"length": 3068,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "pb-ms-no-eg",
|
"id": "pb-ms-no-eg",
|
||||||
@@ -800,7 +849,8 @@
|
|||||||
"scale.x": 1280
|
"scale.x": 1280
|
||||||
},
|
},
|
||||||
"sceneItem": "16x9ph",
|
"sceneItem": "16x9ph",
|
||||||
"length": 738
|
"length": 738,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "pb-rbo",
|
"id": "pb-rbo",
|
||||||
@@ -815,7 +865,8 @@
|
|||||||
"scale.x": 1280
|
"scale.x": 1280
|
||||||
},
|
},
|
||||||
"sceneItem": "16x9ph",
|
"sceneItem": "16x9ph",
|
||||||
"length": 4725
|
"length": 4725,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "pb-100-nmg",
|
"id": "pb-100-nmg",
|
||||||
@@ -825,7 +876,8 @@
|
|||||||
"chatName": "100% NMG (PB)",
|
"chatName": "100% NMG (PB)",
|
||||||
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\personal-bests\\100%\\2017-01-31-hundo-14930.mp4",
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\personal-bests\\100%\\2017-01-31-hundo-14930.mp4",
|
||||||
"sceneItem": "legacyph",
|
"sceneItem": "legacyph",
|
||||||
"length": 6598
|
"length": 6598,
|
||||||
|
"includeInShuffle": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "pb-dg",
|
"id": "pb-dg",
|
||||||
@@ -835,7 +887,8 @@
|
|||||||
"chatName": "Defeat Ganon (PB)",
|
"chatName": "Defeat Ganon (PB)",
|
||||||
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\personal-bests\\defeat-ganon\\2017-02-20_12-55-40-defeat-ganon-1341.mp4",
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\personal-bests\\defeat-ganon\\2017-02-20_12-55-40-defeat-ganon-1341.mp4",
|
||||||
"sceneItem": "legacyph",
|
"sceneItem": "legacyph",
|
||||||
"length": 868
|
"length": 868,
|
||||||
|
"includeInShuffle": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"memes": [
|
"memes": [
|
||||||
@@ -844,98 +897,112 @@
|
|||||||
"name": "archery",
|
"name": "archery",
|
||||||
"filePath": "Y:\\media\\videos\\ALttP\\memes\\archery-contest.mp4",
|
"filePath": "Y:\\media\\videos\\ALttP\\memes\\archery-contest.mp4",
|
||||||
"sceneItem": "meme1",
|
"sceneItem": "meme1",
|
||||||
"length": 27
|
"length": 27,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "69blazeit",
|
"id": "69blazeit",
|
||||||
"name": "69blazeit",
|
"name": "69blazeit",
|
||||||
"filePath": "Y:\\media\\videos\\ALttP\\memes\\69BlazeIt.mp4",
|
"filePath": "Y:\\media\\videos\\ALttP\\memes\\69BlazeIt.mp4",
|
||||||
"sceneItem": "meme1",
|
"sceneItem": "meme1",
|
||||||
"length": 92
|
"length": 92,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "rpgfarm",
|
"id": "rpgfarm",
|
||||||
"name": "rpgfarm",
|
"name": "rpgfarm",
|
||||||
"filePath": "Y:\\media\\videos\\ALttP\\memes\\2016-07-24-1424-06-rpg-race-sniped.mp4",
|
"filePath": "Y:\\media\\videos\\ALttP\\memes\\2016-07-24-1424-06-rpg-race-sniped.mp4",
|
||||||
"sceneItem": "meme1",
|
"sceneItem": "meme1",
|
||||||
"length": 144
|
"length": 144,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "emmapeg",
|
"id": "emmapeg",
|
||||||
"name": "emmapeg",
|
"name": "emmapeg",
|
||||||
"filePath": "Y:\\media\\videos\\ALttP\\memes\\emma-pegging.mp4",
|
"filePath": "Y:\\media\\videos\\ALttP\\memes\\emma-pegging.mp4",
|
||||||
"sceneItem": "meme1",
|
"sceneItem": "meme1",
|
||||||
"length": 8
|
"length": 8,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "handy",
|
"id": "handy",
|
||||||
"name": "handy",
|
"name": "handy",
|
||||||
"filePath": "Y:\\media\\videos\\ALttP\\memes\\handy-in-the-mothhole.mp4",
|
"filePath": "Y:\\media\\videos\\ALttP\\memes\\handy-in-the-mothhole.mp4",
|
||||||
"sceneItem": "meme1",
|
"sceneItem": "meme1",
|
||||||
"length": 39
|
"length": 39,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "bodyguard",
|
"id": "bodyguard",
|
||||||
"name": "bodyguard",
|
"name": "bodyguard",
|
||||||
"filePath": "Y:\\media\\videos\\ALttP\\memes\\heroic-popo.mp4",
|
"filePath": "Y:\\media\\videos\\ALttP\\memes\\heroic-popo.mp4",
|
||||||
"sceneItem": "meme1",
|
"sceneItem": "meme1",
|
||||||
"length": 14
|
"length": 14,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "whowillitbe",
|
"id": "whowillitbe",
|
||||||
"name": "whowillitbe",
|
"name": "whowillitbe",
|
||||||
"filePath": "Y:\\media\\videos\\ALttP\\memes\\its-gonna-be-may.mp4",
|
"filePath": "Y:\\media\\videos\\ALttP\\memes\\its-gonna-be-may.mp4",
|
||||||
"sceneItem": "meme1",
|
"sceneItem": "meme1",
|
||||||
"length": 30
|
"length": 30,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "mindblown",
|
"id": "mindblown",
|
||||||
"name": "mindblown",
|
"name": "mindblown",
|
||||||
"filePath": "Y:\\media\\videos\\ALttP\\memes\\mindblowing-and-lifechanging.mp4",
|
"filePath": "Y:\\media\\videos\\ALttP\\memes\\mindblowing-and-lifechanging.mp4",
|
||||||
"sceneItem": "meme1",
|
"sceneItem": "meme1",
|
||||||
"length": 55
|
"length": 55,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "nerd-nookie",
|
"id": "nerd-nookie",
|
||||||
"name": "nerd-nookie",
|
"name": "nerd-nookie",
|
||||||
"filePath": "Y:\\media\\videos\\ALttP\\memes\\nerd-bizkit.mp4",
|
"filePath": "Y:\\media\\videos\\ALttP\\memes\\nerd-bizkit.mp4",
|
||||||
"sceneItem": "meme1",
|
"sceneItem": "meme1",
|
||||||
"length": 27
|
"length": 27,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "curling",
|
"id": "curling",
|
||||||
"name": "curling",
|
"name": "curling",
|
||||||
"filePath": "Y:\\media\\videos\\ALttP\\curling-bored-janitors.mp4",
|
"filePath": "Y:\\media\\videos\\ALttP\\curling-bored-janitors.mp4",
|
||||||
"sceneItem": "meme1",
|
"sceneItem": "meme1",
|
||||||
"length": 16
|
"length": 16,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "airplane",
|
"id": "airplane",
|
||||||
"name": "airplane",
|
"name": "airplane",
|
||||||
"filePath": "Y:\\media\\videos\\ALttP\\emetaPlane.mp4",
|
"filePath": "Y:\\media\\videos\\ALttP\\emetaPlane.mp4",
|
||||||
"sceneItem": "meme1",
|
"sceneItem": "meme1",
|
||||||
"length": 5
|
"length": 5,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "hard-things",
|
"id": "hard-things",
|
||||||
"name": "hard-things",
|
"name": "hard-things",
|
||||||
"filePath": "Y:\\media\\videos\\ALttP\\questions-about-hard-things.mp4",
|
"filePath": "Y:\\media\\videos\\ALttP\\questions-about-hard-things.mp4",
|
||||||
"sceneItem": "meme1",
|
"sceneItem": "meme1",
|
||||||
"length": 39
|
"length": 39,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "18arrows",
|
"id": "18arrows",
|
||||||
"name": "18arrows",
|
"name": "18arrows",
|
||||||
"filePath": "Y:\\media\\videos\\ALttP\\screevo-18-arrows-fine.mp4",
|
"filePath": "Y:\\media\\videos\\ALttP\\screevo-18-arrows-fine.mp4",
|
||||||
"sceneItem": "meme1",
|
"sceneItem": "meme1",
|
||||||
"length": 41
|
"length": 41,
|
||||||
|
"includeInShuffle": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "quake",
|
"id": "quake",
|
||||||
"name": "quake",
|
"name": "quake",
|
||||||
"filePath": "Y:\\media\\videos\\ALttP\\trock-indoor-quake.mp4",
|
"filePath": "Y:\\media\\videos\\ALttP\\trock-indoor-quake.mp4",
|
||||||
"sceneItem": "meme1",
|
"sceneItem": "meme1",
|
||||||
"length": 17
|
"length": 17,
|
||||||
|
"includeInShuffle": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"debug": false
|
"debug": false
|
||||||
|
|||||||
@@ -16,6 +16,10 @@ TODO:
|
|||||||
☐ Command to stop video rotation / timers (shutdown)
|
☐ Command to stop video rotation / timers (shutdown)
|
||||||
☐ Ability to include/exclude vods from shuffle in config
|
☐ Ability to include/exclude vods from shuffle in config
|
||||||
|
|
||||||
|
Ideas:
|
||||||
|
☐ Web interface for viewers to issue commands -- twitch extension?!?!?!
|
||||||
|
☐ Support songrequests -- play through discord?
|
||||||
|
|
||||||
___________________
|
___________________
|
||||||
Archive:
|
Archive:
|
||||||
✔ show commercials after a video length cap is hit -- show at conclusion of video @done (18-09-19 11:11) @project(TODO)
|
✔ show commercials after a video length cap is hit -- show at conclusion of video @done (18-09-19 11:11) @project(TODO)
|
||||||
|
|||||||
82
fgfm.js
82
fgfm.js
@@ -12,7 +12,6 @@ const util = require('./lib/util');
|
|||||||
let config = require('./config.json');
|
let config = require('./config.json');
|
||||||
const snesGames = require('./conf/snesgames.json');
|
const snesGames = require('./conf/snesgames.json');
|
||||||
const twitchChannel = config.twitch.channels[0].toLowerCase();
|
const twitchChannel = config.twitch.channels[0].toLowerCase();
|
||||||
const randSort = () => { return 0.5 - Math.random() };
|
|
||||||
|
|
||||||
let videoQueue = recentlyPlayed = [];
|
let videoQueue = recentlyPlayed = [];
|
||||||
let currentVideo;
|
let currentVideo;
|
||||||
@@ -40,71 +39,50 @@ obs.on('error', err => {
|
|||||||
console.error(`OBS socket error: ${JSON.stringify(err)}`);
|
console.error(`OBS socket error: ${JSON.stringify(err)}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Initialize Twitch chat
|
// Connect to twitch, set up basic event listeners
|
||||||
const twitchInit = (config, obs) => {
|
const twitchInit = (config, obs) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
console.log('Connecting to Twitch...');
|
console.log('Connecting to Twitch...');
|
||||||
|
let defaultTwitchConfig = {
|
||||||
// Connect to Twitch IRC server with the Bot
|
|
||||||
let twitchChat = new irc.Client(config.twitch.ircServer, config.twitch.username, {
|
|
||||||
password: config.twitch.oauth,
|
|
||||||
autoRejoin: true,
|
autoRejoin: true,
|
||||||
retryCount: 10,
|
retryCount: 10,
|
||||||
channels: config.twitch.channels,
|
channels: config.twitch.channels,
|
||||||
debug: config.debug
|
debug: config.debug
|
||||||
});
|
};
|
||||||
|
|
||||||
// Also connect with an editor account
|
// Connect to Twitch with the bot account
|
||||||
let editorChat = new irc.Client(config.twitch.ircServer, config.twitch.editorLogin.username, {
|
let botChat = new irc.Client(
|
||||||
password: config.twitch.editorLogin.oauth,
|
config.twitch.ircServer,
|
||||||
autoRejoin: true,
|
config.twitch.username,
|
||||||
retryCount: 10,
|
Object.assign({password: config.twitch.oauth}, defaultTwitchConfig)
|
||||||
channels: config.twitch.channels,
|
);
|
||||||
debug: config.debug
|
|
||||||
});
|
|
||||||
|
|
||||||
// Set up event listeners for Twitch
|
// Connect to Twitch with an editor account
|
||||||
twitchChat.addListener('error', message => {
|
let editorChat = new irc.Client(
|
||||||
|
config.twitch.ircServer,
|
||||||
|
config.twitch.editorLogin.username,
|
||||||
|
Object.assign({password: config.twitch.editorLogin.oauth}, defaultTwitchConfig)
|
||||||
|
);
|
||||||
|
|
||||||
|
let twitchErrorHandler = message => {
|
||||||
if (message.command != 'err_unknowncommand') {
|
if (message.command != 'err_unknowncommand') {
|
||||||
console.error('error from Twitch IRC Server: ', message);
|
console.error('Error from Twitch IRC Server: ', message);
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
editorChat.addListener('error', message => {
|
|
||||||
if (message.command != 'err_unknowncommand') {
|
|
||||||
console.error('error from Twitch IRC Server: ', message);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
twitchChat.addListener('registered', message => {
|
// Set up bare minimum event listeners for Twitch
|
||||||
console.log(`Connected to ${message.server}`);
|
botChat.addListener('error', twitchErrorHandler);
|
||||||
});
|
editorChat.addListener('error', twitchErrorHandler);
|
||||||
|
|
||||||
twitchChat.addListener('join', (channel, nick, message) => {
|
resolve({"botChat": botChat, "editorChat": editorChat});
|
||||||
if (nick === config.twitch.username) {
|
|
||||||
console.log(`Joined channel ${channel}`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
twitchChat.addListener('part', (channel, nick, message) => {
|
|
||||||
if (nick === config.twitch.username) {
|
|
||||||
console.log(`Left channel ${channel}`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
twitchChat.addListener('motd', motd => {
|
|
||||||
//console.log(`Received MOTD: ${motd}`);
|
|
||||||
});
|
|
||||||
|
|
||||||
resolve({"botChat": twitchChat, "editorChat": editorChat});
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize Stream automation
|
// Initialize Stream automation
|
||||||
const streamInit = (config, obs, twitch) => {
|
const streamInit = (config, obs, twitch) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
console.log(`Setting up initial video queue...`);
|
videoQueue = config.vods.sort(util.randSort).slice(0, config.initialQueueSize);
|
||||||
videoQueue = config.vods.sort(randSort).slice(0, config.initialQueueSize);
|
console.log(`Initial video queue: ${videoQueue.map((c, i) => `[${i+1}] ${c.chatName}`).join(' | ')}`);
|
||||||
console.log(`Initial queue: ${videoQueue.map((c, i) => `[${i+1}] ${c.chatName}`).join(' | ')}`);
|
|
||||||
|
|
||||||
// Shows a video in the given scene and triggers a callback when it's finished
|
// Shows a video in the given scene and triggers a callback when it's finished
|
||||||
const playVideoInScene = (video, scene, callback) => {
|
const playVideoInScene = (video, scene, callback) => {
|
||||||
@@ -168,7 +146,7 @@ const streamInit = (config, obs, twitch) => {
|
|||||||
nextVideo();
|
nextVideo();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
let commercial = config.memes.sort(randSort)[0];
|
let commercial = config.memes.sort(util.randSort)[0];
|
||||||
console.log(`Showing random meme: ${commercial.name}`);
|
console.log(`Showing random meme: ${commercial.name}`);
|
||||||
|
|
||||||
obs.setCurrentScene({"scene-name": config.commercialSceneName})
|
obs.setCurrentScene({"scene-name": config.commercialSceneName})
|
||||||
@@ -230,7 +208,7 @@ const streamInit = (config, obs, twitch) => {
|
|||||||
let freshVods = config.vods.filter(e => {
|
let freshVods = config.vods.filter(e => {
|
||||||
return !recentlyPlayed.includes(e.id);
|
return !recentlyPlayed.includes(e.id);
|
||||||
});
|
});
|
||||||
currentVideo = freshVods.sort(randSort).slice(0, 1).shift();
|
currentVideo = freshVods.sort(util.randSort).slice(0, 1).shift();
|
||||||
}
|
}
|
||||||
|
|
||||||
showVideo(currentVideo);
|
showVideo(currentVideo);
|
||||||
@@ -383,7 +361,7 @@ const streamInit = (config, obs, twitch) => {
|
|||||||
// memes on-demand
|
// memes on-demand
|
||||||
} else if (commandNoPrefix === 'meme') {
|
} else if (commandNoPrefix === 'meme') {
|
||||||
commercialPlaying = true;
|
commercialPlaying = true;
|
||||||
let commercial = config.memes.sort(randSort)[0];
|
let commercial = config.memes.sort(util.randSort)[0];
|
||||||
obs.setCurrentScene({"scene-name": config.commercialSceneName})
|
obs.setCurrentScene({"scene-name": config.commercialSceneName})
|
||||||
.then(res => {
|
.then(res => {
|
||||||
return playVideoInScene(commercial, config.commercialSceneName, () => {
|
return playVideoInScene(commercial, config.commercialSceneName, () => {
|
||||||
@@ -588,7 +566,7 @@ const streamInit = (config, obs, twitch) => {
|
|||||||
|
|
||||||
// RNGAMES
|
// RNGAMES
|
||||||
} else if (commandNoPrefix === 'rngames') {
|
} else if (commandNoPrefix === 'rngames') {
|
||||||
twitch.botChat.say(to, snesGames.sort(randSort).slice(0, 10).join(' | '));
|
twitch.botChat.say(to, snesGames.sort(util.randSort).slice(0, 10).join(' | '));
|
||||||
}
|
}
|
||||||
////////////////
|
////////////////
|
||||||
}
|
}
|
||||||
@@ -648,7 +626,7 @@ const streamInit = (config, obs, twitch) => {
|
|||||||
let inQueue = videoQueue.findIndex(q => q.id === e.id) !== -1;
|
let inQueue = videoQueue.findIndex(q => q.id === e.id) !== -1;
|
||||||
return !inQueue;
|
return !inQueue;
|
||||||
});
|
});
|
||||||
currentChoices = vodsNotInQueue.sort(randSort).slice(0, config.videoPollSize);
|
currentChoices = vodsNotInQueue.sort(util.randSort).slice(0, config.videoPollSize);
|
||||||
|
|
||||||
// Poll the chat
|
// Poll the chat
|
||||||
let chatChoices = currentChoices.map((c, i) => {
|
let chatChoices = currentChoices.map((c, i) => {
|
||||||
|
|||||||
0
lib/fgfm.js
Executable file
0
lib/fgfm.js
Executable file
@@ -47,3 +47,5 @@ exports.average = function(e) {
|
|||||||
|
|
||||||
return avg;
|
return avg;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
exports.randSort = () => { return 0.5 - Math.random() };
|
||||||
BIN
sfx/okusa.mp3
Executable file
BIN
sfx/okusa.mp3
Executable file
Binary file not shown.
BIN
sfx/tasty.mp3
Executable file
BIN
sfx/tasty.mp3
Executable file
Binary file not shown.
BIN
sfx/watchyourback.mp3
Executable file
BIN
sfx/watchyourback.mp3
Executable file
Binary file not shown.
Reference in New Issue
Block a user