protected function parseOutput($output) { $output = kXml::stripXMLInvalidChars($output); $tokenizer = new KStringTokenizer($output, "\t\n"); $mediaInfo = new KalturaMediaInfo(); $mediaInfo->rawData = $output; $fieldCnt = 0; $section = self::SrteamGeneral; $sectionID = 0; $mediaInfo->streamArray = array(); $streamMediaInfo = null; while ($tokenizer->hasMoreTokens()) { $tok = strtolower(trim($tokenizer->nextToken())); if (strrpos($tok, ":") == false) { if (isset($streamMediaInfo)) { $mediaInfo->streamArray[$section][] = $streamMediaInfo; } $streamMediaInfo = new KalturaMediaInfo(); $sectionID = strchr($tok, "#"); if ($sectionID) { $sectionID = trim($sectionID, "#"); } else { $sectionID = 0; } if (strstr($tok, self::SrteamGeneral) == true) { $section = self::SrteamGeneral; } else { if (strstr($tok, self::SrteamVideo) == true) { $section = self::SrteamVideo; } else { if (strstr($tok, self::SrteamAudio) == true) { $section = self::SrteamAudio; } else { $section = $tok; } } } } else { if ($sectionID <= 1) { self::loadStreamMedia($mediaInfo, $section, $tok); $fieldCnt++; } } self::loadStreamMedia($streamMediaInfo, $section, $tok); } if (isset($streamMediaInfo)) { $mediaInfo->streamArray[$section][] = $streamMediaInfo; } return $mediaInfo; }
/** * Parse content of caption asset and index it * * @action parse * @param string $captionAssetId * @throws KalturaCaptionErrors::CAPTION_ASSET_ID_NOT_FOUND */ function parseAction($captionAssetId) { $captionAsset = assetPeer::retrieveById($captionAssetId); if (!$captionAsset) { throw new KalturaAPIException(KalturaCaptionErrors::CAPTION_ASSET_ID_NOT_FOUND, $captionAssetId); } $captionAssetItems = CaptionAssetItemPeer::retrieveByAssetId($captionAssetId); foreach ($captionAssetItems as $captionAssetItem) { /* @var $captionAssetItem CaptionAssetItem */ $captionAssetItem->delete(); } // make sure that all old items are deleted from the sphinx before creating the new ones kEventsManager::flushEvents(); $syncKey = $captionAsset->getSyncKey(asset::FILE_SYNC_FLAVOR_ASSET_SUB_TYPE_ASSET); $content = kFileSyncUtils::file_get_contents($syncKey, true, false); if (!$content) { return; } $captionsContentManager = kCaptionsContentManager::getCoreContentManager($captionAsset->getContainerFormat()); if (!$captionsContentManager) { return; } $itemsData = $captionsContentManager->parse($content); foreach ($itemsData as $itemData) { $item = new CaptionAssetItem(); $item->setCaptionAssetId($captionAsset->getId()); $item->setEntryId($captionAsset->getEntryId()); $item->setPartnerId($captionAsset->getPartnerId()); $item->setStartTime($itemData['startTime']); $item->setEndTime($itemData['endTime']); $content = ''; foreach ($itemData['content'] as $curChunk) { $content .= $curChunk['text']; } //Make sure there are no invalid chars in the caption asset items to avoid braking the search request by providing invalid XML $content = kString::stripUtf8InvalidChars($content); $content = kXml::stripXMLInvalidChars($content); $item->setContent($content); $item->save(); } }
protected function parseOutput($output) { $output = kXml::stripXMLInvalidChars($output); $tokenizer = new KStringTokenizer($output, "\t\n"); $mediaInfo = new KalturaMediaInfo(); $mediaInfo->rawData = $output; $fieldCnt = 0; $section = self::SrteamGeneral; $sectionID = 0; $mediaInfo->streamArray = array(); $streamMediaInfo = null; while ($tokenizer->hasMoreTokens()) { $tok = strtolower(trim($tokenizer->nextToken())); if (strrpos($tok, ":") == false) { if (isset($streamMediaInfo)) { $mediaInfo->streamArray[$section][] = $streamMediaInfo; } $streamMediaInfo = new KalturaMediaInfo(); $sectionID = strchr($tok, "#"); if ($sectionID) { $sectionID = trim($sectionID, "#"); } else { $sectionID = 0; } if (strstr($tok, self::SrteamGeneral) == true) { $section = self::SrteamGeneral; } else { if (strstr($tok, self::SrteamVideo) == true) { $section = self::SrteamVideo; } else { if (strstr($tok, self::SrteamAudio) == true) { $section = self::SrteamAudio; } else { $section = $tok; } } } } else { if ($sectionID <= 1) { self::loadStreamMedia($mediaInfo, $section, $tok); $fieldCnt++; } } self::loadStreamMedia($streamMediaInfo, $section, $tok); } if (isset($streamMediaInfo)) { $mediaInfo->streamArray[$section][] = $streamMediaInfo; } /* * For ARF (webex) files - simulate container ID and format. * ARF format considered to be a file that has ARF ext * and DOES NOT have both video and audio setting. * On no-content return null */ if (strstr($this->filePath, ".arf")) { if ((isset($mediaInfo->audioFormat) || isset($mediaInfo->audioCodecId)) && (isset($mediaInfo->videoFormat) || isset($mediaInfo->videoCodecId))) { return $mediaInfo; } else { $m = new KalturaMediaInfo(); $m->rawData = $mediaInfo->rawData; $m->fileSize = $mediaInfo->fileSize; $m->containerFormat = "arf"; $m->containerId = "arf"; return $m; } } else { if ($fieldCnt >= 5) { return $mediaInfo; } else { return null; } } }