Domanda

Sto cercando di sincronizzare un gruppo di video che ho recuperato da un determinato utente da Youtube a una tabella di database di ID video.

Questo perché YouTube non consente l'aggiunta di meta informazioni a un video. Quindi ho creato una tabella video sul mio server e vorrei sincronizzare i videoids.

vale a dire. app php / mysql < - > Youtube

La struttura dei dati per i video di YouTube è la seguente:

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

per il mio db è questo:

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

Sai come posso sincronizzare questi dati in modo che:

  1. Ogni volta che l'utente carica un nuovo video su YouTube, posso chiamare una funzione di sincronizzazione che recupererà l'ultimo video e lo aggiungerà al mysql db?
  2. Tuttavia, se l'utente elimina un video su YouTube, non è possibile eliminare?
È stato utile?

Soluzione

È possibile utilizzare array_diff() per confrontare gli ID una volta li hai recuperati da entrambe le posizioni, ad esempio:

//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);

E poi puoi fare qualcosa del genere:

//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
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top