sodapng / voice-over-translation

MIT License
112 stars 268 forks source link

Всякие разные ошибки #2

Open TishSerg opened 2 years ago

TishSerg commented 2 years ago

Упс, что-то пошло не так 😅

image

sodapng commented 2 years ago
  1. Какой браузер используешь?
  2. Расширение "violentmonkey" или "tampermonkey"?
  3. Можешь отправить логи?
TishSerg commented 2 years ago
  1. Какой браузер используешь?
  2. Расширение "violentmonkey" или "tampermonkey"?
  3. Можешь отправить логи?
  1. Opera 82.0.4227 (используется Opera VPN)
  2. Tampermonkey v4.13.6138
  3. Как бы их получить?

Теперь наблюдаю другую ошибку: image

zsdedan commented 2 years ago

У меня тоже вылезает ошибка.

Ubuntu 20.04 Firefox 95.0 (64 бита) Tempermonkey 4.13.6136 Снимок экрана от 2021-12-15 19-13-09

sodapng commented 2 years ago

Яндекс изменил заголовок запроса. Надо разобраться как генерируется «Vtrans-Signature».

hadach commented 2 years ago

У меня тоже вылезает ошибка.

Ubuntu 20.04 Firefox 95.0 (64 бита) Tempermonkey 4.13.6136 Снимок экрана от 2021-12-15 19-13-09

Таже самая ошибка. Opera 84 Violentmonkey

DmitriyPekar commented 2 years ago

тоже bad request

sodapng commented 2 years ago

its not working anymore because of new changes on the HTTP header no worries i am gonna solve problem ASAP

TishSerg commented 2 years ago

no worries i am gonna solve problem ASAP

А ты русскоязычный или англояъычный? На каком языке тебе лучше общаться?

sodapng commented 2 years ago

Можно на русском.

Reetroo0 commented 2 years ago

У меня тоже вылезает ошибка. Ubuntu 20.04 Firefox 95.0 (64 бита) Tempermonkey 4.13.6136 Снимок экрана от 2021-12-15 19-13-09

Таже самая ошибка. Opera 84 Violentmonkey

Ты смог решить проблему?

Sz3rs commented 2 years ago

Яндекс изменил заголовок запроса. Надо разобраться как генерируется «Vtrans-Signature».

До исходников браузера дойти не смог, но судя по байткоду, сигнатура создается через алгоритм hmacWithSHA256 https://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html

sodapng commented 2 years ago

Яндекс изменил заголовок запроса. Надо разобраться как генерируется «Vtrans-Signature».

До исходников браузера дойти не смог, но судя по байткоду, сигнатура создается через алгоритм hmacWithSHA256 https://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html

Знаю об этом. Но, у каждого видеоролика свой уникальный id. И без секретного ключа не получится расшифровать id.

sodapng commented 2 years ago

Нашел решение. Развернут сервер и отправлять 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')
})
ArtemNA commented 2 years ago

Нашел решение. Развернут сервер и отправлять POST запрос на него вместо yandex. Скрипт необходимо доработать, так как он не обрабатывает ошибки.

У меня почему-то на сервер отправляется пустой body. что-то еще, кроме ссылки, в самом скрипте подправить нужно?

hadach commented 2 years ago

А можно более подробно что куда прописывать?

sodapng commented 2 years ago

Нашел решение. Развернут сервер и отправлять POST запрос на него вместо yandex. Скрипт необходимо доработать, так как он не обрабатывает ошибки.

У меня почему-то на сервер отправляется пустой body. что-то еще, кроме ссылки, в самом скрипте подправить нужно?

data: JSON.stringify({
  "video_id": videoId
})
"Content-Type": "application/json"
Protey commented 2 years ago

Нашел решение. Развернут сервер и отправлять POST запрос на него вместо yandex. Скрипт необходимо доработать, так как он не обрабатывает ошибки.

У меня почему-то на сервер отправляется пустой body. что-то еще, кроме ссылки, в самом скрипте подправить нужно?

data: JSON.stringify({
  "video_id": videoId
})
"Content-Type": "application/json"

что добавить, где добавить и самое главное КАК добавить? Напишите пожалуйста по подробнее, чтобы простым смертным было понятно и могли использовать этот чудо способ!

ArtemNA commented 2 years ago

что добавить, где добавить и самое главное КАК добавить? Напишите пожалуйста по подробнее, чтобы простым смертным было понятно и могли использовать этот чудо способ!

устанавливаешь node.js и яндекс браузер. создаешь 2 файла с содержимым, что автор написал выше. поднимаешь node сервер и делашь как делал раньше(просто в своем браузере кликаешь на значок перевода)

Ponf commented 2 years ago

Почему тогда нельзя просто посмотреть видео с переводом в яндекс браузере? 🤣 Тем более там есть заглушение оригинальной озвучки, синхронизация с громкостью плеера, да и переводить можно не только youtube, но и другие сервисы

AdventurerRussia commented 2 years ago

@Ponf может потому что не хотят им пользоваться из за вшитой всякой фигни в него?

Protey commented 2 years ago

что добавить, где добавить и самое главное КАК добавить? Напишите пожалуйста по подробнее, чтобы простым смертным было понятно и могли использовать этот чудо способ!

устанавливаешь node.js и яндекс браузер. создаешь 2 файла с содержимым, что автор написал выше. поднимаешь node сервер и делашь как делал раньше(просто в своем браузере кликаешь на значок перевода)

конечно, это же все так просто, особенно для тех кто не знает что такое код программирования))) ДА на гитхаб заходят люди которые не разбираются в программировании!) Ну, с установкой node.js и браузером еще можно разобраться.... Ладно с созданием 2х файлов browser.js и server.js то же можно разобраться (но это не точно). Но как именно поднять сервер на node, куда эти 2 файла browser.js и server.js положить чтобы все работало?

DmitriyPekar commented 2 years ago

так что в итоге, скрипт окончательно заглох?

luckydevil13 commented 2 years ago

спасибо, через прокси работает!

ilyhalight commented 2 years ago

что добавить, где добавить и самое главное КАК добавить? Напишите пожалуйста по подробнее, чтобы простым смертным было понятно и могли использовать этот чудо способ!

устанавливаешь node.js и яндекс браузер. создаешь 2 файла с содержимым, что автор написал выше. поднимаешь node сервер и делашь как делал раньше(просто в своем браузере кликаешь на значок перевода)

конечно, это же все так просто, особенно для тех кто не знает что такое код программирования))) ДА на гитхаб заходят люди которые не разбираются в программировании!) Ну, с установкой node.js и браузером еще можно разобраться.... Ладно с созданием 2х файлов browser.js и server.js то же можно разобраться (но это не точно). Но как именно поднять сервер на node, куда эти 2 файла browser.js и server.js положить чтобы все работало?

Если для тебя вопрос ещё актуален, то можешь глянуть мой форк этого репозитория. Да, возможно не идеально работает, но хотя бы работает =)

Protey commented 2 years ago

что добавить, где добавить и самое главное КАК добавить? Напишите пожалуйста по подробнее, чтобы простым смертным было понятно и могли использовать этот чудо способ!

устанавливаешь node.js и яндекс браузер. создаешь 2 файла с содержимым, что автор написал выше. поднимаешь node сервер и делашь как делал раньше(просто в своем браузере кликаешь на значок перевода)

конечно, это же все так просто, особенно для тех кто не знает что такое код программирования))) ДА на гитхаб заходят люди которые не разбираются в программировании!) Ну, с установкой node.js и браузером еще можно разобраться.... Ладно с созданием 2х файлов browser.js и server.js то же можно разобраться (но это не точно). Но как именно поднять сервер на node, куда эти 2 файла browser.js и server.js положить чтобы все работало?

Если для тебя вопрос ещё актуален, то можешь глянуть мой форк этого репозитория. Да, возможно не идеально работает, но хотя бы работает =)

вопрос еще актуален, я думаю, не только для меня) что-то не нашел где у вас там оставить комментарий, по этому напишу тут. Мне не понятны некоторые пункты действий.

  1. Заполните свои пути в config.json - какие именно пути? где заполнить? где этот файл config.json лежит и должен лежать?
  2. Находясь в папке "web-server" пропишите: npm i - эту папку "web-server" надо откуда то скачать или самому создать, где создать?
  3. Запустите веб-сервер с помощью npm run start - запускать через командную строку или повершел, находится в папке "web-server" надо?
ilyhalight commented 2 years ago

что добавить, где добавить и самое главное КАК добавить? Напишите пожалуйста по подробнее, чтобы простым смертным было понятно и могли использовать этот чудо способ!

устанавливаешь 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. Добавил вкладку с комментариями и проблемами
  2. Нужно заполнить пути к месту, куда установлен YandexBrowser (скорее всего вам нужно будет просто поменять имя пользователя (ilyat) на своё имя пользователя, его можно найти по пути C:\Users (Диск C ---> Пользователи). Конфиг лежит по пути "voice-over-translation/web-server/config/default.json" (вы должны были скачать эту папку из моего репозитория)
  3. Да, нужно скачать эту папку из моего репозитория (Вы можете скачать весь репозиторий, нажав на зелёную кнопку "Code", а после на кнопку "Download ZIP").
  4. Можно запускать как через CMD, так и через PowerShell. Да, нужно находится в папке web-server.

Сейчас немного переделал инструкцию, может быть станет немного понятнее

d2m22 commented 2 years ago

Нажимаешь кнопку перевести, пишет "Перевод займёт около минуты", но ничего не обновляется, можно прождать 1-3-5-10 мин, пока не нажмешь снова на кнопку "Перевод займёт около минуты" тогда начинается перевод. Никак не оповещает о том, что уже выполнен перевод. Расширение "tampermonkey", Firefox 96.0.3 (64 бита), Windows 11.

sodapng commented 2 years ago

Нажимаешь кнопку перевести, пишет "Перевод займёт около минуты", но ничего не обновляется, можно прождать 1-3-5-10 мин, пока не нажмешь снова на кнопку "Перевод займёт около минуты" тогда начинается перевод. Никак не оповещает о том, что уже выполнен перевод. Расширение "tampermonkey", Firefox 96.0.3 (64 бита), Windows 11.

Рабочая версия https://github.com/ilyhalight/voice-over-translation

d2m22 commented 2 years ago

Рабочая версия https://github.com/ilyhalight/voice-over-translation

С этой версией всё работает. Спасибо.