public static function getSerials() { $arSerials = array(); $result = \Hawkart\Megatv\SerialTable::getList(array('filter' => array("!UF_EPG_ID" => false, "!UF_EXTERNAL_URL" => false), 'select' => array("UF_EPG_ID", "ID", "UF_EXTERNAL_URL", "UF_EXTERNAL_TITLE"))); while ($row = $result->fetch()) { $arSerials[$row["UF_EPG_ID"]] = $row; } $this->arSerials = $arSerials; }
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } global $USER, $APPLICATION; $arResult = array(); $arResult = array(); $arFilter = array("!UF_EPG_ID" => false, "!UF_EXTERNAL_URL" => false); $arSelect = array("ID", "UF_TITLE", "UF_EPG_ID", "UF_DESC"); $arOrder = array("UF_TITLE" => "ASC"); $obCache = new \CPHPCache(); if ($obCache->InitCache(86400, serialize($arFilter) . serialize($arSelect) . serialize($arOrder), "/serialList/")) { $arResult["ITEMS"] = $obCache->GetVars(); } elseif ($obCache->StartDataCache()) { $result = \Hawkart\Megatv\SerialTable::getList(array('filter' => $arFilter, 'select' => $arSelect, 'order' => $arOrder)); while ($row = $result->fetch()) { $arResult["ITEMS"][] = $row; } $obCache->EndDataCache($arResult["ITEMS"]); } $this->IncludeComponentTemplate();
/** * Import all serials href from resource to db */ public static function importSerialsByWeek() { $arTableSerials = array(); $result = \Hawkart\Megatv\SerialTable::getList(array('filter' => array("!UF_EPG_ID" => false, "UF_EXTERNAL_URL" => "%rutube%"), 'select' => array("ID", "UF_TITLE", "UF_EXTERNAL_URL"))); while ($row = $result->fetch()) { $serial_id = preg_replace("/[^0-9]/", "", $row["UF_EXTERNAL_URL"]); $arTableSerials[$serial_id] = $row; } foreach ($arTableSerials as $serial_id => $arSerial) { $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"]; } $arItems = self::search($arSerial["UF_TITLE"], "week", $serial_id); /** * Add items for serials in db table */ foreach ($arItems as $arItem) { if (!in_array($arItem["ID"], $arTableItems)) { $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"]); $result = \Hawkart\Megatv\ProgExternalTable::add($arFields); if ($result->isSuccess()) { $arTableItems[] = $arItem["ID"]; } else { $errors = $result->getErrorMessages(); } } } } }
/** * Add new serials to the table Serials */ public static function guessSerials() { /** * Get serials list */ $arSerials = array(); $result = SerialTable::getList(array('filter' => array("!UF_EPG_ID" => false), 'select' => array("UF_EPG_ID", "ID", "UF_CHANNEL_ID"))); while ($row = $result->fetch()) { $arSerials[$row["UF_EPG_ID"]] = $row; } /** * Get prog's list */ $arProgs = array(); $result = ProgTable::getList(array('filter' => array(), 'select' => array("UF_EPG_SUB_ID", "ID", "UF_TITLE", "UF_EPG_ID"))); while ($row = $result->fetch()) { if (!empty($row["UF_EPG_SUB_ID"])) { $arProgs[$row["UF_EPG_ID"]] = $row["UF_TITLE"]; } } foreach ($arProgs as $epg_id => $serial_title) { if (empty($arSerials[$epg_id])) { $arFields = array("UF_EPG_ID" => $epg_id, "UF_TITLE" => $serial_title); $result = SerialTable::add($arFields); if ($result->isSuccess()) { $serial_id = $result->getId(); $arSerials[$epg_id] = array("ID" => $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)); }