Open MaksProger opened 4 weeks ago
Попробуйте эту версию. Не тестировал, но, вроде, должно работать
https://drive.google.com/file/d/185Zq6STP_AeLJH3UvU87mmLQi2WJ1YKO/view?usp=sharing
Нет кнопки, проверял и в ленте, на поисковой странице и отдельно ссылкой на конкретное видео. Если честно я уже пробовал такой фокус изменения в скрипте, tiktok на douyin, до написания темы. Правда, только в браузере firefox 115.16.1esr (64-разрядный), на win 7, Tampermonkey BETA v5.3.6216 Если заглянуть в консоль, инжектированный скрипт, выбивает ошибку. Uncaught (in promise) VideoDataError: Entered unsupported link: "douyin" Я не думаю, что другой браузер или ОС исправит эту ошибку. Единственное что напрягает это ссылки на видео, которые ведут на v3-dy-o.zjcdn.com или v3-web-prime.douyinvod.com т.е. на совсем другие домены, в отличие от тикток. По-хорошему мне нужно разобраться, как всё это работает. Конечно, чтобы разобраться на это нужно время и желание. Но машинный перевод с китайского, не соответствует действительности. Желание здесь и пропадает. Тема скорее из любопытства. Просто douyin это не совсем tiktok.
Uncaught (in promise) VideoDataError: Entered unsupported link: "douyin"
Сейчас, перепроверил. Оказалось, что у doyuin немного не так формируются пути на видео, как у тиктока (не указывается юзернейм в ссылке), отсюда и ошибка. Но все равно, Яндекс не умеет (либо работает криво с китайскими видео, ибо те же видео с doyuin залитые с прямыми ссылками выдают ошибки с неудачным переводом) в перевод ссылок на douyin, как в тиктоке, так, что, так просто, это бы не сработало.
Пока закрою как нереализуемо, т.к. сомневаюсь, что в ближайшее время получится с этим что-то сделать
не указывается юзернейм в ссылке
Я не понимаю. Я не знаю, какие запросы должен делать скрипт. И что, скармливается Яндекс переводчику. Я не интересовался этой темой. Поэтому ваше сообщение, не особо понятно для меня. Сам я раньше никогда не касался направления клиент - серверных приложений. Для меня это ново. После долгих раздумий, над вашим сообщением. Я все же решил написать сообщение.
К тому же я ошибочно сделал вывод про плеер. Если в TikTok отчетливо видно, что страница использует npm-xgplayer, и для xgplayer спокойно можно посмотреть события, свойственные ему. У того же, например, bilibili, по событиям можно утверждать, что плеер скорее xgplayer. Но douyin, если открывать видео по ссылке, и заглянуть в ресурсы, название скриптов штук 9 с названием player-0 и т.д по порядку. Если даже на это не обращать внимание, то и событий (play, pause…) попросту нет. А на главной странице, событий через, чур, много. Не совсем стандартно.
И даже если скрипт расширение функционала плеера, скаченный с сайта «Жирная вилка» «HTML5视频播放工具» на главной странице douyin, еще условно работает, который понятное дело работает и на bilibili тоже, то по ссылке на видео, он превращает страницу в белый фон, и в верхнем левом углу вечно надпись «Please wait…». Но это не столь важно, скрип может быть устаревшим. К тому же, скорее плеер будет влиять на воспроизведение дорожки (соответствие вашего скрипта). А дорожку еще надо получить. Но факт в том, что в пределах сайта не только шаблон прыгает.
Конечно, я понимаю, если было бы так просто, эта тема и не создавалась. Можно было вписывать, например, douyin в bilibili. Но. Например, у били bvid в запросе, у доинг vid и другие есть различия. Та же маска для поиска ресурсов… Понятное дело результат будет, ожидаемо не рабочим. Если функция заточена именно под один шаблон.
Конечно, я немного ознакомился со скриптом. Но на стороне клиента сделать что-то - это одно. А здесь совсем другое. Даже что в переменных находиться, для чего они, как должен быть построен запрос, без понятия. И что должно находиться в нем. И также. Просто если Яндексу скармливается сслыка на страницу, первое сслылка шара с этого сайта, имеет вид v.douyin.com/****/ и при переходе по ней становиться www.douyin.com/video/*, но обе ссылки рабочие, проверено через онлайн загрузчики. Но опять же не все онлайн загрузчики могут работать с сайтом, хоть, и заявлена поддержка, скорее из-за частых изменений на сайте, что не всем быстро удается адаптироваться. Но по такому, если предположить худший вариант, Яндекс сам производит манипуляции с сайтом и не умеет работать с таким сайтом, на ум приходит только одно. Я не разбирался в документации по доинг https://developer.open-douyin.com/docs-page в тех же API JS, например, в нюансах сознание worker. Но для меня, как вариант, проще промежуточный сервер, который условно буферизовал бы видео, чтобы привести к виду более понятному для скрипта. Грубо говоря, сайт конвертер, тупо гнать трафик, как бы через прокси. Но как я понимаю, пока это не требуется.
Яндекс не умеет (либо работает криво с китайскими видео… те же видео с doyuin залитые с прямыми ссылками выдают ошибки…)
Сложное предложение, трудно перевариваемое. С одной стороны можно расценить, как не соответствует кодек для декодирования, у самого сервера Яндекса (Но MPEG AAC Audio (mp4a), так же на том же youtube используется, единственное, что компрессия и версия может повлиять), а с другой, что само аудио не усваивается. Да я понимаю, разные диалекты в каждой части Китая и дикция, плюс еще выражение каких-нибудь чувств. Но если диктор быстро и хорошо произносит речь, то и перевод получается, даже очень идеальным для переводчика. Проверял на обзоре одного фильма на били. За исключением, все же звуков в нашем языке больше, и аудиодорожка идет в очень ускоренном произношении, чтобы не отстать от видео. И переводчик в переводе матом ругается, если переводит ссоры. К тому же, бывает, вроде девушка, а в переводе мужская озвучка. Задумываешься, как он догадался. Но это мелочи. По идее на том же douyin, такие обзоры он должен переводить.
Но по такому, если предположить худший вариант, Яндекс сам производит манипуляции с сайтом и не умеет работать с таким сайтом
Вероятно, Яндекс под капотом использует загрузку видео через yt-dlp. Это нам на руку т.к. позволяет переводить множество веб-сайтов без лишних конвертаций и т.п. Однако, проблема в том, что Яндекс не слишком часто его обновляет, либо использует свой форк более старых версий yt-dlp. Из-за этого иногда встречаются сайты, которые должны поддерживаться yt-dlp, но перевести видео на которых не удается. Один из таких сайтов Douyin.
Сложное предложение, трудно перевариваемое
Если более простым языком. Для перевода TikTok указывается обычная ссылка на видео. Например, https://www.tiktok.com/@USERNAME/video/VIDEO_ID. Дополнительные манипуляции с ссылкой никакие не проводятся. Яндекс сам скачивает видео и переводит его. Все работает.
Подобная ссылка для перевода Douyin не работает. Перевод по ссылке на видео с CDN douyin (.zjcdn.com,.douyinvod.com) тоже не работает. Из-за этого сделал вывод, что проблема именно в переводе китайских видео
Перевод по ссылке на видео с CDN douyin (.zjcdn.com,.douyinvod.com) тоже не работает. Из-за этого сделал вывод, что проблема именно в переводе китайских видео
Пока отвечал, кажется, случайно нашел причину из-за чего не работает перевод по ссылке на CDN douyin. Скорее всего, вина в каких-то спец символах внутри параметров ссылки. Если переделаю медиа прокси, то должно все-таки, получится добавить перевод. Пускай issue повисит, пока не проверю эту теорию
Перевод по ссылке на видео с CDN douyin (.zjcdn.com,.douyinvod.com) тоже не работает.
А временные ссылки, например с Tiktok работают? У меня, по крайней мере, нет. Я до этого не писал, так как думаю, проверял уже. Да и конкретной информации у самого не было.
Эксперименты показали, временная сслылка остается рабочей в случае: Tiktok – если удалить дополнительные параметры в ссылке (после знака вопроса), до expire, дальше ничего изменять нельзя, даже в значения, будет выдавать страницу, доступ запрещен.
перевод по ссылке на CDN douyin. Скорее всего, вина в каких-то спец символах внутри параметров ссылки.
Douyin – можно всё удалить после знака, вместе с вопросом, оставив только ссылку, ссылка будет рабочей.
Но как я понял из мануала по скрипту, Яндекс переводит все прямые ссылки, а значит, файервулы серверов не дают доступа на файлы по временным ссылкам.
Я вспоминаю времена, когда интернет был не стабилен. К тому же когда появились файлообменники, в бесплатном аккаунте, скорость не позволяла скачать быстро. Качалось не один час, а при разрыве связи, приходилось закачку ставить по новой и не один раз. Рулили менеджеры закачек, так как можно было докачивать, но с динамическим IP, ссылка становилась не доступной, после нового подключения, приходилось заново перехватывать временную ссылку из браузера и изменять её на не докаченном файле. Т.е. была фильтрация по IP. Второе. User-Agent должен быть, такой же, как и у браузера, по которому выдается временная ссылка. Иначе скачивался файл, типа, доступ запрещен, если бы он открывался в браузере.
TikTok ссылки при открытии в другом браузере, доступ запрещен, в третьем также, даже при смене UserAgent , правда через дополнение, полностью вручную скопировав, на браузер в котором ссылка была получена. Но там дополнительные параметры в ссылке, как token, не знаю, как работает, но понятное дело, другой браузер уже скорее и не откроет. К тому же сайт ни разу не открывался в этих браузерах, не пользуюсь этим ресурсом.
Douyin временная ссылка с удаленными параметрами, да и целая, при смене IP, остается рабочей, даже проверено по WEB прокси. Но замечено, что не везде открывается. В другом браузере работает. Даже в IE древнем, VLC открывает. Но это естественно, так как у них есть дополнительные программы, например, загрузчик видео, понятное дело нажатие на сайте скачать, скачивание перейдет в программу, которая скорее и наложит водяные знаки. В принципе еще установлено и приложение для виндовс, но не пользуюсь, такая же веб версия, висит просто в фоне. Поэтому все же прыжки из одного в другое, точно агент строго фиксироваться не будет. Да и при постоянном движении, например, со смартфона ip также может прыгать, подключаясь от точки к точки. Все таки там Китай.
Единственное, что в голову приходит, посмотреть на поведение Яндекс переводчика, залив на сервер видео и скормив ему, и посмотреть параметры клиента, какой видео скачает, попробовать подстроиться под него. Получить временную ссылку с такими параметрами и скормить ему. По логике он должен иметь поведение параметры Яндекс браузера. Но Яндекс браузер мне запомнился, как шпион, который User-Agent тырил у браузера по умолчанию, со всеми данными. Сейчас не знаю.
Есть подозрение, но это не точно, если запрос к ресурсам делает уникальный клиент, например выдающий сервер, файервул может блокировать, как защиту от парсинга, в крайнем случае, даже может быть заблокирован ip. Выводы делать рано, так как не все проверено. Но по хорошему, по правилам, Яндекс сам должен получать временную ссылку.
The video at https://www.douyin.com/video/7414024495712718095 has a direct playback link: https://www.douyin.com/aweme/v1/play/?video_id=v0200fg10000crhueh7og65qq74l3r10&line=0
Web API?
https://www.douyin.com/aweme/v1/play/?{ video_id }
example:
https://v.douyin.com/irwRJJ2e/ https://www.douyin.com/aweme/v1/play/?video_id=v0300fg10000cr3i457og65vli2216a0
А временные ссылки, например с Tiktok работают? У меня, по крайней мере, нет. Я до этого не писал, так как думаю, проверял уже. Да и конкретной информации у самого не было.
Не проверял. Ибо, пока работает по обычной ссылке, не было смысла тестировать с временными ссылками.
Единственное, что в голову приходит, посмотреть на поведение Яндекс переводчика, залив на сервер видео и скормив ему, и посмотреть параметры клиента, какой видео скачает, попробовать подстроиться под него. Получить временную ссылку с такими параметрами и скормить ему. По логике он должен иметь
поведениепараметры Яндекс браузера.
Сейчас, так и сделано. В самом Яндекс браузер список поддерживаемых сайтов очень скуден, поэтому в большинстве случаев, приходится додумывать самому как это могло бы работать.
https://www.douyin.com/aweme/v1/play/?video_id=v0200fg10000crhueh7og65qq74l3r10&line=0
Web API?
с проксированием такой ссылки, вроде бы, последний раз и тестировал. Она как раз и редиректит на один из их cdn (на какой точно - не помню). Но как таковой разницы нет, что с /aweme/... ссылкой или со ссылкой сразу на cdn - не хотел переводить
что с /aweme/... ссылкой или со ссылкой сразу на cdn - не хотел переводить
А здесь нет такого, при обращении Яндекс переводчика к сайту ресурсов, он тащит за собой кучу информации, типа я Яндекс? Потому что если, даже в теме пример ссылки с aweme, кликнуть на пример, и даже правой кнопкой открыть в новом окне выдаст ошибку 403. Только, открытие в новом приватном окне, или скопировав, вставив в адресную строку, тогда сервер дает доступ к ресурсам.
что с /aweme/... ссылкой или со ссылкой сразу на cdn - не хотел переводить
А здесь нет такого, при обращении Яндекс переводчика к сайту ресурсов, он тащит за собой кучу информации, типа я Яндекс?
вроде нет
Потому что если, даже в теме пример ссылки с aweme, кликнуть на пример, и даже правой кнопкой открыть в новом окне выдаст ошибку 403. Только, открытие в новом приватном окне, или скопировав, вставив в адресную строку, тогда сервер дает доступ к ресурсам.
видимо, у них в aweme сделана проверка на referer. Если он не пустой или не равен домену douyin, то возвращает ошибку
Если переделаю медиа прокси, то должно все-таки, получится добавить перевод
Действительно помогло. В ближайшее время добавлю кнопку для перевода на сайт
Describe your feature / Опишите ваше предложение
Douyin так-то родственник TikTok, даже селектор CSS .xgplayer video выдает. Практически временные ссылки на видео чем то похожи. Например: v16-webapp-prime.tiktok.com/video/.... v3-web-prime.douyinvod.com/video/.... Но все же они как земля и небо. Douyin более прокачен. Поэтому стало интересно. Все таки часто я его открываю.