-
Notifications
You must be signed in to change notification settings - Fork 1
/
watch.js
117 lines (101 loc) · 5.46 KB
/
watch.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
document.addEventListener('DOMContentLoaded', function() {
const searchBar = document.getElementById('search-bar');
const autocompleteList = document.getElementById('autocomplete-list');
const videoPlayer = document.getElementById('video-player');
const serverList = document.getElementById('server-list');
const episodeDropdown = document.getElementById('episode-dropdown');
const prevEpisodeButton = document.getElementById('prev-episode');
const nextEpisodeButton = document.getElementById('next-episode');
const urlParams = new URLSearchParams(window.location.search);
const episodeId = urlParams.get('episodeId');
let currentEpisodeNumber;
function loadEpisode(episodeId) {
fetch(`https://api-anime-info.vercel.app/anime/gogoanime/servers/${episodeId}`)
.then(response => response.json())
.then(servers => {
videoPlayer.innerHTML = '';
const iframe = document.createElement('iframe');
iframe.src = servers[0].url;
iframe.width = '100%';
iframe.height = '500px';
iframe.allowFullscreen = true;
videoPlayer.appendChild(iframe);
serverList.innerHTML = '';
servers.forEach(server => {
const button = document.createElement('button');
button.textContent = server.name;
button.addEventListener('click', () => {
iframe.src = server.url;
});
serverList.appendChild(button);
});
currentEpisodeNumber = parseInt(episodeId.split('-').pop(), 10);
fetch(`https://api-anime-info.vercel.app/anime/gogoanime/info/${episodeId.split('-').slice(0, -2).join('-')}`)
.then(response => response.json())
.then(data => {
document.title = `OtakuNexus - Watching ${data.title}`;
const episodes = data.episodes;
episodeDropdown.innerHTML = '';
let currentRangeStart = 1;
while (currentRangeStart <= episodes.length) {
const option = document.createElement('option');
const currentRangeEnd = Math.min(currentRangeStart + 99, episodes.length);
option.value = `${currentRangeStart}-${currentRangeEnd}`;
option.textContent = `${currentRangeStart}-${currentRangeEnd}`;
episodeDropdown.appendChild(option);
currentRangeStart = currentRangeEnd + 1;
}
episodeDropdown.addEventListener('change', () => {
const [start, end] = episodeDropdown.value.split('-').map(Number);
if (currentEpisodeNumber < start || currentEpisodeNumber > end) {
window.location.href = `watch.html?episodeId=${episodes[start - 1].id}`;
}
});
const currentRange = Math.floor((currentEpisodeNumber - 1) / 100) + 1;
episodeDropdown.value = `${(currentRange - 1) * 100 + 1}-${currentRange * 100}`;
const currentIndex = episodes.findIndex(ep => ep.id === episodeId);
prevEpisodeButton.addEventListener('click', () => {
if (currentIndex > 0) {
window.location.href = `watch.html?episodeId=${episodes[currentIndex - 1].id}`;
}
});
nextEpisodeButton.addEventListener('click', () => {
if (currentIndex < episodes.length - 1) {
window.location.href = `watch.html?episodeId=${episodes[currentIndex + 1].id}`;
}
});
})
.catch(error => console.error('Fetching anime details failed:', error));
})
.catch(error => console.error('Fetching streaming links failed:', error));
}
loadEpisode(episodeId);
searchBar.addEventListener('input', function() {
const query = searchBar.value;
if (query.length < 3) {
autocompleteList.innerHTML = '';
return;
}
fetch(`https://api-anime-info.vercel.app/anime/gogoanime/${query}`)
.then(response => response.json())
.then(data => {
autocompleteList.innerHTML = '';
data.results.forEach(anime => {
const item = document.createElement('div');
item.innerHTML = `<img src="${anime.image}" alt="Anime Image"><span>${anime.title}</span>`;
item.addEventListener('click', () => {
window.location.href = `anime.html?id=${anime.id}`;
});
autocompleteList.appendChild(item);
});
})
.catch(error => console.error('Autocomplete search failed:', error));
});
searchBar.addEventListener('keypress', function(event) {
if (event.key === 'Enter') {
event.preventDefault();
const query = searchBar.value;
window.location.href = `search.html?query=${query}`;
}
});
});