Skip to content

Commit

Permalink
Merge pull request #119 from AN0NCER/develop
Browse files Browse the repository at this point in the history
October update
  • Loading branch information
AN0NCER authored Oct 3, 2024
2 parents 8bcbaad + 2d01a8a commit 3df1c08
Show file tree
Hide file tree
Showing 12 changed files with 706 additions and 642 deletions.
3 changes: 3 additions & 0 deletions javascript/pages/player.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@ export async function LoadEpisode(e) {
*/
async function LoadAnime(id, e) {
const stream_file = await LoadM3U8(id, e);
if (typeof stream_file === "undefined") {
return SendAPI.switch();
}
LoadPlayer(stream_file);
}

Expand Down
4 changes: 4 additions & 0 deletions javascript/pages/player/mod_api.js
Original file line number Diff line number Diff line change
Expand Up @@ -115,5 +115,9 @@ export const SendAPI = {

error: (val) => {
ParentWindow.postMessage({ key: 'tunime_error', value: val }, "*");
},

switch: () => {
ParentWindow.postMessage({ key: 'tunime_switch', value: true }, "*");
}
}
12 changes: 9 additions & 3 deletions javascript/pages/player/mod_stream.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,9 @@ export async function LoadM3U8Episode(id, e) {
}

function GenLink(streams) {
if(typeof streams === "boolean"){
return;
}
STREAMS = { 360: streams['360'], 480: streams['480'], 720: streams['720'] };
fixStreamUrls(STREAMS);
if (AUTOQUALITY) {
Expand Down Expand Up @@ -111,10 +114,10 @@ function loadStreamTunime(id, e, kodik_link = undefined) {
}
loadFirstSuccessfulImage(tunime_data.thumbinals)
.then((successfulImage) => {
if (successfulImage !== null) {
Player.setAttribute('poster', successfulImage);
} else {
if (typeof successfulImage === "undefined") {
Player.setAttribute('poster', "/images/preview-image.png");
} else {
Player.setAttribute('poster', successfulImage);
}
});
});
Expand All @@ -135,6 +138,9 @@ function LoadImage(url) {
}

async function loadFirstSuccessfulImage(urls) {
if(typeof urls === "undefined"){
return;
}
for (let url of urls) {
url = url.indexOf("http") != -1 ? url : "https:" + url;
const result = await LoadImage(url);
Expand Down
202 changes: 99 additions & 103 deletions javascript/pages/watch.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { Kodik } from "../modules/Kodik.js";
import { Main } from "../modules/ShikiUSR.js";
import { LoadScreen } from "./watch/mod_load.js";
import { CheckID, LoadAnime } from "./watch/mod_resource.js";
import { Player } from "./watch/mod_player.js";
import { IPlayer } from "./watch/mod_player.js";
import { AutoScrollEpisodes } from "./watch/mod_scrolling.js";
import { Functional } from "./watch/mod_ui.js";
import { DifferenceInData, SaveLData, SetDifferenceData, Synch, SynchLData } from "./watch/mod_sdata.js";
Expand All @@ -20,6 +19,8 @@ export let $CONTINUE = new URLSearchParams(window.location.search).get("continue
//Наведение на плеер
export const $SHOWPLAYER = new URLSearchParams(window.location.search).get("player");

export const Player = IPlayer.Init({ standart: $PARAMETERS.player.standart });

ClearParams(['continue', 'player']);

export let $RULES = undefined;
Expand Down Expand Up @@ -47,123 +48,118 @@ Main(async (e) => {
SynchLData(res);
});

//Загрузка данных аниме плеера kodik
Kodik.Search({ shikimori_id: $ID }, (response) => {
Player().events.onalredy((e) => {
//Начинает загрузку плеера после получения синхронизированных данных
Synch.Init().On((data) => {
if (data) {
Player().loadAnime(data.kodik_episode, data.kodik_dub);
} else {
Player().update();
}
AutoScrollEpisodes();
});
});

//Автоматически проскролит до выбраного эпизода
Player().events.onloaded(async (i) => {
if (i == 1) {
AutoScrollEpisodes();
}
});
//Автоматически проскролит до выбраного эпизода
Player.on('loaded', ({ count }) => {
if (count == 1) {
AutoScrollEpisodes();
}
});

Player().events.onerror((data) => {
console.log(`Eror Tunime Player: ${data}`);
//Убираем автомотический выбор плеера из за ошибки
$PARAMETERS.player.standart = false;
//Если ошибка Tunime плеера то переключаем на обычный плеер Kodik
Player().update(false);
})

//Выполняем сохранение аниме если выбирается озвучка только первого эпизода
Player().translation.events.onselected((id_translation, user) => {
let e = Player().episodes.selected_episode;
if (user && e == 1 && id_translation) {
SaveLData(e, id_translation);
}
});
Player.CMessage.on('error', (data) => {
console.log(`Eror Tunime Player:`, data);
//Если ошибка Tunime плеера то переключаем на обычный плеер Kodik
Player.Switch();
})

//Выполняем сохранение аниме если выбирается озвучка только первого эпизода
Player.CTranslation.on('selected', ({ id, user_handler }) => {
const episode = Player.CEpisodes.selected;
if (user_handler && episode == 1 && id) {
SaveLData(episode, id);
}
});

//Событие отправки выбора озвучки первого просмотра
Player().events.onplayed((e) => {
const data = DifferenceInData();
if (!data[0] && !data[1])
return;
if (data[0] && !data[1]) {
//Событие отправки выбора озвучки первого просмотра
Player.CMessage.on('play', () => {
const data = DifferenceInData();
if (!data[0] && !data[1])
return;
if (data[0] && !data[1]) {
Tunime.OnActiv.Voice($ID, data[0].kodik_dub);
SetDifferenceData(data[0]);
} else if (data[0] && data[1]) {
if (data[0].kodik_dub != data[1].kodik_dub) {
Tunime.OnActiv.Voice($ID, data[0].kodik_dub);
SetDifferenceData(data[0]);
} else if (data[0] && data[1]) {
if (data[0].kodik_dub != data[1].kodik_dub) {
Tunime.OnActiv.Voice($ID, data[0].kodik_dub);
SetDifferenceData(data[0]);
}
}
});
}
});

//Подписываемся на обработчик событий выбора эпизода
//Этот обработчик будет сохранять последние выбраное аниме аниме
Player().episodes.events.onclicked((e, d) => {
SaveLData(e, d);
//Подписываемся на обработчик событий выбора эпизода
//Этот обработчик будет сохранять последние выбраное аниме
Player.CEpisodes.on('selected', ({ episode, translation, user_handler }) => {
if (user_handler) {
SaveLData(episode, translation);

//Добавляем истоию просмотра
History().add(false, 0, 0, e);
});
History().add(false, 0, 0, episode);
}
});

//Подписываемся на обработчик событий пауза плеера
Player().events.onpause((d) => {
History().add(true, d.time)
});
//Подписываемся на обработчик событий пауза плеера
Player.CMessage.on('pause', ({ time }) => {
History().add(true, time)
});

//Подписываемся на обрботчик событий
Player().events.onplayed((e) => {
const userRate = UserRate().Get();
if (userRate != null) {
if (userRate.episodes > e || userRate.status == "completed" || Private.INCOGNITO) {
return;
}
UserRate().Controls.Episode(Player().episodes.selected_episode)
//Подписываемся на обрботчик событий
Player.CMessage.on('play', ({ time, duration }) => {
const userRate = UserRate().Get();
if (userRate != null) {
if (userRate.episodes > Player.CEpisodes.selected || userRate.status == "completed" || Private.INCOGNITO) {
return;
}
});
UserRate().Controls.Episode(Player.CEpisodes.selected);
}
});

Player().events.onplayed((e) => {
if ($CONTINUE != null && $CONTINUE != false) {
//Получаем историю спика продолжение просмотра
let history = History().get();
//Находим ID елемента из истории
let id = history.findIndex((x) => { return x.id == $ID });

//Если найдено и совпадают текущии эпизоды
if (id != -1 && Player().episodes.selected_episode == history[id].episode) {
//Воспроизводим с остановившегося момента
Player().functional.control("seek", { seconds: history[id].duration });
//Устанавливаем что продолжение было включено
$CONTINUE = false;
}
Player.CMessage.on('play', () => {
if ($CONTINUE != null && $CONTINUE != false) {
//Получаем историю спика продолжение просмотра
let history = History().get();
//Находим ID елемента из истории
let id = history.findIndex((x) => { return x.id == $ID });

//Если найдено и совпадают текущии эпизоды
if (id != -1 && Player.CEpisodes.selected == history[id].episode) {
//Воспроизводим с остановившегося момента
Player.PControl.Exec("seek", { seconds: history[id].duration })
//Устанавливаем что продолжение было включено
$CONTINUE = false;
}
});
}
});

//Обработчик события следующего эпизода
Player().events.onnext((e) => {
if (e.episodes.episodes_count == e.episodes.selected_episode) return;
const next_episode = e.episodes.selected_episode + 1;
e.functional.control(e.functional.methods[10], { episode: next_episode });
e.episodes.selected_episode = next_episode;
e.episodes.AnimateSelect(next_episode);
SaveLData(next_episode, e.translation.id);
History().add(false, 0, 0, next_episode);
});
//Обработчик события следующего эпизода
Player.CMessage.on('next', (e) => {
if (Player.CEpisodes.count == Player.CEpisodes.selected) return;
const next_episode = Player.CEpisodes.selected + 1;
Player.PControl.Exec("set_episode", { episode: next_episode });
Player.CEpisodes.Select(next_episode);
SaveLData(next_episode, Player.CTranslation.id);
History().add(false, 0, 0, next_episode);
});

//Альтернативный полный экран видеоплеера
Player().events.onfullscreen((e) => {
if (e.full) {
$('.player').addClass('fullscreen');
} else {
$('.player').removeClass('fullscreen');
}
});
//Альтернативный полный экран видеоплеера
Player.CMessage.on("fullscreen", ({ value }) => {
if (value.full) {
$('.player').addClass('fullscreen');
} else {
$('.player').removeClass('fullscreen');
}
});

//Инициализируем плеер
Player().init(response.results);
//Переключение плеера через Tunime player
Player.CMessage.on("switch", () => {
Player.Switch();
})

//Начинает загрузку плеера после получения синхронизированных данных
Synch.Init().On((data) => {
if (data) {
Player.Init(data);
} else {
Player.Init();
}
});

//Загружаем аниме
Expand Down
11 changes: 5 additions & 6 deletions javascript/pages/watch/mod_download.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { ScrollElementWithMouse, Sleep } from "../../modules/functions.js";
import { Tunime } from "../../modules/TunimeApi.js";
import { WindowManagement } from "../../modules/Windows.js";
import { Player } from "./mod_player.js";
import { Player } from "../watch.js";
import { Anime } from "./mod_resource.js";
import { UserRate } from "./mod_urate.js";

Expand Down Expand Up @@ -408,7 +408,7 @@ class Loading {
return;
this.#loaded = true;

const e = Player().episodes.last_episode;
const e = Player.CEpisodes.count;
if (e !== undefined && e > 1)
$('.wrapper-episodes-d').removeClass('hide');

Expand All @@ -420,7 +420,7 @@ class Loading {
}

this.Download.events.OnSelect.bind(this.Download)();
this.Download.functions.Select(Player().episodes.selected_episode);
this.Download.functions.Select(Player.CEpisodes.selected);
}
}

Expand Down Expand Up @@ -571,8 +571,7 @@ const Structure = {
show: function () {
$("body").addClass("loading");
this.download.Loaded.Load();
const index = Player().data.findIndex(x => x.id == Player().data_id);
const data = Player().data[index];
const data = Player.selected;
this.download.SetData(data);
this.download.Automation.Show();
},
Expand All @@ -583,7 +582,7 @@ const Structure = {
},

verif: function () {
return Player().loaded;
return Player.loaded;
},

anim: {
Expand Down
9 changes: 4 additions & 5 deletions javascript/pages/watch/mod_franchise.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import { Sleep } from "../../modules/functions.js";
import { Kodik } from "../../modules/Kodik.js";
import { GraphQl } from "../../modules/ShikiAPI.js";
import { User } from "../../modules/ShikiUSR.js";
import { $ID } from "../watch.js";
import { Player } from "./mod_player.js";
import { $ID, Player } from "../watch.js";

let A_LOADED = false;
let B_LOADED = false;
Expand Down Expand Up @@ -57,7 +56,7 @@ function LoadAnimeFranchise() {

export async function InitFranchiseVoices() {
UpdateVoices();
Player().translation.events.onselected((e) => {
Player.CTranslation.on("selected", () => {
$('.container-l').show();
$(`.icon-info > .voice`).addClass('none');
B_LOADED = false;
Expand All @@ -66,12 +65,12 @@ export async function InitFranchiseVoices() {
}

async function UpdateVoices() {
if (Franchises.length <= 0 || !Player().translation.id) {
if (Franchises.length <= 0 || !Player.CTranslation.id) {
B_LOADED = true;
return HideLoad();
}

const trans_id = Player().translation.id;
const trans_id = Player.CTranslation.id;
const promises = [];
for (let i = 0; i < Franchises.length; i++) {
const id = Franchises[i];
Expand Down
Loading

0 comments on commit 3df1c08

Please sign in to comment.