Как получить миниатюру видео из ВК (Вконтакте)?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как получить миниатюру видео из ВК (Вконтакте)?

Сообщение Anonymous »

Желательно использовать JavaScript на стороне клиента, но если это невозможно, то PHP на сервере.
Я знаю, что в их API есть метод video.get, который возвращает «элементы». массив, содержащий массив изображений предварительного просмотра различной ширины. Но в документах утверждается, что для его использования вам нужен «токен доступа пользователя», который можно получить с помощью «неявного потока» (похоже, это включает в себя открытие всплывающего окна и выполнение входа пользователя в ВК) или «поток кода авторизации» ( это со стороны сервера, но, насколько я могу судить, также предполагает вход пользователя в систему).
Я не хочу, чтобы пользователь входил в систему. И это должно быть быть каким-то образом, так как другие сайты, получающие миниатюры видео ВК, не требуют логина пользователя - например, Google во вкладке "Видео" показывает видео из ВК с миниатюрами. Другой пример — загрузчик миниатюр видео ВКонтакте ImgPanda, который получает миниатюру после того, как пользователь вводит URL-адрес видео ВКонтакте, после нескольких секунд ожидания и, по-видимому, без входа в систему.
Я сталкивался проект GitHub с миниатюрами видео, в котором есть некоторый PHP-код, который кажется актуальным. Похоже, что во встроенном в iframe видео ВКонтакте миниатюра представляет собой src тега img с идентификатором "player_thumb" (что я также убедился, проверив содержимое iframe с помощью инструментов разработчика в браузере).
Я бы предпочел использовать API, но решил попробовать следующий запрос GET с клиентом VSCode REST:
GET https://vk.com/video_ext.php ?oid=-135285&id=456240123&js_api=0
Это действительно работало две недели назад (он возвращал исходный код встраивания видео ВК), но теперь я получаю сообщение «413 Request Entity Too Large» .
Когда это работало, я написал небольшой код JavaScript+Regex, чтобы попытаться получить источник миниатюры:

Код: Выделить всё

function fetchVkThumbnail (oid,id) {
const vkThumbnailRegex = /background-image:url\((?.+\.jpg)\)/;

return fetch(`https://vk.com/video_ext.php?oid=-${oid}&id=${id}`)
.then(res => res.text())
.then((text) => {
const thumbnailSrc = text.match(vkThumbnailRegex).groups.thumbnail;
console.log(thumbnailSrc);
return thumbnailSrc;
});
}
...но выдало сообщение об ошибке Доступ для загрузки по адресу «https://vk.com/video_ext.php?oid=-135285&id=456240123» из источника «http:/» /localhost» заблокирован политикой CORS: в запрошенном ресурсе нет заголовка «Access-Control-Allow-Origin».
Кроме того, я нашел интересное обсуждение о том, как работают openID и oAuth в ВК. Не уверен, что это актуально.

Подробнее здесь: https://stackoverflow.com/questions/785 ... -vkontakte
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»