Example #1
0
/**
 * map metadata
 * @global int $skip
 * @global array $categories
 * @global array $extraMapping
 * @global boolean $force
 * @param string $videoTitle
 * @param VideoFeedIngester $ingester
 * @param array $data
 * @return array|false $metadata
 */
function mapMetadata($videoTitle, $ingester, $data)
{
    global $skip, $categories, $extraMapping, $force;
    // default page categories
    if (empty($data['pageCategories'])) {
        $pageCategories = array();
    } else {
        $pageCategories = array_map('trim', explode(',', $data['pageCategories']));
        $pageCategories = $ingester->getUniqueArray($pageCategories);
    }
    // get name
    $keywords = array();
    if (empty($data['name']) && !empty($data['keywords'])) {
        foreach (explode(',', $data['keywords']) as $keyword) {
            $keyword = trim($keyword);
            if (empty($keyword) || strtolower($keyword) == 'the') {
                continue;
            }
            $keywords[] = $keyword;
            // remove page categories from keywords (for ooyala, iva)
            if (!empty($data['series'])) {
                $categories[] = $data['series'];
            }
            if (!empty($data['provider'])) {
                $categories[] = $data['provider'];
            }
            foreach ($categories as $category) {
                if (strcasecmp($keyword, $category) == 0) {
                    array_pop($keywords);
                    if (!in_array($category, $pageCategories)) {
                        $pageCategories[] = $category;
                    }
                    break;
                }
            }
        }
        // use series if keywords is empty
        if (empty($keywords) && !empty($data['series'])) {
            $keywords[] = $data['series'];
        }
        if (!empty($keywords) && count($keywords) < 5) {
            $data['name'] = implode(', ', $keywords);
            $keywords = array();
        }
    }
    // get page categories
    if (!empty($pageCategories)) {
        $data['pageCategories'] = implode(', ', $ingester->getUniqueArray($pageCategories));
    }
    // get keywords
    if (!empty($data['tags'])) {
        if (!empty($keywords)) {
            $tags = array_map('trim', explode(',', $data['tags']));
            $keywords = array_merge($keywords, $tags);
            $data['keywords'] = implode(', ', $keywords);
        } else {
            $data['keywords'] = preg_replace('/,([^\\s])/', ', $1', $data['tags']);
        }
    } else {
        $data['keywords'] = implode(', ', $keywords);
    }
    // get rating
    if (!empty($data['trailerRating']) && strcasecmp($data['trailerRating'], 'not rated') != 0 && strcasecmp($data['trailerRating'], 'nr') != 0) {
        $data['industryRating'] = $ingester->getIndustryRating($data['trailerRating']);
    } else {
        if (!empty($data['industryRating'])) {
            $data['industryRating'] = $ingester->getIndustryRating($data['industryRating']);
        }
    }
    // get age required
    if (empty($data['ageRequired']) && !empty($data['ageGate']) && is_numeric($data['ageGate'])) {
        if ($data['ageGate'] > 1) {
            $data['ageRequired'] = $data['ageGate'];
        } else {
            if (!empty($data['industryRating'])) {
                $data['ageRequired'] = $ingester->getAgeRequired($data['industryRating']);
            } else {
                $data['ageRequired'] = 18;
                // default value for age required
            }
        }
    }
    // get age gate
    $data['ageGate'] = empty($data['ageRequired']) ? 0 : 1;
    $errorMsg = '';
    if ($force) {
        $metadata = generateMetadataScreenplay($ingester, $data, $errorMsg);
    } else {
        $metadata = $ingester->generateMetadata($data, $errorMsg);
    }
    if (!empty($errorMsg)) {
        $skip++;
        echo "{$videoTitle}...SKIPPED. ({$errorMsg}).\n";
        return false;
    }
    // add required fields
    $metadata['title'] = $data['title'];
    $metadata['canEmbed'] = $data['canEmbed'];
    // map additional metadata (per provider)
    $provider = strtolower($metadata['provider']);
    // use iva function for ooyala
    if (strstr($provider, '/')) {
        $provider = 'iva';
    }
    if (in_array($provider, $extraMapping)) {
        $function = 'mapMetadata' . ucfirst($provider);
        $function($ingester, $data, $metadata);
    }
    return $metadata;
}