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
|
'Referer': urlObj.origin
|
||||||
};
|
};
|
||||||
|
|
||||||
// Если это e621, добавляем авторизацию
|
// Если это e621, добавляем авторизацию (если есть учетные данные)
|
||||||
if (urlObj.hostname.includes('e621.net')) {
|
if (urlObj.hostname.includes('e621.net') && config.e621Username && config.e621ApiKey) {
|
||||||
|
try {
|
||||||
const auth = Buffer.from(`${config.e621Username}:${config.e621ApiKey}`).toString('base64');
|
const auth = Buffer.from(`${config.e621Username}:${config.e621ApiKey}`).toString('base64');
|
||||||
headers['Authorization'] = `Basic ${auth}`;
|
headers['Authorization'] = `Basic ${auth}`;
|
||||||
|
} catch (error) {
|
||||||
|
console.warn('⚠️ Ошибка создания Basic auth для e621:', error.message);
|
||||||
|
// Продолжаем без авторизации
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await axios.get(originalUrl, {
|
const response = await axios.get(originalUrl, {
|
||||||
|
|
@ -158,6 +163,41 @@ router.get('/furry', authenticate, async (req, res) => {
|
||||||
return res.json({ posts: [] });
|
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)
|
// Проверка на наличие данных (e621 может возвращать массив напрямую или объект с posts)
|
||||||
let postsData = null;
|
let postsData = null;
|
||||||
|
|
||||||
|
|
@ -329,6 +369,41 @@ router.get('/furry/tags', authenticate, async (req, res) => {
|
||||||
return res.json({ tags: [] });
|
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 может возвращать массив напрямую или объект с массивом)
|
// Проверка на массив (e621 может возвращать массив напрямую или объект с массивом)
|
||||||
let tagsData = null;
|
let tagsData = null;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue