質問

特定のユーザーからYouTubeから取得した多数の動画を、動画IDのデータベーステーブルに同期しようとしています。

これは、YouTubeが動画へのメタ情報の追加を許可していないためです。したがって、サーバー上にビデオテーブルを作成し、videoidを同期したいと思います。

i.e。 php / mysql app <!> lt;-<!> gt; youtube

youtube動画のデータ構造は次のとおりです:

foreach ($feed as $entry) {
  print "<p>";
  print $entry->getVideoId();
  print "</p>";
}

私のデータベースの場合:

$rs->MoveFirst();
while (!$rs->EOF) {
  print "<p>";
  print $rs->fields['yt_id'];
  print "</p>";
  $rs->MoveNext();
}

これらのデータを同期する方法を知っていますか:

  1. ユーザーがyoutubeで新しい動画をアップロードするたびに、最新の動画を取得してmysql dbに追加する同期関数を呼び出すことができますか?
  2. ただし、ユーザーがYouTubeで動画を削除した場合、削除はありませんか?
役に立ちましたか?

解決

array_diff() を使用してIDを1回比較できます両方の場所からそれらを取得しました。例:

//build array of video IDs in YouTube
$arYT = array();
foreach ($feed as $entry) {
    $arYT[] = $entry->getVideoId();
}

//build array of video IDs in local DB
$arDB = array();
$rs->MoveFirst();
while (!$rs->EOF) {
  $arDB[] = $rs->fields['yt_id'];
  $rs->MoveNext();
}

//to download, we want IDs which are in YouTube but not in the local Db
$idsToDownload = array_diff($arYT, $arDB);

//to delete, we want IDs which are in the local DB but not in YouTube
$idsToDelete = array_diff($arDB, $arYT);

そして、次のようなことができます:

//download new videos
foreach ($idsToDownload as $id) {
   //get video info for video $id and put into local db    
}

//delete deleted videos
foreach ($idsToDelete as $id) {
    //delete $id from local DB
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top