Greasy Fork

arcaliveDualMode

아카라이브 심야식당 게시글 목록을 둘로나눠, 좌우에 각각 보여줍니다.

目前为 2022-06-30 提交的版本。查看 最新版本

// ==UserScript==
// @name         arcaliveDualMode
// @namespace    http://tampermonkey.net/
// @version      0.41
// @description  아카라이브 심야식당 게시글 목록을 둘로나눠, 좌우에 각각 보여줍니다.
// @author       Jayscript
// @match        https://arca.live/b/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=arca.live
// @grant        none
// @license      MIT
// ==/UserScript==
"use strict";

let originalMediaWidth = getOriginalMediaWidth();

function arcaliveDualMode()
{
    if (window.innerWidth >1800)
    {
        removeRightSidebar();
        expandContentWrapper();
        moveArticlesToRightPlane();
        restoreMediaSize();
    }
}

function getOriginalMediaWidth() {
    let image=document.querySelector('.fr-view.article-content img')
    return image? image.offsetWidth : null;
};

function removeRightSidebar()
{
    document.querySelector('.right-sidebar').style = 'display:none;';
}

function expandContentWrapper()
{
    let contentWrapper = document.querySelector('.content-wrapper.clearfix');
    contentWrapper.style='margin:0 5rem 0;max-width:100%';
    let containerBoard = document.querySelector('.containe-fluid.board-article');
    containerBoard.style='margin:0';
}
function moveArticlesToRightPlane()
{
    cloneArticleListAndArrangeIt();
    deleteDuplicatedArticles();
}

function cloneArticleListAndArrangeIt()
{
    let articleList = document.querySelector('.article-list');
    let articleList2 = articleList.cloneNode(true);
    articleList.after(articleList2);

    articleList.style='margin:5 0rem 0 0;float:left;width:49%;';
    articleList2.style='margin:5 0rem 0 0;float:right;width:49%;';
}
function deleteDuplicatedArticles()
{
    let articleList = document.querySelector('.article-list');
    let articleList2 = document.querySelectorAll('.article-list')[1];

    let articles=articleList.querySelectorAll('a.vrow:not(.notice)');
    let articles2=articleList2.querySelectorAll('a.vrow:not(.notice)');
    let noticesInArticles2=articleList2.querySelectorAll('a.vrow.notice');

    articles.forEach((el, i) => i>=15 && el.remove());
    articles2.forEach((el, i) => i<15 && el.remove());
    noticesInArticles2.forEach((el)=>el.remove());
}

function restoreMediaSize()
{
    let images = document.querySelectorAll('.fr-view.article-content img');
    let videos = document.querySelectorAll('.fr-view.article-content video');
    images.forEach(function (el) { el.style.width = `${originalMediaWidth}px`;});
    videos.forEach(function (el) { el.style.width = `${originalMediaWidth}px`;});
}


addEventListener('load',setTimeout(arcaliveDualMode,0));