1
- import { Main } from "../modules/ShikiUSR.js" ;
2
- import { LTransition } from "./watch/mod_transition.js" ;
3
- import { CheckID , LoadAnime } from "./watch/mod_resource.js" ;
4
- import { IPlayer } from "./watch/mod_player.js" ;
5
- import { AutoScrollEpisodes } from "./watch/mod_scrolling.js" ;
6
- import { Functional } from "./watch/mod_ui.js" ;
7
- import { ASynch } from "./watch/mod_dbanime.js" ;
8
- import { UserRate } from "./watch/mod_urate.js" ;
9
- import { Tunime } from "../modules/TunimeApi.js" ;
10
- import { History } from "./watch/mod_history.js" ;
11
- import { InitFranchiseVoices } from "./watch/mod_franchise.js" ;
12
- import { ClearParams } from "../modules/functions.js" ;
13
- import { Private } from "./watch/mod_private.js" ;
14
-
15
- //ID ресурса из Shikimori
16
- export const $ID = new URLSearchParams ( window . location . search ) . get ( "id" ) ;
17
- //Продолжение просмотра
18
- export let $CONTINUE = new URLSearchParams ( window . location . search ) . get ( "continue" ) ;
19
- //Наведение на плеер
20
- export const $SHOWPLAYER = new URLSearchParams ( window . location . search ) . get ( "player" ) ;
21
- //Существование аниме
22
- const $ISSET = new URLSearchParams ( window . location . search ) . get ( "iss" ) ? true : false ;
23
-
24
- export const Player = IPlayer . Init ( { standart : $PARAMETERS . player . standart } ) ;
25
-
26
- ClearParams ( [ 'continue' , 'player' , 'iss' ] ) ;
27
-
28
- export let $RULES = undefined ;
29
-
30
- import ( `/javascript/pages/watch/mod_collection.js` ) ;
31
-
32
- //Авторизируем пользователя
33
- Main ( async ( e ) => {
34
- if ( $PARAMETERS . anime . customstyle ) {
35
- try {
36
- const data = await import ( `/javascript/pages/anime/${ $ID } .js` ) ;
37
- $RULES = data . default ;
38
- console . log ( `[watch] - Custom RULES [${ $ID } ] loaded` ) ;
39
- } catch { }
40
- }
41
- //Проверка на существование такого ID
42
- const check = await CheckID ( $ID , $ISSET ) ;
43
-
44
- if ( ! check ) {
45
- //Аниме с такий ID не существует, перекидываем на страницу 404
46
- return document . location . replace ( '404a.html' ) ;
47
- }
48
-
49
- Functional ( ) ;
50
-
51
- const aSynch = ASynch . Init ( ) ;
52
-
53
- UserRate ( ) . Events . OnInit ( ( res ) => {
54
- aSynch . Synch ( res ) ;
55
- } ) ;
56
-
57
- //Автоматически проскролит до выбраного эпизода
58
- Player . on ( 'loaded' , ( { count } ) => {
59
- if ( count == 1 ) {
60
- AutoScrollEpisodes ( ) ;
61
- }
62
- } ) ;
63
-
64
- Player . CMessage . on ( 'error' , ( data ) => {
65
- console . log ( `Eror Tunime Player:` , data ) ;
66
- //Если ошибка Tunime плеера то переключаем на обычный плеер Kodik
67
- Player . Switch ( ) ;
68
- } )
69
-
70
- //Выполняем сохранение аниме если выбирается озвучка только первого эпизода
71
- Player . CTranslation . on ( 'selected' , ( { id, user_handler } ) => {
72
- const episode = Player . CEpisodes . selected ;
73
- if ( user_handler && episode == 1 && id ) {
74
- aSynch . Save ( episode , id ) ;
75
- }
76
- } ) ;
77
-
78
- //Событие отправки выбора озвучки первого просмотра
79
- Player . CMessage . on ( 'play' , ( ) => {
80
- const data = aSynch . Diff ;
81
- if ( ! data [ 0 ] && ! data [ 1 ] )
82
- return ;
83
- if ( data [ 0 ] && ! data [ 1 ] ) {
84
- Tunime . OnActiv . Voice ( $ID , data [ 0 ] . kodik_dub ) ;
85
- aSynch . difference = data [ 0 ] ;
86
- } else if ( data [ 0 ] && data [ 1 ] ) {
87
- if ( data [ 0 ] . kodik_dub != data [ 1 ] . kodik_dub ) {
88
- Tunime . OnActiv . Voice ( $ID , data [ 0 ] . kodik_dub ) ;
89
- aSynch . difference = data [ 0 ] ;
90
- }
91
- }
92
- } ) ;
93
-
94
- //Подписываемся на обработчик событий выбора эпизода
95
- //Этот обработчик будет сохранять последние выбраное аниме
96
- Player . CEpisodes . on ( 'selected' , ( { episode, translation, user_handler } ) => {
97
- if ( user_handler ) {
98
- aSynch . Save ( episode , translation ) ;
99
-
100
- //Добавляем истоию просмотра
101
- History ( ) . add ( false , 0 , 0 , episode ) ;
102
- }
103
- } ) ;
104
-
105
- //Подписываемся на обработчик событий пауза плеера
106
- Player . CMessage . on ( 'pause' , ( { time } ) => {
107
- History ( ) . add ( true , time )
108
- } ) ;
109
-
110
- //Подписываемся на обрботчик событий
111
- Player . CMessage . on ( 'play' , ( { time, duration } ) => {
112
- const userRate = UserRate ( ) . Get ( ) ;
113
- if ( userRate != null ) {
114
- if ( userRate . episodes > Player . CEpisodes . selected || userRate . status == "completed" || Private . INCOGNITO ) {
115
- return ;
116
- }
117
- UserRate ( ) . Controls . Episode ( Player . CEpisodes . selected ) ;
118
- }
119
- } ) ;
120
-
121
- Player . CMessage . on ( 'play' , ( ) => {
122
- if ( $CONTINUE != null && $CONTINUE != false ) {
123
- //Получаем историю спика продолжение просмотра
124
- let history = History ( ) . get ( ) ;
125
- //Находим ID елемента из истории
126
- let id = history . findIndex ( ( x ) => { return x . id == $ID } ) ;
127
-
128
- //Если найдено и совпадают текущии эпизоды
129
- if ( id != - 1 && Player . CEpisodes . selected == history [ id ] . episode ) {
130
- //Воспроизводим с остановившегося момента
131
- Player . PControl . Exec ( "seek" , { seconds : history [ id ] . duration } )
132
- //Устанавливаем что продолжение было включено
133
- $CONTINUE = false ;
134
- }
135
- }
136
- } ) ;
137
-
138
- //Обработчик события следующего эпизода
139
- Player . CMessage . on ( 'next' , ( e ) => {
140
- if ( Player . CEpisodes . count == Player . CEpisodes . selected ) return ;
141
- const next_episode = Player . CEpisodes . selected + 1 ;
142
- Player . PControl . Exec ( "set_episode" , { episode : next_episode } ) ;
143
- Player . CEpisodes . Select ( next_episode ) ;
144
- aSynch . Save ( next_episode , Player . CTranslation . id ) ;
145
- History ( ) . add ( false , 0 , 0 , next_episode ) ;
146
- } ) ;
147
-
148
- //Альтернативный полный экран видеоплеера
149
- Player . CMessage . on ( "fullscreen" , ( { value } ) => {
150
- if ( value . full ) {
151
- $ ( '.player' ) . addClass ( 'fullscreen' ) ;
152
- } else {
153
- $ ( '.player' ) . removeClass ( 'fullscreen' ) ;
154
- }
155
- } ) ;
156
-
157
- //Переключение плеера через Tunime player
158
- Player . CMessage . on ( "switch" , ( ) => {
159
- Player . Switch ( ) ;
160
- } )
161
-
162
- //Начинает загрузку плеера после получения синхронизированных данных
163
- aSynch . on ( "inited" , ( data ) => {
164
- if ( data ) {
165
- Player . Init ( data ) ;
166
- } else {
167
- Player . Init ( ) ;
168
- }
169
- } ) ;
170
-
171
- //Загружаем аниме
172
- LoadAnime ( async ( e ) => {
173
- if ( $RULES ) {
174
- $RULES . on . load ( ) ;
175
- }
176
- await LTransition . Loaded ( ( ) => {
177
- if ( $SHOWPLAYER ) {
178
- const element = document . querySelector ( ".landscape-player" ) ;
179
- element . scrollIntoView ( {
180
- behavior : "smooth" ,
181
- block : "center" ,
182
- inline : "nearest" ,
183
- } ) ;
184
- }
185
- Tunime . OnActiv . Anime ( $ID ) ;
186
- } ) ;
187
- History ( ) . shikiData = e ;
188
- History ( ) . custom . init ( ) ;
189
- InitFranchiseVoices ( ) ;
190
- } , e ) ;
1
+ import { Main } from "../modules/ShikiUSR.js" ;
2
+ import { LTransition } from "./watch/mod_transition.js" ;
3
+ import { tLoad } from "./watch/mod.resource.js" ;
4
+ import { IPlayer } from "./watch/mod_player.js" ;
5
+ import { AutoScrollEpisodes } from "./watch/mod_scrolling.js" ;
6
+ import { Functional } from "./watch/mod_ui.js" ;
7
+ import { ASynch } from "./watch/mod_dbanime.js" ;
8
+ import { UserRate } from "./watch/mod_urate.js" ;
9
+ import { Tunime } from "../modules/TunimeApi.js" ;
10
+ import { History } from "./watch/mod_history.js" ;
11
+ import { tChronologyVoice } from "./watch/mod.chronology.js" ;
12
+ import { ClearParams } from "../modules/functions.js" ;
13
+ import { Private } from "./watch/mod_private.js" ;
14
+
15
+ //ID ресурса из Shikimori
16
+ export const $ID = new URLSearchParams ( window . location . search ) . get ( "id" ) ;
17
+ //Продолжение просмотра
18
+ export let $CONTINUE = new URLSearchParams ( window . location . search ) . get ( "continue" ) ;
19
+ //Наведение на плеер
20
+ export const $SHOWPLAYER = new URLSearchParams ( window . location . search ) . get ( "player" ) ;
21
+
22
+ export const Player = IPlayer . Init ( { standart : $PARAMETERS . player . standart } ) ;
23
+
24
+ ClearParams ( [ 'continue' , 'player' , 'iss' ] ) ;
25
+
26
+ export let $RULES = undefined ;
27
+
28
+ //Авторизируем пользователя
29
+ Main ( async ( e ) => {
30
+ if ( $PARAMETERS . anime . customstyle ) {
31
+ try {
32
+ const start = Date . now ( ) ;
33
+ const data = await import ( `/javascript/pages/anime/${ $ID } .js` ) ;
34
+ $RULES = data . default ;
35
+ console . log ( `[mod.${ $ID } ] - load: ${ Date . now ( ) - start } ms.` ) ;
36
+ } catch ( err ) {
37
+ console . log ( `[mod.${ $ID } ] - ${ err } ` ) ;
38
+ }
39
+ }
40
+
41
+ Functional ( ) ;
42
+
43
+ const aSynch = ASynch . Init ( ) ;
44
+
45
+ UserRate ( ) . Events . OnInit ( ( res ) => {
46
+ aSynch . Synch ( res ) ;
47
+ } ) ;
48
+
49
+ //Автоматически проскролит до выбраного эпизода
50
+ Player . on ( 'loaded' , ( { count } ) => {
51
+ if ( count == 1 ) {
52
+ AutoScrollEpisodes ( ) ;
53
+ }
54
+ } ) ;
55
+
56
+ Player . CMessage . on ( 'error' , ( data ) => {
57
+ console . log ( `Eror Tunime Player:` , data ) ;
58
+ //Если ошибка Tunime плеера то переключаем на обычный плеер Kodik
59
+ Player . Switch ( ) ;
60
+ } )
61
+
62
+ //Выполняем сохранение аниме если выбирается озвучка только первого эпизода
63
+ Player . CTranslation . on ( 'selected' , ( { id, user_handler } ) => {
64
+ const episode = Player . CEpisodes . selected ;
65
+ if ( user_handler && episode == 1 && id ) {
66
+ aSynch . Save ( episode , id ) ;
67
+ }
68
+ } ) ;
69
+
70
+ //Событие отправки выбора озвучки первого просмотра
71
+ Player . CMessage . on ( 'play' , ( ) => {
72
+ const data = aSynch . Diff ;
73
+ if ( ! data [ 0 ] && ! data [ 1 ] )
74
+ return ;
75
+ if ( data [ 0 ] && ! data [ 1 ] ) {
76
+ Tunime . OnActiv . Voice ( $ID , data [ 0 ] . kodik_dub ) ;
77
+ aSynch . difference = data [ 0 ] ;
78
+ } else if ( data [ 0 ] && data [ 1 ] ) {
79
+ if ( data [ 0 ] . kodik_dub != data [ 1 ] . kodik_dub ) {
80
+ Tunime . OnActiv . Voice ( $ID , data [ 0 ] . kodik_dub ) ;
81
+ aSynch . difference = data [ 0 ] ;
82
+ }
83
+ }
84
+ } ) ;
85
+
86
+ //Подписываемся на обработчик событий выбора эпизода
87
+ //Этот обработчик будет сохранять последние выбраное аниме
88
+ Player . CEpisodes . on ( 'selected' , ( { episode, translation, user_handler } ) => {
89
+ if ( user_handler ) {
90
+ aSynch . Save ( episode , translation ) ;
91
+
92
+ //Добавляем истоию просмотра
93
+ History ( ) . add ( false , 0 , 0 , episode ) ;
94
+ }
95
+ } ) ;
96
+
97
+ //Подписываемся на обработчик событий пауза плеера
98
+ Player . CMessage . on ( 'pause' , ( { time } ) => {
99
+ History ( ) . add ( true , time )
100
+ } ) ;
101
+
102
+ //Подписываемся на обрботчик событий
103
+ Player . CMessage . on ( 'play' , ( { time, duration } ) => {
104
+ const userRate = UserRate ( ) . Get ( ) ;
105
+ if ( userRate != null ) {
106
+ if ( userRate . episodes > Player . CEpisodes . selected || userRate . status == "completed" || Private . INCOGNITO ) {
107
+ return ;
108
+ }
109
+ UserRate ( ) . Controls . Episode ( Player . CEpisodes . selected ) ;
110
+ }
111
+ } ) ;
112
+
113
+ Player . CMessage . on ( 'play' , ( ) => {
114
+ if ( $CONTINUE != null && $CONTINUE != false ) {
115
+ //Получаем историю спика продолжение просмотра
116
+ let history = History ( ) . get ( ) ;
117
+ //Находим ID елемента из истории
118
+ let id = history . findIndex ( ( x ) => { return x . id == $ID } ) ;
119
+
120
+ //Если найдено и совпадают текущии эпизоды
121
+ if ( id != - 1 && Player . CEpisodes . selected == history [ id ] . episode ) {
122
+ //Воспроизводим с остановившегося момента
123
+ Player . PControl . Exec ( "seek" , { seconds : history [ id ] . duration } )
124
+ //Устанавливаем что продолжение было включено
125
+ $CONTINUE = false ;
126
+ }
127
+ }
128
+ } ) ;
129
+
130
+ //Обработчик события следующего эпизода
131
+ Player . CMessage . on ( 'next' , ( e ) => {
132
+ if ( Player . CEpisodes . count == Player . CEpisodes . selected ) return ;
133
+ const next_episode = Player . CEpisodes . selected + 1 ;
134
+ Player . PControl . Exec ( "set_episode" , { episode : next_episode } ) ;
135
+ Player . CEpisodes . Select ( next_episode ) ;
136
+ aSynch . Save ( next_episode , Player . CTranslation . id ) ;
137
+ History ( ) . add ( false , 0 , 0 , next_episode ) ;
138
+ } ) ;
139
+
140
+ //Альтернативный полный экран видеоплеера
141
+ Player . CMessage . on ( "fullscreen" , ( { value } ) => {
142
+ if ( value . full ) {
143
+ $ ( '.player' ) . addClass ( 'fullscreen' ) ;
144
+ } else {
145
+ $ ( '.player' ) . removeClass ( 'fullscreen' ) ;
146
+ }
147
+ } ) ;
148
+
149
+ //Переключение плеера через Tunime player
150
+ Player . CMessage . on ( "switch" , ( ) => {
151
+ Player . Switch ( ) ;
152
+ } )
153
+
154
+ //Начинает загрузку плеера после получения синхронизированных данных
155
+ aSynch . on ( "inited" , ( data ) => {
156
+ if ( data ) {
157
+ Player . Init ( data ) ;
158
+ } else {
159
+ Player . Init ( ) ;
160
+ }
161
+ } ) ;
162
+
163
+ //Загружаем аниме
164
+ tLoad ( async ( e ) => {
165
+ if ( $RULES ) {
166
+ $RULES . on . load ( ) ;
167
+ }
168
+ await LTransition . Loaded ( ( ) => {
169
+ if ( $SHOWPLAYER ) {
170
+ const element = document . querySelector ( ".landscape-player" ) ;
171
+ element . scrollIntoView ( {
172
+ behavior : "smooth" ,
173
+ block : "center" ,
174
+ inline : "nearest" ,
175
+ } ) ;
176
+ }
177
+ Tunime . OnActiv . Anime ( $ID ) ;
178
+ } ) ;
179
+ History ( ) . shikiData = e ;
180
+ History ( ) . custom . init ( ) ;
181
+ tChronologyVoice ( ) ;
182
+ } , { logged : e } ) . catch ( ( err ) => {
183
+ if ( err . message . startsWith ( 'mod.resource.e.' ) )
184
+ return document . location . replace ( '404a.html' ) ;
185
+ console . log ( err ) ;
186
+ } ) ;
191
187
} ) ;
0 commit comments