echo " ... SKIPPED ('name' field found in metadata. metadata already mapped).\n"; $skipped++; continue; } // backup data to csv file if (!empty($backupFile)) { backupFile($backupFile, $msg, $video); } // get provider $label = OoyalaApiWrapper::getProviderName($video['labels']); $label = empty($label) ? "No provider name" : OoyalaApiWrapper::formatProviderName($label); echo " ({$label})"; $newMeta = mapMetadata($ingester, $video['metadata']); if (!array_key_exists('name', $newMeta)) { $newMeta['name'] = ''; } echo " ... DONE \n\tNEW Metadata:\n"; compareMetadata($video['metadata'], $newMeta); if (!$dryRun) { $resp = OoyalaAsset::updateMetadata($video['embed_code'], $newMeta); if (!$resp) { $failed++; } } if ($compareWithFile) { compareMetadataFile($video, $msg, $newMeta); } } $page++; } while (!empty($nextPage) && $total < $limit); echo "\nTotal videos: " . $total . ", Success: " . ($total - $failed - $skipped) . ", Failed: {$failed}, Skipped: {$skipped}\n\n";
function updateRemoteAssetUrls($ingester, $video) { global $dryRun, $skipped, $failed; if (empty($video['metadata']['source']) || $video['metadata']['source'] != $ingester->getProvider()) { echo "\tSKIP: {$video['name']} (Id: {$video['embed_code']}) - Invalid source value (Provider: {$ingester->getProvider()}, Source: {$video['metadata']['source']}).\n"; $skipped++; return; } if (empty($video['metadata']['sourceid'])) { echo "\tSKIP: {$video['name']} (Id: {$video['embed_code']}) - Empty source id.\n"; $skipped++; return; } if (!empty($video['metadata']['updateAssetUrls'])) { echo "\tSKIP: {$video['name']} (Id: {$video['embed_code']}) - Already updated.\n"; $skipped++; return; } $urls = $ingester->getRemoteAssetUrls($video['metadata']['sourceid']); // for debugging //echo "\n\tNEW URLs (".$video['embed_code']."):\n"; //foreach ( $video['stream_urls'] as $key => &$value ) { // if ( is_null( $value ) ) { // unset( $video['stream_urls'][$key] ); // } //} //compareMetadata( $video['stream_urls'], $urls ); //echo "\n"; $resp = true; if (!$dryRun) { $resp = OoyalaAsset::updateRemoteAssetUrls($video['embed_code'], $urls); if ($resp) { $metadata = ['updateAssetUrls' => 1]; $resp = OoyalaAsset::updateMetadata($video['embed_code'], $metadata); if (!$resp) { "ERROR: {$video['name']} (Id: {$video['embed_code']}) - Cannot set updateAssetUrls to 1 in metadata.\n"; } } else { $failed++; } } if ($resp) { echo "\tUPDATED: {$video['name']} (Id: {$video['embed_code']}) ... DONE.\n"; } }
/** * Remove thumbnail field from Custom Metadata * @global integer $skipped * @global integer $failed * @global boolean $dryRun * @global string $msg * @param array $video * @return boolean */ function removeThumbnailFromMetadata($video) { global $failed, $dryRun, $msg; if (!$dryRun) { $metadata = array('thumbnail' => null); $resp = OoyalaAsset::updateMetadata($video['embed_code'], $metadata); if (!$resp) { $failed++; echo "{$msg}...FAILED (Error: Cannot remove thumbnail field from Custom Metadata).\n"; return false; } } return true; }
/** * Update remote asset (metadata only) * @return integer */ protected function updateRemoteAsset() { if (empty($this->duplicateAsset['embed_code'])) { $this->logger->videoWarnings("Error when updating remote asset data: empty asset embed code.\n"); return 0; } $this->prepareMetaDataForOoyala($generateUrl = false); $ooyalaAsset = new OoyalaAsset(); $assetMeta = $ooyalaAsset->getAssetMetadata($this->metaData); // set reupload $assetMeta['reupload'] = 1; // remove unwanted data $emptyMetaKeys = array_diff(array_keys($this->duplicateAsset['metadata']), array_keys($assetMeta)); foreach ($emptyMetaKeys as $key) { $assetMeta[$key] = null; } if ($this->debugMode()) { print "Ready to update remote asset\n"; print "id: {$this->metaData['videoId']}\n"; print "name: {$this->metaData['destinationTitle']}\n"; print "embed code: {$this->duplicateAsset['embed_code']}\n"; print "asset name: {$this->duplicateAsset['name']}\n"; print "metadata:\n"; foreach (explode("\n", var_export($assetMeta, TRUE)) as $line) { print ":: {$line}\n"; } } else { $result = OoyalaAsset::updateMetadata($this->duplicateAsset['embed_code'], $assetMeta); if (!$result) { $this->logger->videoWarnings(); return 0; } } $categories = empty($this->metaData['pageCategories']) ? [] : explode(", ", $this->metaData['pageCategories']); $msg = "Uploaded remote asset: {$this->metaData['destinationTitle']} (id: {$this->metaData['videoId']})\n"; $this->logger->videoIngested($msg, $categories); return 1; }