public static function main($id, $tracker, $name, $hd, $ep, $timestamp) { //проверяем небыло ли до этого уже ошибок if (empty(lostfilm::$exucution) || lostfilm::$exucution) { //проверяем получена ли уже кука if (empty(lostfilm::$sess_cookie)) { $cookie = Database::getCookie($tracker); if (lostfilm::checkCookie($cookie)) { lostfilm::$sess_cookie = $cookie; //запускам процесс выполнения lostfilm::$exucution = TRUE; } else { lostfilm::getCookie($tracker); } } //проверяем получена ли уже RSS лента if (!lostfilm::$log_page) { if (lostfilm::$exucution) { //получаем страницу lostfilm::$page = lostfilm::getContent(); lostfilm::$page = str_replace('<?xml version="1.0" encoding="windows-1251" ?>', '<?xml version="1.0" encoding="utf-8"?>', lostfilm::$page); if (!empty(lostfilm::$page)) { //читаем xml lostfilm::$xml_page = @simplexml_load_string(lostfilm::$page); //если XML пришёл с ошибками - останавливаем выполнение, иначе - ставим флажок, что получаем страницу if (!lostfilm::$xml_page) { //устанавливаем варнинг if (lostfilm::$warning == NULL) { lostfilm::$warning = TRUE; Errors::setWarnings($tracker, 'rss_parse_false'); } //останавливаем выполнение цепочки lostfilm::$exucution = FALSE; } else { lostfilm::$log_page = TRUE; } } else { //устанавливаем варнинг if (lostfilm::$warning == NULL) { lostfilm::$warning = TRUE; Errors::setWarnings($tracker, 'not_available'); } //останавливаем выполнение цепочки lostfilm::$exucution = FALSE; } } } //если выполнение цепочки не остановлено if (lostfilm::$exucution) { if (!empty(lostfilm::$xml_page)) { //сбрасываем варнинг Database::clearWarnings($tracker); $nodes = array(); foreach (lostfilm::$xml_page->channel->item as $item) { array_unshift($nodes, $item); } foreach ($nodes as $item) { $serial = lostfilm::analysis($name, $hd, $item); if (!empty($serial)) { $episode = substr($serial['episode'], 4, 2); $season = substr($serial['episode'], 1, 2); if (!empty($ep)) { if ($season == substr($ep, 1, 2) && $episode > substr($ep, 4, 2)) { $download = TRUE; } elseif ($season > substr($ep, 1, 2) && $episode < substr($ep, 4, 2)) { $download = TRUE; } else { $download = FALSE; } } elseif ($ep == NULL) { $download = TRUE; } else { $download = FALSE; } if ($download) { if ($hd == 1) { $amp = 'HD'; } elseif ($hd == 2) { $amp = 'MP4'; } else { $amp = NULL; } if (Database::getSetting('download')) { $torrent = lostfilm::getTorrent($serial['link'], lostfilm::$sess_cookie); $file = '[lostfilm.tv]_' . $name . '_' . $serial['episode'] . '_' . $amp . '.torrent'; //сохраняем торрент в файл $client = ClientAdapterFactory::getStorage('file'); $client->store($torrent, $id, $tracker, $name, $id, $timestamp, array('filename' => $file)); } //обновляем время регистрации торрента в базе Database::setNewDate($id, $serial['date']); //обновляем сведения о последнем эпизоде Database::setNewEpisode($id, $serial['episode']); $episode = substr($episode, 0, 1) == 0 ? substr($episode, 1, 1) : $episode; $season = substr($season, 0, 1) == 0 ? substr($season, 1, 1) : $season; //отправляем уведомлении о новом торренте $message = $name . ' ' . $amp . ' обновлён до ' . $episode . ' серии, ' . $season . ' сезона.'; Notification::sendNotification('notification', lostfilm::dateNumToString($serial['date']), $tracker, $message); } } } } } } }