Coder Social home page Coder Social logo

qt-kaneko / shikiplayer Goto Github PK

View Code? Open in Web Editor NEW
21.0 21.0 2.0 3.69 MB

Extension/script that adds Kodik player to Shikimori website.

Home Page: https://t.me/shikiplayer

License: GNU Affero General Public License v3.0

JavaScript 32.22% TypeScript 67.78%
addon chrome extension firefox kodik player script shikimori

shikiplayer's Introduction

shikiplayer's People

Contributors

andev0 avatar qt-kaneko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

shikiplayer's Issues

Create a `script` branch and add script version of this extension

shikiplayer.js code works in tampermonkey(for chrome)
make a script version for tampermonkey in script branch
image
for add script version in tampermonkey user can use link like
https://raw.githubusercontent.com/qt-kaneko/Shikiplayer/script/shikiplayer.user.js

// ==UserScript==
// @name         ShikiPlayer (script version)
// @version      1.0
// @description  Tampermonkey script that adds Kodik player to shikimori.one website.
// @author       qt-kaneko
// @match        https://shikimori.one/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=shikimori.one
// @grant        none
// ==/UserScript==

function insertAfter(newNode, existingNode) {
  existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
}

let lastUrl = location.href;
new MutationObserver(() => {
  const url = location.href;
  if (url !== lastUrl) {
    lastUrl = url;

    location.reload(); // Make shikimori reload f@cking page when it changes (҂`ロ´)凸
  }
}).observe(document, { subtree: true, childList: true });

const isAnimePageRegEx = /https?:\/\/shikimori.one\/animes\/[0-9-a-z]*$/;
if (isAnimePageRegEx.test(window.location.href)) {
  const idExtractorRegEx =
    /(?<=https?:\/\/shikimori.one\/animes\/z?)[0-9]*?(?=-)/;

  const id = idExtractorRegEx.exec(location.href)[0];

  const block = document.createElement("div");
  block.className = "block";

  const subheadline = document.createElement("div");
  subheadline.className = "subheadline";
  subheadline.appendChild(document.createTextNode("СМОТРЕТЬ"));
  block.appendChild(subheadline);

  const player = document.createElement("iframe");
  player.id = "player";
  player.src = `https://kodikdb.com/find-player?shikimoriID=${id}`; //&season=1&only_season=true
  player.scrolling = "no";
  player.allowFullscreen = true;
  player.onload = function () {
    player.getElementsByClassName("serial-seasons-box")[0].remove();
  };
  block.appendChild(player);

  const before = document.getElementsByClassName("b-db_entry")[0];

  insertAfter(block, before);

  window.addEventListener("resize", onResize);
  onResize();

  function onResize() {
    player.width = player.parentNode.clientWidth;
    player.height = (9 * player.width) / 16;
  }
}

Изменение статуса тайтла

Иногда, воспроизводится не каждый раз, плеер возвращает просмотренные сериалы в статус "Смотрю", и более того сбрасывает счетчик эпизодов.
Например здесь я просто полистал озвучку в одной из серий.
image

Отметил просмотреным, опять запустил первую серию, сразу поставил на паузу - статус изменился, эпизоды сбросились на 0.
image
image

Тоже самое с брошенным, но так же не всегда. В одном сериале отсмотрел серий 5, они отметились, а статус брошено так и остался.
Если отдельная серия отмечается гдето после 80% эпизода, то перевод в "смотрю" практически сразу.
Аналогично при просмотре последней серии иногда статус меняется на "Просмотрено", а иногда на "смотрю 26\26".

В идеале хотелось бы иметь возможность отключить любое вмешательство в карточку тайтла, тк запускать плеер я могу по любой причине, а пытаться вспомнить почему условный Гандам не посмотрен и висит в онгоинге это сложно.

баг с пустым плеером

v5.3.1

  1. открыть карточку
  2. уйти со страницы
  3. вернуться на страницу (alt+left\right)

если у карточки нет видео, то подгрузится страница сама в себя.
image

Отсутствуют некоторые озвучки

В списке озвучек которые предоставляет плеер на Шикимори, отсутсвуют отзвучки "Студийной Банды". Хотя на других сайтах их переводы есть в Kodik плеере.

Контролируете ли вы апишку https://kodikapi.com/search?token={token}&shikimori_id={anime id}? Если да, то можете добавить и их озвучку в результаты поиска?

Shikimori moved

Shikimori moved to shikimori.one in Russia so i wanna ask u to make ur extension workable with this domain, ty <3

shiki log

Можете скрыть логи данного расширения?
image
image

Добавочные статусы

факт наличия плеера добавляет на многие страницы подобный код:
image

и в список тоже, хотя еще даже не начинал смотреть этот тайтл.
image

сначала думал это просто визуал, но при выгрузке списка в xml получается:

  <anime>
    <series_title>On Air Dekinai!</series_title>
    <series_type>tv</series_type>
    <series_episodes>12</series_episodes>
    <series_animedb_id>50285</series_animedb_id>
    <my_watched_episodes>12</my_watched_episodes>
    <my_times_watched>0</my_times_watched>
    <my_score>6</my_score>
    <my_status>Completed</my_status>
    <shiki_status>Completed</shiki_status>
    <my_comments>

Shikiplayer Data: {"episodeTime":0,"translation":2148}</my_comments>
    <update_on_import>1</update_on_import>
  </anime>

тоесть это доп поле хранящееся в базе?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.