Back to Deck
INSTALL
[userscript]
Kinopoisk Watch Button
SOURCE Kinopoisk
VERSION 1.0
AUTHOR Cododel
Target Match:
- https://www.kinopoisk.ru/*
A UserScript for Kinopoisk that adds a convenient button to watch movies via an alternative player (SSpoisk).
Features
- List Integration: The button appears next to the “Will Watch” button in feeds and lists
- Movie Page Integration: The button is added to the main button block on the movie/series page
- Smart Detection: Uses
Network Idleto track content loading (SPA navigation) - Styling: Mimics the Kinopoisk interface
How it works
The script replaces the kinopoisk.ru domain with sspoisk.ru in the link, generating a direct link to watch.
Installation
- Install a UserScript extension (Tampermonkey/Violentmonkey)
- Install the script
- Navigate to Kinopoisk and enjoy!
Source Code
// ==UserScript==// @name Kinopoisk Watch Button// @namespace https://cododel.dev/// @version 1.0// @description Adds "Watch" button (SSpoisk) to Kinopoisk movie pages and lists// @author Cododel// @match https://www.kinopoisk.ru/*// @icon https://www.google.com/s2/favicons?sz=64&domain=kinopoisk.ru// @grant none// @updateURL https://cododel.dev/mods/kinopoisk-watch/install.user.js// @downloadURL https://cododel.dev/mods/kinopoisk-watch/install.user.js// ==/UserScript==
;(function () { 'use strict'
useNetworkidleEvents() let lastLocation = null
window.addEventListener('network-idle', () => { const currentLocation = window.location.href if (lastLocation === currentLocation) return lastLocation = currentLocation requestAnimationFrame(addWatchButtons) })
function useNetworkidleEvents() { let activeRequests = 0 let idleTimeout = null
function checkNetworkIdle() { if (activeRequests === 0) { idleTimeout = setTimeout(() => { const event = new CustomEvent('network-idle') window.dispatchEvent(event) }, 500) } }
const observer = new PerformanceObserver((list) => { list.getEntries().forEach((entry) => { if (entry.initiatorType === 'fetch' || entry.initiatorType === 'xmlhttprequest') { activeRequests++ clearTimeout(idleTimeout)
if (entry.duration > 0) { activeRequests-- checkNetworkIdle() } } }) })
observer.observe({ entryTypes: ['resource'] }) }
function addWatchButtons() { // ... full implementation in install.user.js }})()