Advertisement
Riekelt

Viewer Intros

Oct 11th, 2024
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 000<html>
  2.  
  3. <head>
  4.   <script src="https://cdn.jsdelivr.net/npm/comfy.js@latest/dist/comfy.min.js"></script>
  5.   <style>
  6.     img {
  7.       top: 0px;
  8.       left: 0px;
  9.       position: absolute;
  10.       padding: 0px 0px 0px 0px;
  11.       margin: 0px 0px 0px 0px;
  12.       /* width: 1280px;
  13.   height: 720px; */
  14.     }
  15.   </style>
  16. </head>
  17.  
  18. <body>
  19.   <audio id="audio" controls="" style="visibility: hidden;">
  20.     <source id="source" type="audio/mp3">
  21.   </audio>
  22.   <script type="text/javascript">
  23.     const elements = {
  24.       source: document.querySelector("#source"),
  25.       audio: document.querySelector("#audio")
  26.     };
  27.  
  28.     const viewers = {
  29.       doubledubbel: ['viewerintrosnormalized/Double_Strikers.mp3',
  30.     'viewerintrosnormalized/DoubleDubbel_intro_II.mp3'],
  31.       jackofallmasters: ['viewerintrosnormalized/jackofmasters.mp3']
  32.     }
  33.     let eventQueue = [];
  34.     var set = new Set();
  35.     var synSpecial = 'viewerintrosnormalized/synfull.mp3';
  36.     var rand = Math.random();
  37.     var nextPerson = "";
  38.  
  39.     ComfyJS.onChat = (user, message, flags, self, extra) => {
  40.       songSelector(viewers, extra.username, set);
  41.       audioController();
  42.     }
  43.  
  44.     function songSelector(array, user, set) {
  45.       if (array[user]) {
  46.         if (hasSpoken(user, set)) {
  47.           console.log("match " + user);
  48.           switch (user) {
  49.             case 'synthesiur':
  50.               if (rand < 0.05) {
  51.                 eventQueue.push(synSpecial);
  52.               } else {
  53.                 eventQueue.push(array[user]);
  54.               }
  55.               break;
  56.             default:
  57.               var nextPerson = getRandomValue(viewers, user);
  58.               eventQueue.push(getRandomValue(viewers, user));
  59.               console.log("added " + eventQueue);
  60.               break;
  61.           }
  62.         }
  63.       }
  64.     }
  65.  
  66.     function hasSpoken(user, set) {
  67.       return !set.has(user) && set.add(user);
  68.     }
  69.  
  70.     async function audioController() {
  71.       if (audio.paused) {
  72.         if (eventQueue[0] === undefined) {} else {
  73.           elements.source.src = eventQueue[0];
  74.           console.log('played: ' + eventQueue[0]);
  75.           const audio = elements.audio;
  76.  
  77.           await timeout(100)
  78.           audio.load()
  79.           audio.volume = 0.7;
  80.           audio.play()
  81.  
  82.           eventQueue.shift()
  83.         }
  84.       }
  85.     }
  86.  
  87.     function timeout(ms) {
  88.       return new Promise(resolve => setTimeout(resolve, ms));
  89.     }
  90.  
  91.     function getRandomValue(inputObject, key) {
  92.     if (key in inputObject) {
  93.         const values = inputObject[key];
  94.         if (values.length > 0) {
  95.             const randomIndex = Math.floor(Math.random() * values.length);
  96.             return values[randomIndex];
  97.         } else {
  98.             return "No values associated with the key.";
  99.         }
  100.     } else {
  101.         return "Key not found in the object.";
  102.     }
  103. }
  104.     ComfyJS.Init("riekelt");
  105.   </script>
  106.  
  107.  
  108. </body>
  109.  
  110. </html>
  111.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement