利用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
新浪blog如果无法保存,脚本出现错误,您可以将ie升级到ie8,就可以了。
这个插件真是非常好用!谢谢!
好东西!谢谢。
运行报错,显示在这一行
return channelNode.childNodes;
缺少对象
代码 800A01A8
环境: IE7 xp sp3 不知道是什么原因
你用的版本是什么?