Update files
This commit is contained in:
parent
4150c03bdb
commit
63b7c0d8f0
|
|
@ -229,8 +229,25 @@ const handleInlineQuery = async (inlineQuery) => {
|
|||
// Поиск через e621 API
|
||||
try {
|
||||
const config = require('../config');
|
||||
|
||||
// Проверить наличие API ключа
|
||||
if (!config.e621ApiKey) {
|
||||
log('warn', 'e621 API ключ не настроен для inline query');
|
||||
await axios.post(`${TELEGRAM_API}/answerInlineQuery`, {
|
||||
inline_query_id: queryId,
|
||||
results: [],
|
||||
cache_time: 60
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const E621_USER_AGENT = 'NakamaApp/1.0 (by glpshchn00 on e621; Telegram: @glpshchn00)';
|
||||
const auth = Buffer.from(`${config.e621Username}:${config.e621ApiKey}`).toString('base64');
|
||||
|
||||
// e621 использует Basic Auth с username:api_key
|
||||
// Если username не указан, используем API ключ как username и пустой пароль
|
||||
// Или можно использовать формат :api_key (пустой username)
|
||||
const username = config.e621Username || config.e621ApiKey;
|
||||
const auth = Buffer.from(`${username}:${config.e621ApiKey}`).toString('base64');
|
||||
|
||||
const response = await axios.get('https://e621.net/posts.json', {
|
||||
params: {
|
||||
|
|
@ -241,9 +258,32 @@ const handleInlineQuery = async (inlineQuery) => {
|
|||
'User-Agent': E621_USER_AGENT,
|
||||
'Authorization': `Basic ${auth}`
|
||||
},
|
||||
timeout: 10000
|
||||
timeout: 10000,
|
||||
validateStatus: (status) => status < 500 // Не бросать ошибку для 401/429
|
||||
});
|
||||
|
||||
// Обработка ошибок авторизации
|
||||
if (response.status === 401) {
|
||||
log('warn', 'e621 API вернул 401 - неверные учетные данные для inline query');
|
||||
await axios.post(`${TELEGRAM_API}/answerInlineQuery`, {
|
||||
inline_query_id: queryId,
|
||||
results: [],
|
||||
cache_time: 60
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Обработка rate limit
|
||||
if (response.status === 429) {
|
||||
log('warn', 'e621 rate limit (429) для inline query');
|
||||
await axios.post(`${TELEGRAM_API}/answerInlineQuery`, {
|
||||
inline_query_id: queryId,
|
||||
results: [],
|
||||
cache_time: 60
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
let postsData = [];
|
||||
if (Array.isArray(response.data)) {
|
||||
postsData = response.data;
|
||||
|
|
@ -264,7 +304,12 @@ const handleInlineQuery = async (inlineQuery) => {
|
|||
source: 'e621'
|
||||
}));
|
||||
} catch (error) {
|
||||
logError('Ошибка поиска e621 для inline query', error);
|
||||
// Логировать только если это не 401/429 (они уже обработаны выше)
|
||||
if (error.response?.status !== 401 && error.response?.status !== 429) {
|
||||
logError('Ошибка поиска e621 для inline query', error);
|
||||
}
|
||||
// Вернуть пустой результат вместо падения
|
||||
searchResults = [];
|
||||
}
|
||||
} else if (source === 'anime') {
|
||||
// Поиск через Gelbooru API
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ module.exports = {
|
|||
gelbooruUserId: process.env.GELBOORU_USER_ID || '1844464',
|
||||
|
||||
// e621 API
|
||||
e621Username: process.env.E621_USERNAME || 'glpshchn00',
|
||||
e621Username: process.env.E621_USERNAME || '', // Опционально, можно оставить пустым
|
||||
e621ApiKey: process.env.E621_API_KEY || 'MWYMw57r2Gu6Yxvw1YvepNvZ',
|
||||
|
||||
// Frontend URL
|
||||
|
|
|
|||
|
|
@ -88,11 +88,13 @@ router.get('/proxy/:encodedUrl', async (req, res) => {
|
|||
'Referer': urlObj.origin
|
||||
};
|
||||
|
||||
// Если это e621, добавляем авторизацию (если есть учетные данные)
|
||||
if (urlObj.hostname.includes('e621.net') && config.e621Username && config.e621ApiKey) {
|
||||
// Если это e621, добавляем авторизацию (если есть API ключ)
|
||||
if (urlObj.hostname.includes('e621.net') && config.e621ApiKey) {
|
||||
try {
|
||||
const auth = Buffer.from(`${config.e621Username}:${config.e621ApiKey}`).toString('base64');
|
||||
headers['Authorization'] = `Basic ${auth}`;
|
||||
// Если username не указан, используем API ключ как username
|
||||
const username = config.e621Username || config.e621ApiKey;
|
||||
const auth = Buffer.from(`${username}:${config.e621ApiKey}`).toString('base64');
|
||||
headers['Authorization'] = `Basic ${auth}`;
|
||||
} catch (error) {
|
||||
console.warn('⚠️ Ошибка создания Basic auth для e621:', error.message);
|
||||
// Продолжаем без авторизации
|
||||
|
|
@ -141,7 +143,9 @@ router.get('/furry', authenticate, async (req, res) => {
|
|||
|
||||
try {
|
||||
// Базовая авторизация для e621 API
|
||||
const auth = Buffer.from(`${config.e621Username}:${config.e621ApiKey}`).toString('base64');
|
||||
// Если username не указан, используем API ключ как username
|
||||
const username = config.e621Username || config.e621ApiKey;
|
||||
const auth = Buffer.from(`${username}:${config.e621ApiKey}`).toString('base64');
|
||||
|
||||
const response = await axios.get('https://e621.net/posts.json', {
|
||||
params: {
|
||||
|
|
@ -347,7 +351,9 @@ router.get('/furry/tags', authenticate, async (req, res) => {
|
|||
|
||||
try {
|
||||
// Базовая авторизация для e621 API
|
||||
const auth = Buffer.from(`${config.e621Username}:${config.e621ApiKey}`).toString('base64');
|
||||
// Если username не указан, используем API ключ как username
|
||||
const username = config.e621Username || config.e621ApiKey;
|
||||
const auth = Buffer.from(`${username}:${config.e621ApiKey}`).toString('base64');
|
||||
|
||||
const response = await axios.get('https://e621.net/tags.json', {
|
||||
params: {
|
||||
|
|
|
|||
Loading…
Reference in New Issue