dimsog/youtube-to-vk
Composer 安装命令:
composer require dimsog/youtube-to-vk
包简介
Transfer video from youtube to vk
关键字:
README 文档
README
Библиотека для переноса видео с Youtube в группу VK или на страницу пользователя.
Эта библиотека использует youtube-dl-php и vk-php-sdk.
Требования
- PHP 7.4+
- Python3 (для youtube-dl или yt-dlp)
- Установленный на сервере youtube-dl или yt-dlp (у автора скорость скачивания была выше). Это необходимо для youtube-dl-php.
Установка
composer require dimsog/youtube-to-vk
Перед использованием
Наличие VK access token обязательно. Вы можете получить ссылку на получение токена с помощью следующего метода:
use Dimsog\YoutubeToVk\YoutubeToVk; $clientId = 123456; echo YoutubeToVk::generateVkAccessTokenLink($clientId)
Использование
use Dimsog\YoutubeToVk\YoutubeToVk; $youtubeToVk = new YoutubeToVk('vk_access_token'); // постинг в группу $youtubeToVk->toGroup('https://www.youtube.com/watch?v=XXXXXX', 'https://vk.com/group_link_here'); // постинг на страницу пользователя $youtubeToVk->toUser('https://www.youtube.com/watch?v=XXXXXX');
YoutubeDl
Вам полностью доступен инстанс YoutubeDl. Это особенно полезно, если нужно показывать прогресс скачивания видео с VK (код взят из официальной документации к youtube-dl-php):
$youtubeToVk->getYoutubeDl()->onProgress(static function (?string $progressTarget, string $percentage, ?string $size, ?string $speed, ?string $eta, ?string $totalTime): void { echo date("H:i:s") . ", $percentage; Size: $size"; if ($speed) { echo "; Speed: $speed"; } if ($eta) { echo "; ETA: $eta"; } echo "\n"; });
Если вы используете yt-dlp, пропишите к ней путь:
$youtubeToVk->getYoutubeDl()->setBinPath('/usr/local/bin/yt-dlp');
Как получить список всех видео?
use Dimsog\YoutubeToVk\YoutubeVideoList; $youtubeVideoList = new YoutubeVideoList("youtube_api_key"); // можно указывать как id канала, так и его userName $youtubeVideoList->getVideosFromChannel('EmpathyTest'); $youtubeVideoList->getVideosFromChannel('UCKZC###2ND###t-jY###A#hA');
Как скачать все видео с определенного канала?
use Dimsog\YoutubeToVk\YoutubeToVk; use Dimsog\YoutubeToVk\YoutubeVideoList; $youtubeVideoList = new YoutubeVideoList("youtube_api_key"); $youtubeToVk = new YoutubeToVk('vk_access_token'); foreach ($youtubeVideoList->getVideosFromChannel('channelId') as $video) { $youtubeToVk->toGroup($video, 'https://vk.com/group_link_here'); }
Возможные ошибки
В процессе переноса почти 30 000 видео с Youtube в VK, я столкнулся с некоторыми исключениями:
Uncaught VK\Exceptions\VKClientException: Invalid http status: 500
Uncaught VK\Exceptions\VKApiException: Upload error: Getting upload URL error
Отлавливайте эти ошибки в клиентском коде.
统计信息
- 总下载量: 13
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-04-02