dimsog / youtube-to-vk
从 YouTube 转移视频到 VK
1.0.1
2022-04-11 13:01 UTC
Requires
- php: >=7.4
- guzzlehttp/guzzle: ^7.4
- norkunas/youtube-dl-php: ^2.1
- vkcom/vk-php-sdk: ^5.101
This package is not auto-updated.
Last update: 2024-09-24 00:45:35 UTC
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 访问令牌。您可以通过以下方法获取获取令牌的链接:
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'); }
可能的错误
在从 YouTube 转移近 30,000 个视频到 VK 的过程中,我遇到了一些异常
Uncaught VK\Exceptions\VKClientException: Invalid http status: 500
Uncaught VK\Exceptions\VKApiException: Upload error: Getting upload URL error
在客户端代码中捕获这些错误。