首页 > CyberArticle > 利用CyberArticle定时自动下载保存博客的新文章

利用CyberArticle定时自动下载保存博客的新文章


利用CyberArticle的二次开发功能,可以很容易的写一个下载博客文章的脚本。然后利用计划任务,定时运行,就可以自动下载保存任意博客的文章了。

下面就是脚本代码:(善用佳软的例子)

/*
功能:
定期将博客中新增的文章,保存到 [博客集合] 书籍中。

注意:
对于Windows Vista/7系统,如果您开启了账户控制,第一次运行本脚本的时候,请这样操作:
1:资源管理器,找到CyberArticle安装目录,例如:C:\Program Files\WizBrother\CyberArticle
2:找到regfiles.bat文件,然后在上面点击鼠标右键,选择“以管理员运行”(Run as Administrator)


其他操作系统,不需要这个操作。

使用说明:
请修改以下参数:
BOOK_NAME:默认的书籍名称。您可以修改这个参数,将数据保存到您指定的书籍中。也可以不作修改,CyberArticle会自动创建这个书籍。
BLOG_NAME:博客名称,例如善用佳软,魏拾俊的博客等等。
RSS_URL:博客的RSS地址。

注意:

每个博客,只保存一次,即使有新的回复,也不会重新保存。新保存的文章,保存在 博客集合\博客名称\XXXX年\X月\X日 文件夹内

使用:
双击运行这个脚本就可以了。运行后会自动将新的文章保存到书籍中。

技巧:

您可以将这个脚本放在程序的启动组里面,每次启动电脑后,可以自动运行。
或者添加到计划任务中,在每天空闲的时刻,例如中午吃饭时间运行。吃完饭后,就可以看到最新的文章了。
如果您同时喜欢看很多的博客,您可以利用这个脚本,制作多个这样的脚本,然后加入计划任务,自动运行,每天都可以自动将所有的博客自动保存。
//
http://weishijun.com/
*/

//
//—————————————————-
//博客定时保存脚本参数
//注意:引号必须是英文半角
//书籍名称
var BOOK_NAME = “博客集合”;
//Blog名称
var BLOG_NAME = “善用佳软”;
//Blog的RSS地址
var RSS_URL = “http://feed.xbeta.info/”
//
//
//
//—————————————————-
var objShell = new ActiveXObject(“WScript.Shell”);
var objCommonUI = new ActiveXObject(“CyberArticleCommonUI.CACommonUI”);
function jsAlert(msg)
{
    return objShell.Popup(msg, 10000, “CyberArticle”, 0);
}
//获得MyBooks文件夹。如果是绿色版本,则默认保存在安装目录下面的My Books文件夹
function GetMyBooksPath()
{
    var strMyBooksPath = objShell.RegRead(“HKEY_CURRENT_USER\\Software\\WizBrother\\CyberArticle\\MyBooksFolder”);
    if (strMyBooksPath == null || strMyBooksPath == “”)
    {
        var objCyberArticleAppPath = objCommonUI.CyberArticleAppPath;
        return objCyberArticleAppPath + “My Books\\”;
    }
    //
    if (strMyBooksPath[strMyBooksPath.length - 1] != ‘\\’)
        strMyBooksPath = strMyBooksPath + “\\”;
    //
    return strMyBooksPath;
}
//有些系统无法正常创建BookBuilder对象,先注册BookBuilder.exe
function RegBookBuilder()
{
    var objCyberArticleAppPath = objCommonUI.CyberArticleAppPath;
    var filename = objCyberArticleAppPath + “bookbuilder.exe”;
    var commandline = “\”" + filename + “\” /RegServer”
    //
    objShell.Exec(commandline);
    //等待2秒钟
    WScript.Sleep(2000);
}
/*
function RunBookBuilder()
{
    RegBookBuilder();
    //
    var objCyberArticleAppPath = objCommonUI.CyberArticleAppPath;
    var filename = objCyberArticleAppPath + “bookbuilder.exe”;
    //
    var oExec = objShell.Exec(filename);
    //
    //等待2秒钟
    WScript.Sleep(2000);
}
*/

//找到channel
function GetItemNodes()
{
    var objXml = new ActiveXObject(“MSXML.DOMDocument”);
    objXml.async = false;
    objXml.load(RSS_URL);
    //
    var channelNode = objXml.selectSingleNode(“/rss/channel”);
    //
    return channelNode.childNodes;
}
 
//c查找书籍,按照书籍名称
var objBookCollection = new ActiveXObject(“CyberArticleBook.CABookCollection”);
var bookguid = null;
for (var i = 0; i < objBookCollection.Count; i++)
{
    if (objBookCollection.BookName(i) == BOOK_NAME)
    {
        bookguid = objBookCollection.GUID(i);
        break;
    }
}
//如果没有找到,新增
if (bookguid == null || bookguid.length == 0)
{
    var strNewBookFileName = GetMyBooksPath() + BOOK_NAME + “.xbook”;
    var objBookTools = new ActiveXObject(“CyberArticleBookTools.CABookTools”);
    bookguid = objBookTools.CreateAccessBook(strNewBookFileName);
}
//打开书籍
var objBook = new ActiveXObject(“CyberArticleBook.CABook”);
objBook.Open(bookguid);
//
var myDate=new Date();
var year = myDate.getFullYear();
var month = myDate.getMonth() + 1;
var day = myDate.getDate();
//
var folderpath = BLOG_NAME + “\\” + year + “年\\” + month + “月\\” + day + “日\\”;
//
//
var arrayLinks = new Array();
//
var nodes = GetItemNodes();
for (var i = 0; i < nodes.length; i++)
{
    var node = nodes[i];
    //
    if (node.nodeType != 1)
        continue;
    //
    if (node.nodeName != “item”)
        continue;
    //
    var linkNode = node.selectSingleNode(“link”);
    if (null == linkNode)
        continue;
    //
    //
    var link = linkNode.text;
    if (link == null || link.length == 0)
        continue;
    //
    try
    {
        //检查是否已经保存,如果保存,继续
        var nodesBook = objBook.NodesFromURL(link);
        if (nodesBook != null && nodesBook.Count > 0)
            continue;
    }
    catch (e)
    {
    }
    //
    var titleNode = node.selectSingleNode(“title”);
    var title = null;
    if (titleNode != null)
        title = titleNode.text;
    if (title == null)
        title = “”;
    //
    arrayLinks.push(link);
    arrayLinks.push(title);
}
//下载任务
if (arrayLinks.length > 0)
{
    RegBookBuilder();
    //
    var objCABookBuilder = new ActiveXObject(“CyberArticle.CABookBuilderAutomationApp”);
    //
    for (var i = 0; i < arrayLinks.length; i += 2)
    {
        var link = arrayLinks[i];
        var title = arrayLinks[i + 1];
        //
        if (title.length == 0)
        {
            objCABookBuilder.AddJob(bookguid, folderpath, link, title, “Default”, 0, false, true, 0);
        }
        else
        {
            objCABookBuilder.AddJob(bookguid, folderpath, link, title, “Default”, 0, true, true, 0);
        }
    }
    //
    objCABookBuilder.StartDownload();
}

附件是我制作的三个脚本,您可以拿来进行修改。以满足您的需求。

如果您制作了其它的脚本,可以到这里共享给其他用户。

http://cn.wizbrother.net/forum-23-1.html

 

 


分类: CyberArticle 标签:
  1. 魏 拾俊
    2009年6月15日09:16 | #1

    新浪blog如果无法保存,脚本出现错误,您可以将ie升级到ie8,就可以了。

  2. 冰河洗剑
    2009年6月21日04:36 | #2

    这个插件真是非常好用!谢谢!

  3. yfliu
    2009年7月7日07:09 | #3

    好东西!谢谢。

  4. wowwang
    2009年9月2日01:49 | #4

    运行报错,显示在这一行
    return channelNode.childNodes;
    缺少对象
    代码 800A01A8
    环境: IE7 xp sp3 不知道是什么原因

  5. 魏 拾俊
    2009年9月6日11:48 | #5

    你用的版本是什么?

  1. 本文目前尚无任何 trackbacks 和 pingbacks.

Spam Protection by WP-SpamFree