dimsog/youtube-to-vk

从 YouTube 转移视频到 VK

1.0.1 2022-04-11 13:01 UTC

This package is not auto-updated.

Last update: 2024-09-24 00:45:35 UTC


README

用于将视频从 YouTube 转移到 VK 群组或用户页面的库。

这个库使用了 youtube-dl-phpvk-php-sdk

要求

  1. PHP 7.4+
  2. Python3 (用于 youtube-dl 或 yt-dlp)
  3. 服务器上已安装 youtube-dlyt-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

在客户端代码中捕获这些错误。