Open TishSerg opened 2 years ago
- Какой браузер используешь?
- Расширение "violentmonkey" или "tampermonkey"?
- Можешь отправить логи?
Теперь наблюдаю другую ошибку:
У меня тоже вылезает ошибка.
Ubuntu 20.04 Firefox 95.0 (64 бита) Tempermonkey 4.13.6136
Яндекс изменил заголовок запроса. Надо разобраться как генерируется «Vtrans-Signature».
У меня тоже вылезает ошибка.
Ubuntu 20.04 Firefox 95.0 (64 бита) Tempermonkey 4.13.6136
Таже самая ошибка. Opera 84 Violentmonkey
тоже bad request
its not working anymore because of new changes on the HTTP header no worries i am gonna solve problem ASAP
no worries i am gonna solve problem ASAP
А ты русскоязычный или англояъычный? На каком языке тебе лучше общаться?
Можно на русском.
У меня тоже вылезает ошибка. Ubuntu 20.04 Firefox 95.0 (64 бита) Tempermonkey 4.13.6136
Таже самая ошибка. Opera 84 Violentmonkey
Ты смог решить проблему?
Яндекс изменил заголовок запроса. Надо разобраться как генерируется «Vtrans-Signature».
До исходников браузера дойти не смог, но судя по байткоду, сигнатура создается через алгоритм hmacWithSHA256 https://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html
Яндекс изменил заголовок запроса. Надо разобраться как генерируется «Vtrans-Signature».
До исходников браузера дойти не смог, но судя по байткоду, сигнатура создается через алгоритм hmacWithSHA256 https://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html
Знаю об этом. Но, у каждого видеоролика свой уникальный id. И без секретного ключа не получится расшифровать id.
Нашел решение. Развернут сервер и отправлять POST запрос на него вместо yandex. Скрипт необходимо доработать, так как он не обрабатывает ошибки.
// browser.js
import puppeteer from 'puppeteer-core'
const args = [
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-infobars',
'--single-process',
'--no-zygote',
'--no-first-run',
'--ignore-certificate-errors',
'--ignore-certificate-errors-skip-list',
// '--disable-dev-shm-usage',
'--disable-accelerated-2d-canvas',
'--disable-gpu',
'--hide-scrollbars',
'--disable-notifications',
'--disable-background-timer-throttling',
'--disable-backgrounding-occluded-windows',
'--disable-breakpad',
'--disable-component-extensions-with-background-pages',
'--disable-extensions',
'--disable-features=TranslateUI,BlinkGenPropertyTrees',
'--disable-ipc-flooding-protection',
'--disable-renderer-backgrounding',
'--enable-features=NetworkService,NetworkServiceInProcess',
'--force-color-profile=srgb',
'--metrics-recording-only',
'--mute-audio',
'--remote-debugging-port=12703',
]
const options = {
headless: false,
ignoreHTTPSErrors: true,
executablePath: `C:\\Users\\<Пользователь>\\AppData\\Local\\Yandex\\YandexBrowser\\Application\\browser.exe`,
userDataDir: `C:\\Users\\<Пользователь>\\AppData\\Local\\Yandex\\YandexBrowser\\User Data`,
args,
}
;(async () => {
const browser = await puppeteer.launch(options)
const wsEndpoint = await browser.wsEndpoint()
console.log(wsEndpoint)
})()
// server.js
import puppeteer from 'puppeteer-core'
import express from 'express'
import axios from 'axios'
import timeout from 'connect-timeout'
const app = express()
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.use(timeout('60s'))
app.get('/', (req, res) => {
res.send('voice-over-translation')
})
app.post('/video', async (req, res) => {
const json = await axios.get('http://127.0.0.1:12703/json/version')
const wsEndpoint = json.data.webSocketDebuggerUrl
const browser = await puppeteer.connect({ browserWSEndpoint: wsEndpoint })
const page = await browser.newPage()
await page.goto(`https://www.youtube.com/watch?v=${req.body.video_id}`)
await page.waitForSelector('#y-banner-button')
await page.click('#y-banner-button')
page.on('request', async (request) => {
if (request.url().includes('.mp3')) {
res.send({
url: request.url(),
})
}
})
await page.waitForTimeout(500)
await page.close()
})
app.listen(3000, () => {
console.log('Server is up and running')
})
Нашел решение. Развернут сервер и отправлять POST запрос на него вместо yandex. Скрипт необходимо доработать, так как он не обрабатывает ошибки.
У меня почему-то на сервер отправляется пустой body. что-то еще, кроме ссылки, в самом скрипте подправить нужно?
А можно более подробно что куда прописывать?
Нашел решение. Развернут сервер и отправлять POST запрос на него вместо yandex. Скрипт необходимо доработать, так как он не обрабатывает ошибки.
У меня почему-то на сервер отправляется пустой body. что-то еще, кроме ссылки, в самом скрипте подправить нужно?
data: JSON.stringify({
"video_id": videoId
})
"Content-Type": "application/json"
Нашел решение. Развернут сервер и отправлять POST запрос на него вместо yandex. Скрипт необходимо доработать, так как он не обрабатывает ошибки.
У меня почему-то на сервер отправляется пустой body. что-то еще, кроме ссылки, в самом скрипте подправить нужно?
data: JSON.stringify({ "video_id": videoId })
"Content-Type": "application/json"
что добавить, где добавить и самое главное КАК добавить? Напишите пожалуйста по подробнее, чтобы простым смертным было понятно и могли использовать этот чудо способ!
что добавить, где добавить и самое главное КАК добавить? Напишите пожалуйста по подробнее, чтобы простым смертным было понятно и могли использовать этот чудо способ!
устанавливаешь node.js и яндекс браузер. создаешь 2 файла с содержимым, что автор написал выше. поднимаешь node сервер и делашь как делал раньше(просто в своем браузере кликаешь на значок перевода)
Почему тогда нельзя просто посмотреть видео с переводом в яндекс браузере? 🤣 Тем более там есть заглушение оригинальной озвучки, синхронизация с громкостью плеера, да и переводить можно не только youtube, но и другие сервисы
@Ponf может потому что не хотят им пользоваться из за вшитой всякой фигни в него?
что добавить, где добавить и самое главное КАК добавить? Напишите пожалуйста по подробнее, чтобы простым смертным было понятно и могли использовать этот чудо способ!
устанавливаешь node.js и яндекс браузер. создаешь 2 файла с содержимым, что автор написал выше. поднимаешь node сервер и делашь как делал раньше(просто в своем браузере кликаешь на значок перевода)
конечно, это же все так просто, особенно для тех кто не знает что такое код программирования))) ДА на гитхаб заходят люди которые не разбираются в программировании!) Ну, с установкой node.js и браузером еще можно разобраться.... Ладно с созданием 2х файлов browser.js и server.js то же можно разобраться (но это не точно). Но как именно поднять сервер на node, куда эти 2 файла browser.js и server.js положить чтобы все работало?
так что в итоге, скрипт окончательно заглох?
спасибо, через прокси работает!
что добавить, где добавить и самое главное КАК добавить? Напишите пожалуйста по подробнее, чтобы простым смертным было понятно и могли использовать этот чудо способ!
устанавливаешь node.js и яндекс браузер. создаешь 2 файла с содержимым, что автор написал выше. поднимаешь node сервер и делашь как делал раньше(просто в своем браузере кликаешь на значок перевода)
конечно, это же все так просто, особенно для тех кто не знает что такое код программирования))) ДА на гитхаб заходят люди которые не разбираются в программировании!) Ну, с установкой node.js и браузером еще можно разобраться.... Ладно с созданием 2х файлов browser.js и server.js то же можно разобраться (но это не точно). Но как именно поднять сервер на node, куда эти 2 файла browser.js и server.js положить чтобы все работало?
Если для тебя вопрос ещё актуален, то можешь глянуть мой форк этого репозитория. Да, возможно не идеально работает, но хотя бы работает =)
что добавить, где добавить и самое главное КАК добавить? Напишите пожалуйста по подробнее, чтобы простым смертным было понятно и могли использовать этот чудо способ!
устанавливаешь node.js и яндекс браузер. создаешь 2 файла с содержимым, что автор написал выше. поднимаешь node сервер и делашь как делал раньше(просто в своем браузере кликаешь на значок перевода)
конечно, это же все так просто, особенно для тех кто не знает что такое код программирования))) ДА на гитхаб заходят люди которые не разбираются в программировании!) Ну, с установкой node.js и браузером еще можно разобраться.... Ладно с созданием 2х файлов browser.js и server.js то же можно разобраться (но это не точно). Но как именно поднять сервер на node, куда эти 2 файла browser.js и server.js положить чтобы все работало?
Если для тебя вопрос ещё актуален, то можешь глянуть мой форк этого репозитория. Да, возможно не идеально работает, но хотя бы работает =)
вопрос еще актуален, я думаю, не только для меня) что-то не нашел где у вас там оставить комментарий, по этому напишу тут. Мне не понятны некоторые пункты действий.
npm i
- эту папку "web-server" надо откуда то скачать или самому создать, где создать?npm run start
- запускать через командную строку или повершел, находится в папке "web-server" надо?что добавить, где добавить и самое главное КАК добавить? Напишите пожалуйста по подробнее, чтобы простым смертным было понятно и могли использовать этот чудо способ!
устанавливаешь node.js и яндекс браузер. создаешь 2 файла с содержимым, что автор написал выше. поднимаешь node сервер и делашь как делал раньше(просто в своем браузере кликаешь на значок перевода)
конечно, это же все так просто, особенно для тех кто не знает что такое код программирования))) ДА на гитхаб заходят люди которые не разбираются в программировании!) Ну, с установкой node.js и браузером еще можно разобраться.... Ладно с созданием 2х файлов browser.js и server.js то же можно разобраться (но это не точно). Но как именно поднять сервер на node, куда эти 2 файла browser.js и server.js положить чтобы все работало?
Если для тебя вопрос ещё актуален, то можешь глянуть мой форк этого репозитория. Да, возможно не идеально работает, но хотя бы работает =)
вопрос еще актуален, я думаю, не только для меня) что-то не нашел где у вас там оставить комментарий, по этому напишу тут. Мне не понятны некоторые пункты действий. 3. Заполните свои пути в config.json - какие именно пути? где заполнить? где этот файл config.json лежит и должен лежать? 5. Находясь в папке "web-server" пропишите:
npm i
- эту папку "web-server" надо откуда то скачать или самому создать, где создать? 7. Запустите веб-сервер с помощьюnpm run start
- запускать через командную строку или повершел, находится в папке "web-server" надо?
Сейчас немного переделал инструкцию, может быть станет немного понятнее
Нажимаешь кнопку перевести, пишет "Перевод займёт около минуты", но ничего не обновляется, можно прождать 1-3-5-10 мин, пока не нажмешь снова на кнопку "Перевод займёт около минуты" тогда начинается перевод. Никак не оповещает о том, что уже выполнен перевод. Расширение "tampermonkey", Firefox 96.0.3 (64 бита), Windows 11.
Нажимаешь кнопку перевести, пишет "Перевод займёт около минуты", но ничего не обновляется, можно прождать 1-3-5-10 мин, пока не нажмешь снова на кнопку "Перевод займёт около минуты" тогда начинается перевод. Никак не оповещает о том, что уже выполнен перевод. Расширение "tampermonkey", Firefox 96.0.3 (64 бита), Windows 11.
Рабочая версия https://github.com/ilyhalight/voice-over-translation
Рабочая версия https://github.com/ilyhalight/voice-over-translation
С этой версией всё работает. Спасибо.
Упс, что-то пошло не так 😅