first commit
This commit is contained in:
148
application/controllers/admin/delete.later/cron_cd_kr.php
Executable file
148
application/controllers/admin/delete.later/cron_cd_kr.php
Executable file
@@ -0,0 +1,148 @@
|
||||
<?php
|
||||
error_reporting(0);
|
||||
ini_set('display_errors',0);
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
//header("Content-Type: text/html; charset=UTF-8");
|
||||
|
||||
#include_once(APPPATH.'core/web/cm_exceptions.php');
|
||||
class cron_cd_kr extends CI_Controller{
|
||||
|
||||
var $tb_name = 'news_from_christiandaily_kr'; // db table name
|
||||
var $news_tb_name = 'news';
|
||||
var $limit = 10; // max # of crawled article to migrate data into news table.
|
||||
|
||||
|
||||
function get_file_name($fname) {
|
||||
if(trim($fname)!='') {
|
||||
$tmp = explode('/',$fname);
|
||||
$fname = trim(array_pop($tmp));
|
||||
return $fname;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* cd article crawler from rss link
|
||||
*/
|
||||
function index() {
|
||||
|
||||
$rss_link = 'http://www.christiandaily.co.kr/rss/articles/topnews/all.rss';
|
||||
$rss = file_get_contents($rss_link);
|
||||
|
||||
if($rss==false) {
|
||||
echo date("Y-m-d H:i:s")." can not crawl rss feed.\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
$this->load->database();
|
||||
|
||||
$dom = new DOMDocument;
|
||||
$dom->preserveWhiteSpace = false;
|
||||
$dom->loadXML($rss);
|
||||
|
||||
$i = 0;
|
||||
$cnt = 0;
|
||||
$fail_cnt = 0;
|
||||
$ret = [];
|
||||
|
||||
while(is_object($row = $dom->getElementsByTagName('item')->item($i))) {
|
||||
foreach($row->childNodes as $nodename) {
|
||||
$retdate = date("Y-m-d H:i:s");
|
||||
if($nodename->nodeName=='title') {
|
||||
$ret[$i]['title'] = $nodename->nodeValue;
|
||||
} else if($nodename->nodeName=='description') {
|
||||
$ret[$i]['description'] = $nodename->nodeValue;
|
||||
} else if($nodename->nodeName=='link') {
|
||||
$ret[$i]['link'] = $nodename->nodeValue;
|
||||
} else if($nodename->nodeName=='media:content') {
|
||||
$ret[$i]['image'] = $nodename->getAttribute('url');
|
||||
} else if($nodename->nodeName=='pubDate') {
|
||||
$ret[$i]['pubdate'] = $nodename->nodeValue;
|
||||
$regdate = strtotime($ret[$i]['pubdate']);
|
||||
if($regdate>0) {
|
||||
$regdate = date("Y-m-d H:i:s",$regdate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//upload main image
|
||||
$dest_file_name = '';
|
||||
if($ret[$i]['image']!='') {
|
||||
$upload_path = '/home/crossmap/files/news/'.date("Y")."/".date("m");
|
||||
if (!is_dir($upload_path)) {
|
||||
mkdir($upload_path, 0777, TRUE);
|
||||
}
|
||||
$fname = date("Ymd-His-").$this->get_file_name($ret[$i]['image']);
|
||||
$dest_file_name = $upload_path.'/'.$fname;
|
||||
if(file_put_contents($dest_file_name, file_get_contents($ret[$i]['image']))==false) {
|
||||
echo "\nfile not restored\n";
|
||||
$dest_file_name = '';
|
||||
}
|
||||
}
|
||||
|
||||
$dest_file_name = ($dest_file_name!='') ? str_replace('/home/crossmap','',$dest_file_name) : '';
|
||||
|
||||
$sql = "INSERT IGNORE INTO ".$this->tb_name." (".
|
||||
"title, content, main_img, ".
|
||||
"origin_url, regdate) VALUES (".
|
||||
"'".addslashes($ret[$i]['title'])."', '".addslashes($ret[$i]['description'])."', '".$dest_file_name."', ".
|
||||
"'".$ret[$i]['link']."', '$regdate')";
|
||||
$return = $this->db->query($sql);
|
||||
|
||||
if($return==true) {
|
||||
$cnt++;
|
||||
|
||||
} else {
|
||||
$fail_cnt++;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
echo date("Y-m-d H:i:s").' / success : '.$cnt.' / fail cnt : '.$fail_cnt."\n";
|
||||
}
|
||||
|
||||
function migrate_cd_article_to_news() {
|
||||
$this->load->database();
|
||||
$ten_days_before = date("Y-m-d",(time()-(60*60*24*10))).' 00:00:00';
|
||||
|
||||
$sql = "SELECT idx, title, content, main_img, origin_url, regdate FROM ".$this->tb_name." ".
|
||||
"WHERE registered_tf=0 AND crawldate>='$ten_days_before' ".
|
||||
"ORDER BY idx ASC LIMIT ".$this->limit;
|
||||
|
||||
$query = $this->db->query($sql);
|
||||
$cnt = 0;
|
||||
$fail_cnt = 0;
|
||||
foreach($query->result_array() as $row) {
|
||||
if($row['main_img']!='') {
|
||||
$row['content'] = nl2br(addslashes('<p style="line-height: 1.8;"><span style="font-family: 나눔고딕코딩, NanumGothicCoding, sans-serif; font-size: 9pt;"><img src="'.$row['main_img'].'" /></span></p><br style="clear:both;">'.$row['content']));
|
||||
}
|
||||
|
||||
$sql = "INSERT INTO ".$this->news_tb_name." (".
|
||||
"category_code, news_type, title, ".
|
||||
"sub_title, main_img, press_idx, ".
|
||||
"press_name, content, org_url, ".
|
||||
"is_del, is_display) VALUES (".
|
||||
"'12', 1, '".addslashes($row['title'])."', ".
|
||||
"'".addslashes($row['title'])."', '".addslashes($row['main_img'])."', 30, ".
|
||||
"'기독일보', '".addslashes($row['content'])."', '".$row['origin_url']."', ".
|
||||
"'N', 'N')";
|
||||
|
||||
echo $sql."\n";
|
||||
$ret = $this->db->query($sql);
|
||||
if($ret==true) {
|
||||
$idx = $row['idx'];
|
||||
$sql = "UPDATE ".$this->tb_name." SET ".
|
||||
"registered_tf=1 WHERE idx='$idx'";
|
||||
$this->db->query($sql);
|
||||
$cnt++;
|
||||
}else{
|
||||
$fail_cnt++;
|
||||
//echo $sql."\n";
|
||||
exit;
|
||||
}
|
||||
}
|
||||
echo date("Y-m-d H:i:s").' / succeess : '.$cnt.' / fail cnt : '.$fail_cnt."\n";
|
||||
|
||||
}
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user