Новичок
Профиль
Группа: Участник
Сообщений: 35
Регистрация: 19.6.2009
Репутация: нет Всего: нет
|
Собственно есть скрипт (модуль для дле) каторый парсит с сервиса обновлений одной пп новости и добавляет их в БД | Код | <?php /* table prefix */ $table_prefix = USERPREFIX."_";
/* no time limit */ set_time_limit(0);
/* getting all the categories */ $categories = array(); $result = $db->query("SELECT * FROM ".$table_prefix."category"); while($category = $result->fetch_array()) { $categories[] = $category['alt_name']; $categories[$category['alt_name']] = $category['parentid']; }
$genre_cats = array(); /* categories for genres */ foreach ($movieshop_data_genres as $key => $gnr) { if ((!in_array(strtolower($gnr[0]), $categories)) && (in_array($key, explode(",", MOVIESHOP_DATA_GENRES)))) { $db->query("INSERT INTO ".$table_prefix."category (`name`, `parentid`, `alt_name`, `keywords`) VALUES ('".$gnr[1]."', ".MOVIESHOP_PARENT_ID.", '".strtolower($gnr[0])."', '')"); } $result = $db->query("SELECT `id` FROM ".$table_prefix."category WHERE `alt_name` = '".strtolower($gnr[0])."'"); $row = $result->fetch_array(); $genre_cats[$key] = $row['id']; }
/* author */ $author = $member_id['name'];
/* updating posts */ movieshop_log(); movieshop_log("Скачиваю новости.."); $counter=0; $ucounter=0;
$steps = 0; $from = 0; $how_much = 200; $posts_count = $how_much;
while($posts_count == $how_much) { $data = movieshop_get_data("dle_posts", $from, $how_much); $steps += 1; $from += $how_much; $posts_count = count($data); movieshop_log("Получаю данные с сервера.."); movieshop_log("Шаг ".$steps.". Получено ".$posts_count." свежих новостей с сервера обновлений"); movieshop_log("Обновляю базу.."); if ($data) { foreach($data as $post) { $post_date = date("Y-m-d H:i:s", $post['date']); $post_date_gmt = date("Y-m-d H:i:s", $post['date']); $post_url = $post['url']; $post_title = $post['title']." (".$post['year'].")"; $post_cover = $post['cover']; if (MOVIESHOP_LOCAL_COVERS == 'yes') { $post_cover = "/covers/".base64_encode($post['cover']).".jpg"; } /* generating post */ $post_text = ""; if ($post_cover != "") { $cover=$post_cover; }
/* actors */ $actors = explode("|", $post['actors']); $actors_str = array(); $actors_cnt = 0; foreach($actors as $actor) { $actors_cnt ++; if ($actors_cnt <= 10) { $tmp = explode(":", $actor); $actors_str[] = $tmp[1]; //Актеры } } /* directors */ $directors = explode("|", $post['directors']); $directors_str = array(); foreach($directors as $director) { $tmp = explode(":", $director); $directors_str[] = $tmp[1]; // Режиссер } $post_text .= $post['text']; $post_short_text = ""; $post_short_text .= $post['text']; $post_text = $db->db_id->escape_string($post_text); $post_short_text = $db->db_id->escape_string($post_short_text); $post_title = $db->db_id->escape_string($post_title); $post_terms = explode("|", $post['terms']); $post_keywords = implode(", ", $post_terms); $post_categories = array(); $post_genres = explode("|", $post['genres']); foreach($post_genres as $post_genre) { foreach ($movieshop_data_genres as $key => $gnr) { if (($post_genre == $gnr[0]) || ($post_genre == $gnr[1])) { $post_categories[] = $genre_cats[$key]; } } } $category_ids = implode(",", $post_categories); /* // deleting all the posts with the same alt_name and categories if (trim($post_url) != "") { $query = "DELETE FROM ".$table_prefix."post WHERE `autor` = '".$author."' AND `category` = '".$category_ids."' AND `alt_name` = '".$post_url."';"; $db->query($query); } */ // updating the post if it already exists $just_updated_flag = 0; if (trim($post_url) != "") { $query = "SELECT * FROM ".$table_prefix."post WHERE `autor` = '".$author."' AND `category` = '".$category_ids."' AND `alt_name` = '".$post_url."' LIMIT 1;"; if ($db->query($query)->num_rows > 0) { $query = "UPDATE ".$table_prefix."post SET `date` = '".$post_date."', `short_story` = '".$post_short_text."', `full_story` = '".$post_text."', `title` = '".$post_title."' WHERE `autor` = '".$author."' AND `category` = '".$category_ids."' AND `alt_name` = '".$post_url."' LIMIT 1;"; $db->query($query); if ($db->db_id->errno == 0) { $just_updated_flag = 1; if ($db->db_id->affected_rows) { $ucounter++; } } else { print $db->db_id->error; print "<br />".$query; exit(); } } } // else just inserting the new post $read=rand(10, 20); $year=$post['year']; //Год if (($post['film_trailers'] != "") && ($post['film_trailers'] != null)) { $trailer= stripslashes($post['film_trailers']); //Трейлер $xfilds="trailer|".$trailer."||cover|".$cover."||year|".$year."||director|".implode(", ", $directors_str)."||actors|".implode(", ", $actors_str); } else $xfilds="cover|".$cover."||year|".$year."||director|".implode(", ", $directors_str)."||actors|".implode(", ", $actors_str); $xfilds=$db->db_id->escape_string($xfilds); if (!$just_updated_flag) { $query = "INSERT INTO ".$table_prefix."post (`autor`, `date`, `short_story`, `full_story`, `descr`, `xfields`, `title`, `keywords`, `category`, `alt_name`, `tags`, `allow_comm`, `allow_main`, `allow_rate`, `approve`, `allow_br`, `flag`, `rating`, `vote_num`, `news_read`) VALUES ('".$author."', '".$post_date."', '".$post_short_text."', '".$post_text."', '', '".$xfilds."', '".$post_title."', '".$post_keywords."', '".$category_ids."', '".$post_url."', '".$post_keywords."', 1, 1, 1, 1, 1, 1, 10, 2, ".$read.");"; $db->query($query); if ($db->db_id->errno == 0) { $post_id = $db->db_id->insert_id; if ($post_id > 0) { /* updating tags for that post */ foreach($post_terms as $term) { $db->query("INSERT INTO ".$table_prefix."tags (`news_id`, `tag`) VALUES (".$post_id.", '".$term."');"); } $counter++; } } else { print $db->db_id->error; print "<br />".$query; exit(); } } } } } movieshop_log("Готово"); movieshop_log(""); movieshop_log("Новостей добавлено: ".$counter); movieshop_log("Новостей обновлено: ".$ucounter);
/* updating last_update time in MovieShop config */ if (($counter > 0) || ($ucounter > 0)) { movieshop_update_config(MOVIESHOP_PARENT_SHOP_URL, MOVIESHOP_DISTRIBUTOR_ID, MOVIESHOP_LANGUAGE, MOVIESHOP_UPDATE_SERVER, MOVIESHOP_COVERS, MOVIESHOP_DATA_GENRES, MOVIESHOP_DATA_YEARS, MOVIESHOP_LOCAL_COVERS, MOVIESHOP_PARENT_ID, time()); }
movieshop_log(); movieshop_log("База DLE успешно обновлена");
/* clearing DLE cache */ @unlink( ENGINE_DIR . '/cache/system/usergroup.php' ); @unlink( ENGINE_DIR . '/cache/system/vote.php' ); @unlink( ENGINE_DIR . '/cache/system/banners.php' ); @unlink( ENGINE_DIR . '/cache/system/category.php' ); @unlink( ENGINE_DIR . '/cache/system/banned.php' ); @unlink( ENGINE_DIR . '/cache/system/cron.php' ); @unlink( ENGINE_DIR . '/cache/system/informers.php' ); clear_cache(); ?>
|
Этот скрипт работает с доп полями 1. year 2. director 3. actors 4. cover 5. trailer помогите переделать чтоб он работал с моими доп полями title|Название||text||1 original|Оригинал||text||1 poster|Постер||text||1 year|год||text||1 director|Режиссер||text||1 casting|В ролях||text||1 quality|Качество||text||1 translate|Перевод||text||1 size|Размер||text||1 format|Формат||text||1 formatp|Разшерение||text||1 audio|Аудио кодек||text||1 sub|Субтитры||text||1 trailer|Трейлер||textarea||1 screen|Скришоты||textarea||1 reviews|Рецензии||textarea||1 links|Ссылки||textarea||1 вот ссылка на полный модуль (с остальными файлами) http://new-kino.pp.ua/dleplugin.rar
|