Chaturbate Animate Thumbnail

Animated the thumbnail of a Chaturbate room on mouse hover

Tính đến 29-08-2021. Xem phiên bản mới nhất.

// ==UserScript==
// @name            Chaturbate Animate Thumbnail
// @name:de         Chaturbate Miniaturansicht Animieren
// @name:fr         Vignette Animée Chaturbate
// @name:it         Miniatura Animata Chaturbate
// @author          iXXX94
// @namespace       https://sleazyfork.org/users/809625-ixxx94
// @icon            https://www.google.com/s2/favicons?sz=64&domain=chaturbate.org
// @description     Animated the thumbnail of a Chaturbate room on mouse hover
// @description:de  Animieren die miniaturansicht eines Chaturbate-raums beim maus über
// @description:fr  Anime le vignette d'une salle Chaturbate au survol de la souris
// @description:it  Animata la miniatura di una stanza Chaturbate al passaggio del mouse
// @copyright       2021, iXXX94 (https://sleazyfork.org/users/809625-ixxx94)
// @license         MIT
// @version         1.0.2
// @homepageURL     https://sleazyfork.org/scripts/431581-chaturbate-animate-thumbnail
// @supportURL      https://sleazyfork.org/scripts/431581-chaturbate-animate-thumbnail/feedback
// @require         https://cdn.jsdelivr.net/npm/@violentmonkey/dom@1.0.9
// @match           *://*.chaturbate.com/*
// @run-at          document-idle
// @inject-into     page
// ==/UserScript==

/* global VM */

(() => {
  'use strict'

  // animate thumbnail
  VM.observe(document.body, () => {
    const rooms = document.querySelectorAll('#room_list .room_list_room, .followedContainer .roomElement')

    if (rooms) {
      rooms.forEach((room) => {
        let timer
        const name = room.querySelector(':scope > a').getAttribute('data-room')
        const thumbnail = room.querySelector(':scope > a img')

        room.addEventListener('mouseenter', () => {
          timer = setInterval(() => {
            thumbnail.src = `https://cbjpeg.stream.highwebmedia.com/minifwap/${name}.jpg?f=${new Date().getTime()}`
          }, 100)
        })

        room.addEventListener('mouseleave', () => {
          clearInterval(timer)
          timer = undefined
        })
      })

      return false
    }
  })
})()