web-dev-qa-db-ja.com

YouTubeの動画を使って一括投稿を作成する

私はWordpressに少し慣れていて、PHPを使って一括投稿を作成することについてのあらゆる種類のドキュメントを読むのに少し迷っています。私はYoutubeチャンネルからすべてのビデオを取得するためにYoutube API v3を使用する小さなコードを書きました、そして私はそのループとデータを使用してワードプレスでポストを作成したいです。

私のコードは、誰かがそのような使用法のためにそれを必要とするならば下にあり、PHPを使って大量の投稿を作成する方法とwordpressを使ってコードを実行する方法についての助けと洗練を感謝します。

    <?php

$var = file_get_contents("test.txt"); // list of category IDs
$var = explode("\n", $var);

$servername = "localhost";
$username = "xxxxx";
$password = "xxxxx";
$dbname = "xxxxx";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

function updateYoutube( $videocode ){
    global $conn;

    $run = $conn->query("SELECT `ID` FROM `youtubetable` WHERE `ID` = '$videocode'");

    if ($run->num_rows > 0)
        return false;
    else
    {
        if ($conn->query("INSERT INTO youtubetable (`ID`) VALUES ('$videocode')") === TRUE)
            return true;
        else
            return false;
    }
}

foreach($var as $value)
{
    $value = file_get_contents("https://www.googleapis.com/youtube/v3/channels?part=contentDetails&id=$value&key={KEY}");
    $value = json_decode($value);
    $value = $value->items;

    foreach( $value as $id) {
        $playlist = $id->contentDetails->relatedPlaylists->uploads;

        if(empty($playlist))
            continue;

        $playlist = file_get_contents("https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=$playlist&key={KEY}&maxResults=50");
        $playlist = json_decode($playlist);
        $playlist = $playlist->items;

        foreach( $playlist as $video) {
            $videocode = $video->snippet->resourceId->videoId;

        updateYoutube( $videocode );

        }
    }

}

$conn->close();                                                                                                                                                                                         

?>

更新:

新しい$ videocodeごとに(ループ内で)投稿を作成し、$ videocodeをカスタムの投稿フィールドに挿入します。 "video_url"と静的/動的な "post_title"

前もって感謝します

1
mele

あなたはすでにあなたのupdateYoutube()関数を持っています。編集して 新しい投稿を挿入します 。ごく一般的に

function updateYoutube( $videocode ){
    global $conn;

    $run = $conn->query("SELECT `ID` FROM `youtubetable` WHERE `ID` = '$videocode'");

    if ($run->num_rows > 0)
        return false;
    else
    {
        if ($conn->query("INSERT INTO youtubetable (`ID`) VALUES ('$videocode')") === TRUE) {
          // #################################
          // NOTE: The following 99% cribbed from the wp_insert_post() entry in the Codex
          // Create post object
          $my_post = array(
            'post_title'    => 'My post',
            'post_content'  => $videocode,
            'post_status'   => 'publish',
            'post_author'   => 1,
            'post_category' => array(8,39) // Obviously illustrative only
          );

          // Insert the post into the database
          wp_insert_post( $my_post );
          // ##################################
          return true;
        } else {
            return false;
        }
    }
}

私はそれをテストしていませんが、 自動埋め込みシステム が残りの部分の世話をするべきだと思います。

2
s_ha_dum