individual video voting
This commit is contained in:
168
config.json
168
config.json
@@ -52,319 +52,375 @@
|
|||||||
},
|
},
|
||||||
"vods": [
|
"vods": [
|
||||||
{
|
{
|
||||||
|
"id": "ottas-seg-escape",
|
||||||
"category": "Optimal TTAS Segment",
|
"category": "Optimal TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "Escape (OTTAS Seg)",
|
"chatName": "Escape (OTTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\Risky\final-versions-timed\01-escape.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\Risky\\final-versions-timed\\01-escape.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "ottas-seg-eastern",
|
||||||
"category": "Optimal TTAS Segment",
|
"category": "Optimal TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "Eastern (OTTAS Seg)",
|
"chatName": "Eastern (OTTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\Risky\final-versions-timed\02-eastern.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\Risky\\final-versions-timed\\02-eastern.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "ottas-seg-desert",
|
||||||
"category": "Optimal TTAS Segment",
|
"category": "Optimal TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "Desert (OTTAS Seg)",
|
"chatName": "Desert (OTTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\Risky\final-versions-timed\03-desert.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\Risky\\final-versions-timed\\03-desert.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "ottas-seg-hera",
|
||||||
"category": "Optimal TTAS Segment",
|
"category": "Optimal TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "Hera (OTTAS Seg)",
|
"chatName": "Hera (OTTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\Risky\final-versions-timed\04-hera.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\Risky\\final-versions-timed\\04-hera.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "ottas-seg-atower",
|
||||||
"category": "Optimal TTAS Segment",
|
"category": "Optimal TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "ATower (OTTAS Seg)",
|
"chatName": "ATower (OTTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\Risky\final-versions-timed\05-atower.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\Risky\\final-versions-timed\\05-atower.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "ottas-seg-pod",
|
||||||
"category": "Optimal TTAS Segment",
|
"category": "Optimal TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "PoD (OTTAS Seg)",
|
"chatName": "PoD (OTTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\Risky\final-versions-timed\06-pod.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\Risky\\final-versions-timed\\06-pod.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "ottas-seg-thieves",
|
||||||
"category": "Optimal TTAS Segment",
|
"category": "Optimal TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "Thieves (OTTAS Seg)",
|
"chatName": "Thieves (OTTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\Risky\final-versions-timed\07-thieves.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\Risky\\final-versions-timed\\07-thieves.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "ottas-seg-skull",
|
||||||
"category": "Optimal TTAS Segment",
|
"category": "Optimal TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "Skull (OTTAS Seg)",
|
"chatName": "Skull (OTTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\Risky\final-versions-timed\08-skull.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\Risky\\final-versions-timed\\08-skull.mp4"
|
||||||
},{
|
},
|
||||||
|
{
|
||||||
|
"id": "ottas-seg-ice",
|
||||||
"category": "Optimal TTAS Segment",
|
"category": "Optimal TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "Ice (OTTAS Seg)",
|
"chatName": "Ice (OTTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\Risky\final-versions-timed\09-ice.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\Risky\\final-versions-timed\\09-ice.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "ottas-seg-swamp",
|
||||||
"category": "Optimal TTAS Segment",
|
"category": "Optimal TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "Swamp (OTTAS Seg)",
|
"chatName": "Swamp (OTTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\Risky\final-versions-timed\10-swamp.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\Risky\\final-versions-timed\\10-swamp.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "ottas-seg-mire",
|
||||||
"category": "Optimal TTAS Segment",
|
"category": "Optimal TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "Mire (OTTAS Seg)",
|
"chatName": "Mire (OTTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\Risky\final-versions-timed\11-mire.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\Risky\\final-versions-timed\\11-mire.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "ottas-seg-trock",
|
||||||
"category": "Optimal TTAS Segment",
|
"category": "Optimal TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "TRock (OTTAS Seg)",
|
"chatName": "TRock (OTTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\Risky\final-versions-timed\12-trock.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\Risky\\final-versions-timed\\12-trock.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "ottas-seg-gtower",
|
||||||
"category": "Optimal TTAS Segment",
|
"category": "Optimal TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "GTower (OTTAS Seg)",
|
"chatName": "GTower (OTTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\Risky\final-versions-timed\13-gtower.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\Risky\\final-versions-timed\\13-gtower.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "ttas-seg-ganon",
|
||||||
"category": "Optimal TTAS Segment",
|
"category": "Optimal TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "Ganon (TTAS Seg)",
|
"chatName": "Ganon (TTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\Risky\final-versions-timed\14-ganon.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\Risky\\final-versions-timed\\14-ganon.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "sttas-seg-escape",
|
||||||
"category": "Safe TTAS Segment",
|
"category": "Safe TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "Escape (STTAS Seg)",
|
"chatName": "Escape (STTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\RTA\final-versions-timed\01-escape.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\RTA\\final-versions-timed\\01-escape.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "sttas-seg-eastern",
|
||||||
"category": "Safe TTAS Segment",
|
"category": "Safe TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "Eastern (STTAS Seg)",
|
"chatName": "Eastern (STTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\RTA\final-versions-timed\02-eastern.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\RTA\\final-versions-timed\\02-eastern.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "sttas-seg-desert",
|
||||||
"category": "Safe TTAS Segment",
|
"category": "Safe TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "Desert (STTAS Seg)",
|
"chatName": "Desert (STTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\RTA\final-versions-timed\03-desert.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\RTA\\final-versions-timed\\03-desert.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "sttas-seg-hera",
|
||||||
"category": "Safe TTAS Segment",
|
"category": "Safe TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "Hera (STTAS Seg)",
|
"chatName": "Hera (STTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\RTA\final-versions-timed\04-hera.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\RTA\\final-versions-timed\\04-hera.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "sttas-seg-atower",
|
||||||
"category": "Safe TTAS Segment",
|
"category": "Safe TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "Agah Tower (STTAS Seg)",
|
"chatName": "Agah Tower (STTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\RTA\final-versions-timed\05-atower.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\RTA\\final-versions-timed\\05-atower.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "sttas-seg-pod",
|
||||||
"category": "Safe TTAS Segment",
|
"category": "Safe TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "PoD (STTAS Seg)",
|
"chatName": "PoD (STTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\RTA\final-versions-timed\06-pod.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\RTA\\final-versions-timed\\06-pod.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "sttas-seg-thieves",
|
||||||
"category": "Safe TTAS Segment",
|
"category": "Safe TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "Thieves (STTAS Seg)",
|
"chatName": "Thieves (STTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\RTA\final-versions-timed\07-thieves.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\RTA\\final-versions-timed\\07-thieves.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "sttas-seg-skull",
|
||||||
"category": "Safe TTAS Segment",
|
"category": "Safe TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "Skull (STTAS Seg)",
|
"chatName": "Skull (STTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\RTA\final-versions-timed\08-skull.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\RTA\\final-versions-timed\\08-skull.mp4"
|
||||||
},{
|
},
|
||||||
|
{
|
||||||
|
"id": "sttas-seg-ice",
|
||||||
"category": "Safe TTAS Segment",
|
"category": "Safe TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "Ice (STTAS Seg)",
|
"chatName": "Ice (STTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\RTA\final-versions-timed\09-ice.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\RTA\\final-versions-timed\\09-ice.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "sttas-seg-swamp",
|
||||||
"category": "Safe TTAS Segment",
|
"category": "Safe TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "Swamp (STTAS Seg)",
|
"chatName": "Swamp (STTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\RTA\final-versions-timed\10-swamp.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\RTA\\final-versions-timed\\10-swamp.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "sttas-seg-mire",
|
||||||
"category": "Safe TTAS Segment",
|
"category": "Safe TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "Mire (STTAS Seg)",
|
"chatName": "Mire (STTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\RTA\final-versions-timed\11-mire.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\RTA\\final-versions-timed\\11-mire.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "sttas-seg-trock",
|
||||||
"category": "Safe TTAS Segment",
|
"category": "Safe TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "TRock (STTAS Seg)",
|
"chatName": "TRock (STTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\RTA\final-versions-timed\12-trock.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\RTA\\final-versions-timed\\12-trock.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "sttas-seg-gtower",
|
||||||
"category": "Safe TTAS Segment",
|
"category": "Safe TTAS Segment",
|
||||||
"label": false,
|
"label": false,
|
||||||
"chatName": "GTower (STTAS Seg)",
|
"chatName": "GTower (STTAS Seg)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\ttas\RTA\final-versions-timed\13-gtower.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\ttas\\RTA\\final-versions-timed\\13-gtower.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "nmg-gold-escape",
|
||||||
"category": "Any% NMG Gold Segment",
|
"category": "Any% NMG Gold Segment",
|
||||||
"label": "Any% NMG Gold Segment: Escape (5:53.2) [2018-02-24]",
|
"label": "Any% NMG Gold Segment: Escape (5:53.2) [2018-02-24]",
|
||||||
"chatName": "Escape (NMG Gold)",
|
"chatName": "Escape (NMG Gold)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\gold-segments\any%-nmg-nsq\720p\timed\01-[553.2]-2018-02-24-escape.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\gold-segments\\any%-nmg-nsq\\720p\\timed\\01-[553.2]-2018-02-24-escape.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "nmg-gold-eastern",
|
||||||
"category": "Any% NMG Gold Segment",
|
"category": "Any% NMG Gold Segment",
|
||||||
"label": "Any% NMG Gold Segment: Eastern (5:00.12) [2018-06-25]",
|
"label": "Any% NMG Gold Segment: Eastern (5:00.12) [2018-06-25]",
|
||||||
"chatName": "Eastern (NMG Gold)",
|
"chatName": "Eastern (NMG Gold)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\gold-segments\any%-nmg-nsq\720p\timed\02-[500.12]-2018-06-25-eastern.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\gold-segments\\any%-nmg-nsq\\720p\\timed\\02-[500.12]-2018-06-25-eastern.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "nmg-gold-desert",
|
||||||
"category": "Any% NMG Gold Segment",
|
"category": "Any% NMG Gold Segment",
|
||||||
"label": "Any% NMG Gold Segment: Desert (6:10.32) [2018-06-02]",
|
"label": "Any% NMG Gold Segment: Desert (6:10.32) [2018-06-02]",
|
||||||
"chatName": "Desert (NMG Gold)",
|
"chatName": "Desert (NMG Gold)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\gold-segments\any%-nmg-nsq\720p\timed\03-[610.32]-2018-06-02-desert.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\gold-segments\\any%-nmg-nsq\\720p\\timed\\03-[610.32]-2018-06-02-desert.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "nmg-gold-hera",
|
||||||
"category": "Any% NMG Gold Segment",
|
"category": "Any% NMG Gold Segment",
|
||||||
"label": "Any% NMG Gold Segment: Hera (5:28.83) [2018-06-01]",
|
"label": "Any% NMG Gold Segment: Hera (5:28.83) [2018-06-01]",
|
||||||
"chatName": "Hera (NMG Gold)",
|
"chatName": "Hera (NMG Gold)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\gold-segments\any%-nmg-nsq\720p\timed\04-[528.83]-2018-06-01-hera.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\gold-segments\\any%-nmg-nsq\\720p\\timed\\04-[528.83]-2018-06-01-hera.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "nmg-gold-atower",
|
||||||
"category": "Any% NMG Gold Segment",
|
"category": "Any% NMG Gold Segment",
|
||||||
"label": "Any% NMG Gold Segment: Agah Tower (5:13.45) [2018-09-07]",
|
"label": "Any% NMG Gold Segment: Agah Tower (5:13.45) [2018-09-07]",
|
||||||
"chatName": "Agah Tower (NMG Gold)",
|
"chatName": "Agah Tower (NMG Gold)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\gold-segments\any%-nmg-nsq\720p\05a-[513.45]-2018-09-07-atower.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\gold-segments\\any%-nmg-nsq\\720p\\05a-[513.45]-2018-09-07-atower.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "nmg-gold-pod",
|
||||||
"category": "Any% NMG Gold Segment",
|
"category": "Any% NMG Gold Segment",
|
||||||
"label": "Any% NMG Gold Segment: Palace of Darkness (6:11.15) [2018-05-27]",
|
"label": "Any% NMG Gold Segment: Palace of Darkness (6:11.15) [2018-05-27]",
|
||||||
"chatName": "PoD (NMG Gold)",
|
"chatName": "PoD (NMG Gold)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\gold-segments\any%-nmg-nsq\720p\timed\06-[611.15]-2018-05-27-pod.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\gold-segments\\any%-nmg-nsq\\720p\\timed\\06-[611.15]-2018-05-27-pod.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "nmg-gold-thieves",
|
||||||
"category": "Any% NMG Gold Segment",
|
"category": "Any% NMG Gold Segment",
|
||||||
"label": "Any% NMG Gold Segment: Thieves Town (7:08.37) [2018-07-01]",
|
"label": "Any% NMG Gold Segment: Thieves Town (7:08.37) [2018-07-01]",
|
||||||
"chatName": "Thieves (NMG Gold)",
|
"chatName": "Thieves (NMG Gold)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\gold-segments\any%-nmg-nsq\720p\timed\07-[708.37]-2018-07-01-thieves.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\gold-segments\\any%-nmg-nsq\\720p\\timed\\07-[708.37]-2018-07-01-thieves.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "nmg-gold-skull",
|
||||||
"category": "Any% NMG Gold Segment",
|
"category": "Any% NMG Gold Segment",
|
||||||
"label": "Any% NMG Gold Segment: Skull Woods (5:24.28) [2018-06-02]",
|
"label": "Any% NMG Gold Segment: Skull Woods (5:24.28) [2018-06-02]",
|
||||||
"chatName": "Skull (NMG Gold)",
|
"chatName": "Skull (NMG Gold)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\gold-segments\any%-nmg-nsq\720p\timed\08-[524.28]-2018-06-02-skull.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\gold-segments\\any%-nmg-nsq\\720p\\timed\\08-[524.28]-2018-06-02-skull.mp4"
|
||||||
},{
|
},
|
||||||
|
{
|
||||||
|
"id": "nmg-gold-ice",
|
||||||
"category": "Any% NMG Gold Segment",
|
"category": "Any% NMG Gold Segment",
|
||||||
"label": "Any% NMG Gold Segment: Ice Palace (6:18.13) [2018-09-08]",
|
"label": "Any% NMG Gold Segment: Ice Palace (6:18.13) [2018-09-08]",
|
||||||
"chatName": "Ice (NMG Gold)",
|
"chatName": "Ice (NMG Gold)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\gold-segments\any%-nmg-nsq\720p\09-[618.13]-2018-09-08-ice.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\gold-segments\\any%-nmg-nsq\\720p\\09-[618.13]-2018-09-08-ice.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "nmg-gold-swamp",
|
||||||
"category": "Any% NMG Gold Segment",
|
"category": "Any% NMG Gold Segment",
|
||||||
"label": "Any% NMG Gold Segment: Swamp Palace (6:51.87) [2018-06-10]",
|
"label": "Any% NMG Gold Segment: Swamp Palace (6:51.87) [2018-06-10]",
|
||||||
"chatName": "Swamp (NMG Gold)",
|
"chatName": "Swamp (NMG Gold)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\gold-segments\any%-nmg-nsq\720p\timed\10-[651.87]-2018-06-10-swamp.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\gold-segments\\any%-nmg-nsq\\720p\\timed\\10-[651.87]-2018-06-10-swamp.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "nmg-gold-mire",
|
||||||
"category": "Any% NMG Gold Segment",
|
"category": "Any% NMG Gold Segment",
|
||||||
"label": "Any% NMG Gold Segment: Misery Mire (7:07.17) [2018-06-10]",
|
"label": "Any% NMG Gold Segment: Misery Mire (7:07.17) [2018-06-10]",
|
||||||
"chatName": "Mire (NMG Gold)",
|
"chatName": "Mire (NMG Gold)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\gold-segments\any%-nmg-nsq\720p\timed\11-[707.17]-2018-06-10-mire.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\gold-segments\\any%-nmg-nsq\\720p\\timed\\11-[707.17]-2018-06-10-mire.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "nmg-gold-trock",
|
||||||
"category": "Any% NMG Gold Segment",
|
"category": "Any% NMG Gold Segment",
|
||||||
"label": "Any% NMG Gold Segment: Turtle Rock (7:07.34) [2018-06-25]",
|
"label": "Any% NMG Gold Segment: Turtle Rock (7:07.34) [2018-06-25]",
|
||||||
"chatName": "TRock (NMG Gold)",
|
"chatName": "TRock (NMG Gold)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\gold-segments\any%-nmg-nsq\720p\timed\12-[707.34]-2018-06-25-trock.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\gold-segments\\any%-nmg-nsq\\720p\\timed\\12-[707.34]-2018-06-25-trock.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "nmg-gold-gtower",
|
||||||
"category": "Any% NMG Gold Segment",
|
"category": "Any% NMG Gold Segment",
|
||||||
"label": "Any% NMG Gold Segment: Ganon's Tower (7:09.85) [2018-08-19]",
|
"label": "Any% NMG Gold Segment: Ganon's Tower (7:09.85) [2018-08-19]",
|
||||||
"chatName": "GTower (NMG Gold)",
|
"chatName": "GTower (NMG Gold)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\gold-segments\any%-nmg-nsq\720p\timed\13-[709.85]-2018-08-19-gtower.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\gold-segments\\any%-nmg-nsq\\720p\\timed\\13-[709.85]-2018-08-19-gtower.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "nmg-gold-ganon",
|
||||||
"category": "Any% NMG Gold Segment",
|
"category": "Any% NMG Gold Segment",
|
||||||
"label": "Any% NMG Gold Segment: Ganon (1:43.06) [2018-05-30]",
|
"label": "Any% NMG Gold Segment: Ganon (1:43.06) [2018-05-30]",
|
||||||
"chatName": "Ganon (NMG Gold)",
|
"chatName": "Ganon (NMG Gold)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\gold-segments\any%-nmg-nsq\720p\timed\14-[143.06]-2018-05-30-ganon.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\gold-segments\\any%-nmg-nsq\\720p\\timed\\14-[143.06]-2018-05-30-ganon.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "pb-100-nmg",
|
||||||
"category": "Personal Best",
|
"category": "Personal Best",
|
||||||
"label": "Personal Best: 100% NMG (1:49:30) [2017-01-31]",
|
"label": "Personal Best: 100% NMG (1:49:30) [2017-01-31]",
|
||||||
"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"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "pb-100-ahp",
|
||||||
"category": "Personal Best",
|
"category": "Personal Best",
|
||||||
"label": "Personal Best: 100% All Heart Pieces (1:19:12) [2017-12-22]",
|
"label": "Personal Best: 100% All Heart Pieces (1:19:12) [2017-12-22]",
|
||||||
"chatName": "100% MG AHP (PB)",
|
"chatName": "100% MG AHP (PB)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\personal-bests\100%-mg-ahp\2017-12-22-100mg-11912.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\personal-bests\\100%-mg-ahp\\2017-12-22-100mg-11912.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "pb-ab",
|
||||||
"category": "Personal Best",
|
"category": "Personal Best",
|
||||||
"label": "Personal Best: All Bosses No EG (1:09:23) [2017-11-20]",
|
"label": "Personal Best: All Bosses No EG (1:09:23) [2017-11-20]",
|
||||||
"chatName": "All Bosses (PB)",
|
"chatName": "All Bosses (PB)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\personal-bests\all-bosses\2017-11-20-ab-10923.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\personal-bests\\all-bosses\\2017-11-20-ab-10923.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "pb-ad",
|
||||||
"category": "Personal Best",
|
"category": "Personal Best",
|
||||||
"label": "Personal Best: All Dungeons No EG/DW/WW (1:14:59) [2017-11-19]",
|
"label": "Personal Best: All Dungeons No EG/DW/WW (1:14:59) [2017-11-19]",
|
||||||
"chatName": "All Dungeons (PB)",
|
"chatName": "All Dungeons (PB)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\personal-bests\all-dungeons\2017-11-19-ad-11459.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\personal-bests\\all-dungeons\\2017-11-19-ad-11459.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "pb-any-nmg",
|
||||||
"category": "Personal Best",
|
"category": "Personal Best",
|
||||||
"label": "Personal Best: Any% NMG No S+Q (1:26:24) [2018-05-27]",
|
"label": "Personal Best: Any% NMG No S+Q (1:26:24) [2018-05-27]",
|
||||||
"chatName": "Any% NMG (PB)",
|
"chatName": "Any% NMG (PB)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\personal-bests\any%-nmg-nsq\2018-05-27-nmg-12624.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\personal-bests\\any%-nmg-nsq\\2018-05-27-nmg-12624.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "pb-any-no-eg",
|
||||||
"category": "Personal Best",
|
"category": "Personal Best",
|
||||||
"label": "Personal Best: Any% No EG (30:28) [2018-09-09]",
|
"label": "Personal Best: Any% No EG (30:28) [2018-09-09]",
|
||||||
"chatName": "Any% No EG (PB)",
|
"chatName": "Any% No EG (PB)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\personal-bests\any%-no-eg\2018-09-09-no-eg-3028.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\personal-bests\\any%-no-eg\\2018-09-09-no-eg-3028.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "pb-dg",
|
||||||
"category": "Personal Best",
|
"category": "Personal Best",
|
||||||
"label": "Personal Best: Defeat Ganon (13:41) [2017-02-20]",
|
"label": "Personal Best: Defeat Ganon (13:41) [2017-02-20]",
|
||||||
"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"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "pb-low-nmg",
|
||||||
"category": "Personal Best",
|
"category": "Personal Best",
|
||||||
"label": "Personal Best: Low% NMG (1:32:48) [2017-05-11]",
|
"label": "Personal Best: Low% NMG (1:32:48) [2017-05-11]",
|
||||||
"chatName": "Low% NMG (PB)",
|
"chatName": "Low% NMG (PB)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\personal-bests\low%-nmg-nsq\2017-05-11 17-01-52-low%-13248.mkv"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\personal-bests\\low%-nmg-nsq\\2017-05-11 17-01-52-low%-13248.mkv"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "pb-master-sword",
|
||||||
"category": "Personal Best",
|
"category": "Personal Best",
|
||||||
"label": "Personal Best: Master Sword NMG (22:23) [2018-08-23]",
|
"label": "Personal Best: Master Sword NMG (22:23) [2018-08-23]",
|
||||||
"chatName": "Master Sword (PB)",
|
"chatName": "Master Sword (PB)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\personal-bests\master-sword\2018-08-23-master-sword-2223.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\personal-bests\\master-sword\\2018-08-23-master-sword-2223.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "pb-ms",
|
||||||
"category": "Personal Best",
|
"category": "Personal Best",
|
||||||
"label": "Personal Best: Mirror Shield NMG (50:32) [2017-06-20]",
|
"label": "Personal Best: Mirror Shield NMG (50:32) [2017-06-20]",
|
||||||
"chatName": "Mirror Shield (PB)",
|
"chatName": "Mirror Shield (PB)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\personal-bests\mirror-shield\2017-06-20-mirror-shield-5032.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\personal-bests\\mirror-shield\\2017-06-20-mirror-shield-5032.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "pb-ms-no-eg",
|
||||||
"category": "Personal Best",
|
"category": "Personal Best",
|
||||||
"label": "Personal Best: Mirror Shield No EG (11:38) [2017-07-02]",
|
"label": "Personal Best: Mirror Shield No EG (11:38) [2017-07-02]",
|
||||||
"chatName": "Mirror Shield No EG (PB)",
|
"chatName": "Mirror Shield No EG (PB)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\personal-bests\mirror-shield-no-eg\2017-07-02-mirror-shield-no-eg-1138.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\personal-bests\\mirror-shield-no-eg\\2017-07-02-mirror-shield-no-eg-1138.mp4"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"id": "pb-rbo",
|
||||||
"category": "Personal Best",
|
"category": "Personal Best",
|
||||||
"label": "Personal Best: Reverse Boss Order (1:18:13) [2017-12-01]",
|
"label": "Personal Best: Reverse Boss Order (1:18:13) [2017-12-01]",
|
||||||
"chatName": "Reverse Boss Order (PB)",
|
"chatName": "Reverse Boss Order (PB)",
|
||||||
"filePath": "Y:\media\videos\ALttP\my-vids\personal-bests\rbo\2017-12-01-rbo-11813.mp4"
|
"filePath": "Y:\\media\\videos\\ALttP\\my-vids\\personal-bests\\rbo\\2017-12-01-rbo-11813.mp4"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"debug": false
|
"debug": false
|
||||||
|
|||||||
151
twitch.js
151
twitch.js
@@ -251,90 +251,93 @@ const twitchInit = (config, obs) => {
|
|||||||
// 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...`);
|
||||||
|
// @TODO: Choose X random vods to start
|
||||||
|
// Shuffle the vods and pick the first X
|
||||||
|
let videoQueue = config.vods.sort( function() { return 0.5 - Math.random() } ).slice(0, 3);
|
||||||
|
console.log(`Initial queue: ${JSON.stringify(videoQueue)}`);
|
||||||
|
// @TODO: Load the first vod into the source, show it, listen to event of it being done, load the next, etc.
|
||||||
|
|
||||||
console.log(`Initializing stream timers...`);
|
console.log(`Initializing stream timers...`);
|
||||||
|
|
||||||
// When: Every 4 hours at 55 past
|
// When: Every 4 hours at 55 past
|
||||||
|
// @TODO: change to a random interval of time!
|
||||||
// What: AUW
|
// What: AUW
|
||||||
let auwJob = schedule.scheduleJob("55 */4 * * *", () => {
|
let auwJob = schedule.scheduleJob("55 */4 * * *", () => {
|
||||||
// AUW
|
// AUW
|
||||||
twitch.editorChat.say(twitchChannel, `${config.twitch.cmdPrefix}auw`);
|
//twitch.editorChat.say(twitchChannel, `${config.twitch.cmdPrefix}auw`);
|
||||||
});
|
});
|
||||||
console.log(`AUW is scheduled to be shown at ${auwJob.nextInvocation()}`);
|
//console.log(`AUW is scheduled to be shown at ${auwJob.nextInvocation()}`);
|
||||||
|
|
||||||
let userVotes = [];
|
let userVotes = [];
|
||||||
let playlistChoices = config.obs.availablePlaylists.map((e, i, a) => {
|
let currentChoices = [];
|
||||||
return `[${i+1}] ${e.chatName}`;
|
let rockTheVote;
|
||||||
});
|
|
||||||
|
let videoVoteJob = schedule.scheduleJob("*/1 * * * *", () => {
|
||||||
// When: Every 2 Hours, on the hour
|
// Tally votes from previous election (if there was one), add the winner to the queue
|
||||||
// What: Change the video playlist
|
let winner;
|
||||||
let changePlaylistJob = schedule.scheduleJob("0 */2 * * *", () => {
|
if (currentChoices.length > 0)
|
||||||
// Base the selection on user votes collected since the last invocation (unless there are 0 votes, then choose randomly)
|
{
|
||||||
let newPlaylist;
|
if (userVotes.length === 0)
|
||||||
if (userVotes.length === 0) {
|
{
|
||||||
// choose a random item other than currentPlaylist from config.obs.availablePlaylists
|
// choose a random element from currentChoices
|
||||||
let choices = config.obs.availablePlaylists.slice(0);
|
winner = util.randElement(currentChoices);
|
||||||
currentChoice = choices.indexOf(e => e.sceneItem === currentPlaylist);
|
console.log(`VIDEO CHOSEN RANDOMLY: ${winner.chatName}`);
|
||||||
choices.splice(currentChoice, 1);
|
//twitch.botChat.say(twitchChannel, `No Votes Logged -- Next Playlist Chosen at Random: ${winner.chatName}`);
|
||||||
newPlaylist = util.randElement(choices);
|
|
||||||
console.log(`PLAYLIST CHOSEN RANDOMLY: ${newPlaylist.chatName}`);
|
|
||||||
twitch.botChat.say(twitchChannel, `No Votes Logged -- Next Playlist Chosen at Random: ${newPlaylist.chatName}`);
|
|
||||||
} else {
|
|
||||||
// tally and sort votes
|
|
||||||
let voteTallies = [];
|
|
||||||
util.asyncForEach(userVotes, vote => {
|
|
||||||
tallyIndex = voteTallies.findIndex(e => e.id === vote.vote);
|
|
||||||
if (tallyIndex !== -1) {
|
|
||||||
voteTallies[tallyIndex].count++;
|
|
||||||
} else {
|
|
||||||
voteTallies.push({id: vote.vote, count: 1});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
voteTallies.sort((a, b) => {
|
|
||||||
if (a.count < b.count) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (a.count > b.count) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
// a must be equal to b
|
|
||||||
return 0;
|
|
||||||
});
|
|
||||||
|
|
||||||
console.log(`Voting Results: ${JSON.stringify(voteTallies)}`);
|
|
||||||
newPlaylist = config.obs.availablePlaylists[voteTallies[0].id-1];
|
|
||||||
console.log(`WINNER OF THE VOTE: ${newPlaylist.chatName}`);
|
|
||||||
twitch.botChat.say(twitchChannel, `Winner of the Playlist Vote: ${newPlaylist.chatName}`);
|
|
||||||
|
|
||||||
// clear user votes
|
|
||||||
userVotes = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
// only do this if the playlists are actually different
|
|
||||||
if (currentPlaylist === newPlaylist.sceneItem) {
|
|
||||||
twitch.botChat.say(twitchChannel, `We gucci. Stay comfy, nerds. DataComfy`);
|
|
||||||
} else {
|
|
||||||
console.log(`Changing playlist from ${currentPlaylist} to ${newPlaylist.sceneItem}`);
|
|
||||||
// @TODO: Don't use twitch chat for this
|
|
||||||
twitch.editorChat.say(twitchChannel, `${config.twitch.cmdPrefix}swap ${currentPlaylist} ${newPlaylist.sceneItem}`);
|
|
||||||
twitch.editorChat.say(twitchChannel, `!setcurrent NOW SHOWING: ${newPlaylist.activity}`);
|
|
||||||
// if we're showing TTAS segments, hide the label, if it's anything else, show
|
|
||||||
if (newPlaylist.sceneItem === 'ttas-segments') {
|
|
||||||
twitch.editorChat.say(twitchChannel, `${config.twitch.cmdPrefix}hide current-activity`);
|
|
||||||
} else {
|
} else {
|
||||||
twitch.editorChat.say(twitchChannel, `${config.twitch.cmdPrefix}show current-activity`);
|
// tally and sort votes
|
||||||
|
let voteTallies = [];
|
||||||
|
util.asyncForEach(userVotes, vote => {
|
||||||
|
tallyIndex = voteTallies.findIndex(e => e.id === vote.vote);
|
||||||
|
if (tallyIndex !== -1) {
|
||||||
|
voteTallies[tallyIndex].count++;
|
||||||
|
} else {
|
||||||
|
voteTallies.push({id: vote.vote, count: 1});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
voteTallies.sort((a, b) => {
|
||||||
|
if (a.count < b.count) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (a.count > b.count) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
// a must be equal to b
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(`Voting Results: ${JSON.stringify(voteTallies)}`);
|
||||||
|
winner = currentChoices[voteTallies[0].id-1];
|
||||||
|
console.log(`WINNER OF THE VOTE: ${winner.chatName}`);
|
||||||
|
//twitch.botChat.say(twitchChannel, `Winner of the Video Vote: ${winner.chatName}`);
|
||||||
|
|
||||||
|
// clear user votes
|
||||||
|
userVotes = [];
|
||||||
}
|
}
|
||||||
currentPlaylist = newPlaylist.sceneItem;
|
|
||||||
|
videoQueue.push[winner];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// choose 10 more random videos from config.vods (that aren't already in the queue)
|
||||||
|
let vodsNotInQueue = config.vods.filter(e => {
|
||||||
|
return (videoQueue.findIndex(q => q.id === e.id) === -1);
|
||||||
|
});
|
||||||
|
currentChoices = vodsNotInQueue.sort( function() { return 0.5 - Math.random() } ).slice(0, 10);
|
||||||
|
|
||||||
|
// post choices to chat + set reminders to post every 5 minutes
|
||||||
|
let chatChoices = currentChoices.map((c, i) => {
|
||||||
|
return `[${i+1}] ${c.chatName}`;
|
||||||
|
});
|
||||||
|
|
||||||
|
rockTheVote = () => {
|
||||||
|
console.log(`Vote for which video you'd like to add to the queue using ${config.twitch.cmdPrefix}vote #: ${chatChoices.join(' | ')}`);
|
||||||
|
//twitch.botChat.say(twitchChannel, `Vote for which video you'd like to see next using ${config.twitch.cmdPrefix}vote #: ${chatChoices.join(' | ')}`)
|
||||||
|
};
|
||||||
|
//setInterval(rockTheVote, 300000);
|
||||||
|
rockTheVote();
|
||||||
});
|
});
|
||||||
console.log(`Playlist will be changed at ${changePlaylistJob.nextInvocation()}`);
|
|
||||||
|
|
||||||
// @TODO: output scheduled time of next switch
|
// Track user votes for video queue
|
||||||
const sayVote = () => {twitch.botChat.say(twitchChannel, `Vote for which video playlist you'd like to see next using ${config.twitch.cmdPrefix}vote #: ${playlistChoices.join(' | ')} (changing at ${changePlaylistJob.nextInvocation()})`)};
|
|
||||||
setTimeout(sayVote, 5000);
|
|
||||||
setInterval(sayVote, 900000);
|
|
||||||
|
|
||||||
// Track user votes for playlist
|
|
||||||
twitch.botChat.addListener('message', (from, to, message) => {
|
twitch.botChat.addListener('message', (from, to, message) => {
|
||||||
// Ignore everything from blacklisted users
|
// Ignore everything from blacklisted users
|
||||||
if (config.twitch.blacklistedUsers.includes(from)) return;
|
if (config.twitch.blacklistedUsers.includes(from)) return;
|
||||||
@@ -347,13 +350,13 @@ const streamInit = (config, obs, twitch) => {
|
|||||||
let userVote = commandParts[1] || false;
|
let userVote = commandParts[1] || false;
|
||||||
|
|
||||||
if (userVote === false) {
|
if (userVote === false) {
|
||||||
return sayVote();
|
return rockTheVote();
|
||||||
}
|
}
|
||||||
|
|
||||||
userVote = Number.parseInt(userVote);
|
userVote = Number.parseInt(userVote);
|
||||||
|
|
||||||
if (!Number.isInteger(userVote) || userVote < 1 || userVote > playlistChoices.length) {
|
if (!Number.isInteger(userVote) || userVote < 1 || userVote > currentChoices.length) {
|
||||||
return twitch.botChat.say(to, `@${from}, please choose an option from 1 - ${playlistChoices.length}!`);
|
return twitch.botChat.say(to, `@${from}, please choose an option from 1 - ${currentChoices.length}!`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for uniqueness of vote
|
// Check for uniqueness of vote
|
||||||
@@ -373,6 +376,8 @@ const streamInit = (config, obs, twitch) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
resolve(videoQueue);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user