Update files
This commit is contained in:
parent
04f4bce239
commit
d2e1f107ce
|
|
@ -88,10 +88,15 @@ router.get('/proxy/:encodedUrl', proxyLimiter, async (req, res) => {
|
|||
'Referer': urlObj.origin
|
||||
};
|
||||
|
||||
// Если это e621, добавляем авторизацию
|
||||
if (urlObj.hostname.includes('e621.net')) {
|
||||
// Если это e621, добавляем авторизацию (если есть учетные данные)
|
||||
if (urlObj.hostname.includes('e621.net') && config.e621Username && config.e621ApiKey) {
|
||||
try {
|
||||
const auth = Buffer.from(`${config.e621Username}:${config.e621ApiKey}`).toString('base64');
|
||||
headers['Authorization'] = `Basic ${auth}`;
|
||||
} catch (error) {
|
||||
console.warn('⚠️ Ошибка создания Basic auth для e621:', error.message);
|
||||
// Продолжаем без авторизации
|
||||
}
|
||||
}
|
||||
|
||||
const response = await axios.get(originalUrl, {
|
||||
|
|
@ -158,6 +163,41 @@ router.get('/furry', authenticate, async (req, res) => {
|
|||
return res.json({ posts: [] });
|
||||
}
|
||||
|
||||
// Обработка ошибок аутентификации
|
||||
if (response.data && response.data.success === false) {
|
||||
if (response.data.message && response.data.message.includes('Authentication')) {
|
||||
console.warn('⚠️ e621 ошибка аутентификации, пробуем без авторизации:', response.data.message);
|
||||
// Пробуем запрос без авторизации (для публичных данных это должно работать)
|
||||
try {
|
||||
const publicResponse = await axios.get('https://e621.net/posts.json', {
|
||||
params: {
|
||||
tags: query.trim(),
|
||||
limit: Math.min(parseInt(limit) || 320, 320),
|
||||
page: parseInt(page) || 1
|
||||
},
|
||||
headers: {
|
||||
'User-Agent': E621_USER_AGENT
|
||||
},
|
||||
timeout: 30000,
|
||||
validateStatus: (status) => status < 500
|
||||
});
|
||||
|
||||
if (publicResponse.status === 429) {
|
||||
return res.json({ posts: [] });
|
||||
}
|
||||
|
||||
// Используем данные из публичного запроса
|
||||
response.data = publicResponse.data;
|
||||
} catch (publicError) {
|
||||
console.error('⚠️ e621 публичный запрос тоже не удался:', publicError.message);
|
||||
return res.json({ posts: [] });
|
||||
}
|
||||
} else {
|
||||
console.warn('⚠️ e621 вернул ошибку:', response.data.message);
|
||||
return res.json({ posts: [] });
|
||||
}
|
||||
}
|
||||
|
||||
// Проверка на наличие данных (e621 может возвращать массив напрямую или объект с posts)
|
||||
let postsData = null;
|
||||
|
||||
|
|
@ -329,6 +369,41 @@ router.get('/furry/tags', authenticate, async (req, res) => {
|
|||
return res.json({ tags: [] });
|
||||
}
|
||||
|
||||
// Обработка ошибок аутентификации
|
||||
if (response.data && response.data.success === false) {
|
||||
if (response.data.message && response.data.message.includes('Authentication')) {
|
||||
console.warn('⚠️ e621 ошибка аутентификации, пробуем без авторизации:', response.data.message);
|
||||
// Пробуем запрос без авторизации (для публичных данных это должно работать)
|
||||
try {
|
||||
const publicResponse = await axios.get('https://e621.net/tags.json', {
|
||||
params: {
|
||||
'search[name_matches]': `${query}*`,
|
||||
'search[order]': 'count',
|
||||
limit: 10
|
||||
},
|
||||
headers: {
|
||||
'User-Agent': E621_USER_AGENT
|
||||
},
|
||||
timeout: 10000,
|
||||
validateStatus: (status) => status < 500
|
||||
});
|
||||
|
||||
if (publicResponse.status === 429) {
|
||||
return res.json({ tags: [] });
|
||||
}
|
||||
|
||||
// Используем данные из публичного запроса
|
||||
response.data = publicResponse.data;
|
||||
} catch (publicError) {
|
||||
console.error('⚠️ e621 публичный запрос тоже не удался:', publicError.message);
|
||||
return res.json({ tags: [] });
|
||||
}
|
||||
} else {
|
||||
console.warn('⚠️ e621 вернул ошибку:', response.data.message);
|
||||
return res.json({ tags: [] });
|
||||
}
|
||||
}
|
||||
|
||||
// Проверка на массив (e621 может возвращать массив напрямую или объект с массивом)
|
||||
let tagsData = null;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue