From be5ea1202478cc59cf13ad4cd64b695f4f78832f Mon Sep 17 00:00:00 2001 From: hylom Date: Thu, 3 Aug 2017 22:36:10 +0900 Subject: [PATCH] * utils/tools/import_sd_blocks: add codes for boxes import --- src/utils/tools/import_sd_blocks.pl | 104 ++++++++++++++++++++++++++++++------ 1 file changed, 88 insertions(+), 16 deletions(-) diff --git a/src/utils/tools/import_sd_blocks.pl b/src/utils/tools/import_sd_blocks.pl index 6043b209..d84ea509 100755 --- a/src/utils/tools/import_sd_blocks.pl +++ b/src/utils/tools/import_sd_blocks.pl @@ -13,12 +13,37 @@ BEGIN { use Newslash::Util; use Newslash::Model::Feeds; +use Newslash::Model::Boxes; use Newslash::Model::Cowrapper; sub main { + #generate_all(); + + generate_boxes(); +} + +sub generate_boxes { + my $config = Newslash::Util->load_config; + my $feeds = new Newslash::Model::Feeds($config); + my $boxes = new Newslash::Model::Boxes($config); + + my $fs = $feeds->select; + if (!$fs) { + die "query feeds failed..."; + } + + for my $feed (@$fs) { + my $url = $feed->{url}; + my $xml_feed = $feeds->fetch_url(\$url); + my $box_id = create_box($boxes, $feed, $xml_feed->link); + } +} + +sub generate_all { my $config = Newslash::Util->load_config; my $cow = new Newslash::Model::Cowrapper($config); my $feeds = new Newslash::Model::Feeds($config); + my $boxes = new Newslash::Model::Boxes($config); my $sql = <<"EOSQL"; SELECT * FROM blocks WHERE rdf IS NOT NULL @@ -34,26 +59,73 @@ EOSQL if (!$url || !length($url)) { next; } + my ($xml_feed, $feed_id) = create_feed($feeds, $url, $block); + next if !$feed_id; - my $feed = $feeds->fetch_url(\$url); - if (!$feed) { - my $err = $feeds->last_error; - print "fetch $url failed - $err\n"; - next; - } + my $feed = $feeds->select(feed_id => $feed_id); next if !$feed; - my $feed_id = $feeds->create(url => $url, - title => $block->{title}, - description => $feed->description); - if ($feed_id) { - print "create $block->{title} (id: $feed_id).\n"; - } - else { - my $err = $feeds->last_error; - print "create $block->{title} failed - $err\n"; - } + my $box_id = create_box($boxes, $feed, $xml_feed->link, $block); + + } +} + +sub create_box { + my ($boxes, $feed, $url) = @_; + + my $title = $feed->{title}; + my $header_line = "

$title

\n"; + my $template_body = <<'EOT'; + +EOT + my $template = $header_line . $template_body; + my $params = { name => $feed->{name}, + title => $feed->{title}, + comment => $feed->{description}, + type => "feed", + model => "feed_items", + query_params => "{ \"feed_name\": \"$feed->{name}\" }", + limit => 10, + template => $template, + }; + my $box_id = $boxes->create($params); + if (!$box_id) { + my $err = $boxes->last_error; + print "create box $feed->{title} failed - $err\n"; + return; + } + print "create box $feed->{title} (id: $box_id).\n"; + + return $box_id; +} + +sub create_feed { + my ($feeds, $url, $block) = @_; + + my $feed = $feeds->fetch_url(\$url, timeout => 10); + if (!$feed) { + my $err = $feeds->last_error; + print "fetch $url failed - $err\n"; + next; + } + return if !$feed; + + my $feed_id = $feeds->create(url => $url, + name => $block->{bid}, + title => $block->{title}, + description => $feed->description, + ); + if (!$feed_id) { + my $err = $feeds->last_error; + print "create $block->{title} failed - $err\n"; + return; } + print "create feed $block->{title} (id: $feed_id).\n"; + return ($feed, $feed_id); } -- 2.11.0