<?php define('STOP_STATISTICS', true); require_once $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php'; $GLOBALS['APPLICATION']->RestartBuffer(); global $USER; if (!is_object($USER)) { $USER = new \CUser(); } $youtube = new \Hawkart\Megatv\Social\YoutubeClient(); $youtube->importByExternalID($_REQUEST["external_id"], $_REQUEST["serial_id"]);
/** * Import all serials href from resource to db */ public static function importSerials() { $arToFile = array(); $file_50_60 = $_SERVER['DOCUMENT_ROOT'] . "/upload/serials_50_60.txt"; /** * Get all prog which are serials */ $arSerials = array(); $date_prevprev = date('Y-m-d', strtotime("-2 day")); $arFilter = array(">=UF_DATE_START" => new \Bitrix\Main\Type\DateTime($date_prevprev . " 00:00:00", 'Y-m-d H:i:s'), "<UF_DATE_START" => new \Bitrix\Main\Type\DateTime($date_prevprev . " 23:59:59", 'Y-m-d H:i:s'), "!UF_PROG.UF_EPG_SUB_ID" => false); $arSelect = array("ID", "SID" => "UF_PROG.UF_EPG_ID", "TITLE" => "UF_PROG.UF_TITLE", "SUB_TITLE" => "UF_PROG.UF_SUB_TITLE", "SERIA" => "UF_PROG.UF_SERIA", "SEASON" => "UF_PROG.UF_SEASON", "UF_DATE_START", "UF_DATE_END"); $result = \Hawkart\Megatv\ScheduleTable::getList(array('filter' => $arFilter, 'select' => $arSelect)); while ($arSchedule = $result->fetch()) { $arSchedule["UF_DATE_START"] = $arSchedule["DATE_START"] = $arSchedule['UF_DATE_START']->toString(); $arSchedule["UF_DATE_END"] = $arSchedule["DATE_END"] = $arSchedule['UF_DATE_END']->toString(); $arSerials[] = $arSchedule; } /** * Get all serials with epg_id */ $arTableSerials = array(); $result = \Hawkart\Megatv\SerialTable::getList(array('filter' => array("!UF_EPG_ID" => false), 'select' => array("ID", "UF_EPG_ID", "UF_CHANNEL_ID"))); while ($row = $result->fetch()) { $arTableSerials[$row["UF_EPG_ID"]] = $row; } foreach ($arSerials as $arProg) { $title = $arProg["TITLE"]; if (!empty($arProg["SUB_TITLE"])) { $title = $arProg["SUB_TITLE"] . ". " . $title; } else { if (!empty($arProg["SEASON"])) { $title .= ": сезон " . $arProg["SEASON"]; } if (!empty($arProg["SERIA"])) { $title .= " серия " . $arProg["SERIA"]; } } $seria_secs = strtotime($arProg["DATE_END"]) - strtotime($arProg["DATE_START"]); $youtube = new \Hawkart\Megatv\Social\YoutubeClient(); $arVideos = $youtube->search($title); $arSerial = $arTableSerials[$arProg["SID"]]; if (empty($arSerial)) { continue; } //Progs in table by serial_id $arTableItems = array(); $result = \Hawkart\Megatv\ProgExternalTable::getList(array('filter' => array("=UF_SERIAL_ID" => $arSerial["ID"]), 'select' => array("ID", "UF_SERIAL_ID", "UF_EXTERNAL_ID"))); while ($row = $result->fetch()) { $arTableItems[] = $row["UF_EXTERNAL_ID"]; } foreach ($arVideos as $arItem) { //secs from youtube $time_parts = explode(":", $arItem["TIME"]); $secs = 60 * $time_parts[count($time_parts) - 2] + $time_parts[count($time_parts) - 1]; if (count($time_parts) == 3) { $secs = 60 * intval($time_parts[0]) + intval($time_parts[1]); } else { $secs = 3600 * intval($time_parts[0]) + 60 * intval($time_parts[1]) + intval($time_parts[2]); } $time_perc = $secs / $seria_secs * 100; similar_text($title, $arItem["TITLE"], $perc); similar_text($arItem["TITLE"], $title, $perc_2); if (floatval($perc) < 60 && floatval($perc) >= 40) { $arToFile[] = array("ORIGINAL_TITLE" => $title, "SOCIAL_TITLE" => $arItem["TITLE"], "PERCENT" => $perc, "EXTERNAL_ID" => $arItem["ID"], "TIME" => $arItem["TIME"], "UF_SERIAL_ID" => $arSerial["ID"]); } if (floatval($perc) > 60 && floatval($perc_2) > 40 && $time_perc > 70) { if (!in_array($arItem["ID"], $arTableItems)) { $datetime = new \Bitrix\Main\Type\DateTime(date("Y-m-d H:i:s", strtotime($arItem["JSON"]["publishedAt"])), 'Y-m-d H:i:s'); $arFields = array("UF_TITLE" => $arItem["TITLE"], "UF_EXTERNAL_ID" => $arItem["ID"], "UF_SERIAL_ID" => $arSerial["ID"], "UF_THUMBNAIL_URL" => $arItem["THUMBNAIL_URL"], "UF_VIDEO_URL" => $arItem["VIDEO_URL"], "UF_JSON" => $arItem["JSON"], "UF_DATETIME" => $datetime); $result = \Hawkart\Megatv\ProgExternalTable::add($arFields); if ($result->isSuccess()) { $arTableItems[] = $arItem["ID"]; } else { $errors = $result->getErrorMessages(); } } break; } } } file_put_contents($file_50_60, json_encode($arToFile)); }