/** * Map metadata * @global array $languageNames * @global array $countryNames * @global array $categories * @global boolean $iva * @param VideoFeedIngester $ingester * @param array $data * @return array $data */ function mapMetadata($ingester, $data) { global $languageNames, $countryNames, $categories, $iva; // 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 = getStdName($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 keywords if (!empty($data['tags'])) { $tags = array(); foreach (explode(',', $data['tags']) as $tag) { $tags[] = getStdName($tag); } $keywords = array_merge($keywords, $tags); $data['tags'] = null; } if (!empty($keywords)) { $keywords = $ingester->getUniqueArray($keywords); $data['keywords'] = implode(', ', $keywords); } else { $data['keywords'] = null; } // get page categories if (!empty($pageCategories)) { $data['pagecategories'] = implode(', ', $ingester->getUniqueArray($pageCategories)); } // get rating if (!empty($data['trailerrating'])) { $data['industryrating'] = $data['trailerrating']; $data['trailerrating'] = null; } // get age_required if (empty($data['age_required']) && !empty($data['agegate']) && is_numeric($data['agegate'])) { if ($data['agegate'] > 1) { $data['age_required'] = $data['agegate']; } else { if (!empty($data['industryrating'])) { $data['age_required'] = $ingester->getAgeRequired($data['industryrating']); } else { $data['age_required'] = 18; // default value for age required } } } if (array_key_exists('age_required', $data) && $data['age_required'] < 1) { $data['age_required'] = null; } // get age gate if (!empty($data['age_required'])) { $data['agegate'] = 1; } else { if (array_key_exists('agegate', $data)) { $data['agegate'] = null; } } // get hd if (!empty($data['hd']) && (strtolower($data['hd']) == 'yes' || $data['hd'] == 1)) { $data['hd'] = 1; } else { if (array_key_exists('hd', $data)) { $data['hd'] = null; } } // get language if (!empty($data['lang']) && !empty($languageNames) && array_key_exists($data['lang'], $languageNames)) { $data['lang'] = $languageNames[$data['lang']]; } // get subtitle if (!empty($data['subtitle']) && !empty($languageNames) && array_key_exists($data['subtitle'], $languageNames)) { $data['subtitle'] = $languageNames[$data['subtitle']]; } // get country code if (!empty($data['targetcountry']) && !empty($countryNames) && array_key_exists($data['targetcountry'], $countryNames)) { $data['targetcountry'] = $countryNames[$data['targetcountry']]; } // get category and type $data['category'] = $ingester->getCategory($data['category']); if (!empty($data['category']) && empty($data['type'])) { $data['type'] = $ingester->getType($data['category']); } if (empty($data['pagecategories'])) { $data['pagecategories'] = ''; } else { $meta = $data; $meta['language'] = $meta['lang']; $pageCat = array_map('trim', explode(',', $data['pagecategories'])); $pageCat = $ingester->generateCategories($meta, $pageCat); $data['pagecategories'] = implode(', ', $pageCat); } return $data; }
/** * 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; }