forked from m4tinbeigi-official/freemovie
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.js
130 lines (116 loc) · 6.58 KB
/
script.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
118
119
120
121
122
123
124
125
126
127
128
129
130
// توکنها را از فایل JSON میخوانیم
fetch('tokens.json')
.then(response => response.json())
.then(data => {
let tokens = data.tokens; // توکنها از فایل JSON
let currentTokenIndex = data.currentTokenIndex; // ایندکس توکن جاری
// تابعی برای ارسال درخواست با توکن
async function fetchWithToken(title, year, genre) {
try {
let apiKey = tokens[currentTokenIndex]; // توکن جاری
let url = `https://www.omdbapi.com/?apikey=${apiKey}&s=${encodeURIComponent(title)}`; // تغییر به https
if (year) {
url += `&y=${year}`;
}
const response = await fetch(url);
const data = await response.json();
const resultsContainer = document.getElementById('results');
resultsContainer.innerHTML = ''; // پاک کردن نتایج قبلی
if (data.Response === 'True') {
let moviesHtml = '<div class="row">';
data.Search.forEach(movie => {
if (genre && movie.Genre && !movie.Genre.toLowerCase().includes(genre.toLowerCase())) {
return;
}
const poster = movie.Poster !== 'N/A' ? movie.Poster : 'default.jpg';
const imdbID = movie.imdbID.replace('tt', ''); // حذف 'tt' از ابتدای imdbID
moviesHtml += `
<div class="col-md-4">
<div class="card mb-4">
<img src="${poster}" class="card-img-top" alt="${movie.Title}">
<div class="card-body">
<h5 class="card-title">${movie.Title}</h5>
<p class="card-text">سال: ${movie.Year}</p>
<p class="card-text">نوع: ${movie.Type}</p>
${generateDownloadLinks(imdbID, movie.Year, movie.Type)}
</div>
</div>
</div>
`;
});
moviesHtml += '</div>';
resultsContainer.innerHTML = moviesHtml;
// اسکرول به بخش نتایج بعد از نمایش آنها
resultsContainer.scrollIntoView({ behavior: "smooth" });
} else if (data.Error && data.Error.includes('limit')) {
// در صورت رسیدن به محدودیت، توکن را تغییر دهید
currentTokenIndex = (currentTokenIndex + 1) % tokens.length; // تغییر به توکن بعدی
console.log('توکن فعلی محدود شد، تلاش با توکن بعدی: ', tokens[currentTokenIndex]);
// تلاش مجدد با توکن جدید
fetchWithToken(title, year, genre);
} else {
resultsContainer.innerHTML = '<div class="alert alert-danger">هیچ نتیجهای پیدا نشد.</div>';
}
} catch (error) {
console.error('خطا در درخواست:', error);
document.getElementById('results').innerHTML = '<div class="alert alert-danger">خطا در درخواست: ' + error.message + '</div>';
}
}
// اضافه کردن رویداد برای فرم جستجو
document.getElementById('searchForm').addEventListener('submit', function(event) {
event.preventDefault();
const title = document.getElementById('title').value;
const year = document.getElementById('year').value;
const genre = document.getElementById('genre').value;
fetchWithToken(title, year, genre); // ارسال درخواست با توکن
});
})
.catch(error => {
console.error('خطا در بارگذاری فایل توکنها:', error);
document.getElementById('results').innerHTML = '<div class="alert alert-danger">خطا در بارگذاری فایل توکنها</div>';
});
// تابع برای نمایش لینکهای دانلود فیلم یا سریال
function generateDownloadLinks(imdbID, year, type) {
if (type === 'movie') {
const originalDownloadLink = `https://berlin.saymyname.website/Movies/${year}/${imdbID}`;
const backupDownloadLink = `https://tokyo.saymyname.website/Movies/${year}/${imdbID}`;
return `
<a href="${originalDownloadLink}" class="btn btn-primary mb-2">دانلود فیلم (لینک اصلی)</a><br>
<a href="${backupDownloadLink}" class="btn btn-secondary mb-2">دانلود فیلم (لینک جایگزین)</a><br>
`;
} else if (type === 'series') {
return generateSeriesDownloadLinks(imdbID);
}
return '';
}
// تابع برای نمایش لینکهای فصلهای سریال
function generateSeriesDownloadLinks(imdbID) {
let seasonsHtml = '<div class="accordion" id="seasonsAccordion">';
for (let i = 1; i <= 4; i++) {
seasonsHtml += `
<div class="accordion-item">
<h2 class="accordion-header" id="heading${i}">
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapse${i}" aria-expanded="true" aria-controls="collapse${i}">
فصل ${i}
</button>
</h2>
<div id="collapse${i}" class="accordion-collapse collapse" aria-labelledby="heading${i}" data-bs-parent="#seasonsAccordion">
<div class="accordion-body">
${generateQualityLinks(imdbID, i)}
</div>
</div>
</div>
`;
}
seasonsHtml += '</div>';
return seasonsHtml;
}
// تابع برای نمایش لینکهای دانلود بر اساس کیفیت
function generateQualityLinks(imdbID, season) {
let qualityLinks = '';
for (let quality = 1; quality <= 4; quality++) {
const downloadLink = `https://subtitle.saymyname.website/DL/filmgir/?i=tt${imdbID}&f=${season}&q=${quality}`;
qualityLinks += `<a href="${downloadLink}" class="btn btn-success mb-2">دانلود فصل ${season} با کیفیت ${quality}</a><br>`;
}
return qualityLinks;
}