Gertykhon / Coub Scroll Arrows

// ==UserScript==
// @name         Coub Scroll Arrows
// @version      0.1.2
// @license      MIT
// @description  Adds up and down arrow buttons for scrolling by clicks
// @author       Gertykhon
// @match        https://coub.com
// @match        https://coub.com/*
// @exclude      https://coub.com/view/*
// @exclude      https://coub.com/embed/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=coub.com
// @grant        none
// ==/UserScript==

(function () {
  'use strict';
  var b = "auto"; //scroll behavior smooth/auto
  var adown = document.createElement("div");
  var aup = document.createElement("div");
  var style = "position:fixed;z-index:9900;right:20px;opacity:50%;background-color:#555;color:#fff;font-weight:900;display:table-cell;" +
    "width:50px;height:50px;border-radius:25px;font-size:20pt;padding:8px 0 0 0;margin:0px;text-align:center;cursor:pointer;";
  adown.style = style + "bottom:20px;";
  adown.innerHTML = '<span style="line-height:0;">↓</span>';
  aup.style = style + "bottom:90px;";
  aup.innerHTML = '<span style="line-height:0;">↑</span>';
  adown.onclick = function () {
    scroll(false);
  };
  aup.onclick = function () {
    scroll(true);
  };
  document.body.append(adown);
  document.body.append(aup);

  function scroll(direction) {
    var story = document.querySelector("div.story__coub");
    var active, target;
    if (story) {
      active = document.querySelector("div.story__coub>div.coub.active");
      target = direction ? active.parentElement.previousElementSibling.previousElementSibling.firstChild :
        active.parentElement.nextSibling.nextElementSibling.firstChild;
    }
    else {
      active = document.querySelector("div.coub.active");
      target = direction ? active.previousSibling : active.nextSibling;
      if (!target) target = direction ? active.parentElement.previousSibling.lastChild : active.parentElement.nextSibling.firstChild;
      if (!target.classList.contains("coub")) target = direction ? target.previousSibling : target.nextSibling;
    }
    if (!target) return;
    target.scrollIntoView({
      behavior: b,
      block: "end"
    });
  }
})();