将IE收藏夹里面的文章导入到CyberArticle
附件是一段js脚本,解压缩执行后,可以将IE收藏夹内容导入到CyberArticle里面。
注意:本脚本只能在CyberArticle 5.3或者更高的版本中使用。
下面是这段代码说明。
//导入一个目录下面的所有链接,采用递归
//bookguid: 目标书籍GUID
//folderpath: 导入后文章的路径
//objCABookBuilder: CyberArticle.CABookBuilderAutomationApp对象
//objShell: WSript.Shell对象
//objFileSystem: Scripting.FileSystemObject对象
//path: 需要导入的路径
//
function ImportPath(bookguid, folderpath, objCABookBuilder, objShell, objFileSystem, path)
{
//获得路径对象
var objFolder = objFileSystem.GetFolder(path);
//枚举文件
var objSubfilesEnum = new Enumerator(objFolder.Files);
for (; !objSubfilesEnum.atEnd(); objSubfilesEnum.moveNext())
{
//获得文件
var filename = objSubfilesEnum.item();
var objFile = objFileSystem.GetFile(filename);
//
var strFileTitle = objFile.Name;
var pos = strFileTitle.indexOf(“.url”);
if (-1 != pos)
{
//如果是.url文件
strFileTitle = strFileTitle.substring(0, pos);
//objShell.Popup(“file name is: ” + filename);
//
try
{
var objShortcut = objShell.CreateShortcut(filename);
//
//objShell.Popup(objShortcut.TargetPath);
var url = objShortcut.TargetPath;
//
//添加一个url进行下载
objCABookBuilder.AddJob(bookguid, folderpath, url, strFileTitle, “Default”, 0, true, true, 0);
}
catch (e)
{
}
}
}
//枚举子文件夹
var objSubfoldersEnum = new Enumerator(objFolder.SubFolders);
for (; !objSubfoldersEnum.atEnd(); objSubfoldersEnum.moveNext())
{
var subfolder = objSubfoldersEnum.item();
//
var objSubFolder = objFileSystem.GetFolder(subfolder);
var subfoldername = objSubFolder.Name;
//导入子文件夹
ImportPath(bookguid, folderpath + “\\” + subfoldername, objCABookBuilder, objShell, objFileSystem, subfolder);
}
}
//CyberArticle.CAAutomationApp对象
var objCA = new ActiveXObject(“CyberArticle.CAAutomationApp”);
//获得选中的节点
var objSelectedNodes = objCA.SelectedNodes;
if (objSelectedNodes != null && objSelectedNodes.Count > 0)
{
var objShell = new ActiveXObject(“WScript.Shell”);
//
//获得第一个选中的节点
var objSelectedNode = objSelectedNodes.Item(0);
if (objSelectedNode.Type != 0)
objSelectedNode = objSelectedNode.ParentNode;
//
//获得书籍信息和相应的目录路径
var strBookGUID = objSelectedNode.Book.GUID;
var folderpath = objSelectedNode.GetTitlePath(true, false);
//objShell.Popup(“title path: ” + folderpath);
//创建BookBuilder对象,用来下载链接
var objCABookBuilder = new ActiveXObject(“CyberArticle.CABookBuilderAutomationApp”);
//获得收藏夹路径
var strPath = objShell.SpecialFolders(“Favorites”);
strPath = objShell.ExpandEnvironmentStrings(strPath);
//objShell.Popup(strPath);
//获得文件夹对象
var objFileSystem = new ActiveXObject(“Scripting.FileSystemObject”);
//导入文件夹
ImportPath(strBookGUID, folderpath, objCABookBuilder, objShell, objFileSystem, strPath);
//开始下载
objCABookBuilder.StartDownload();
}
//bookguid: 目标书籍GUID
//folderpath: 导入后文章的路径
//objCABookBuilder: CyberArticle.CABookBuilderAutomationApp对象
//objShell: WSript.Shell对象
//objFileSystem: Scripting.FileSystemObject对象
//path: 需要导入的路径
//
function ImportPath(bookguid, folderpath, objCABookBuilder, objShell, objFileSystem, path)
{
//获得路径对象
var objFolder = objFileSystem.GetFolder(path);
//枚举文件
var objSubfilesEnum = new Enumerator(objFolder.Files);
for (; !objSubfilesEnum.atEnd(); objSubfilesEnum.moveNext())
{
//获得文件
var filename = objSubfilesEnum.item();
var objFile = objFileSystem.GetFile(filename);
//
var strFileTitle = objFile.Name;
var pos = strFileTitle.indexOf(“.url”);
if (-1 != pos)
{
//如果是.url文件
strFileTitle = strFileTitle.substring(0, pos);
//objShell.Popup(“file name is: ” + filename);
//
try
{
var objShortcut = objShell.CreateShortcut(filename);
//
//objShell.Popup(objShortcut.TargetPath);
var url = objShortcut.TargetPath;
//
//添加一个url进行下载
objCABookBuilder.AddJob(bookguid, folderpath, url, strFileTitle, “Default”, 0, true, true, 0);
}
catch (e)
{
}
}
}
//枚举子文件夹
var objSubfoldersEnum = new Enumerator(objFolder.SubFolders);
for (; !objSubfoldersEnum.atEnd(); objSubfoldersEnum.moveNext())
{
var subfolder = objSubfoldersEnum.item();
//
var objSubFolder = objFileSystem.GetFolder(subfolder);
var subfoldername = objSubFolder.Name;
//导入子文件夹
ImportPath(bookguid, folderpath + “\\” + subfoldername, objCABookBuilder, objShell, objFileSystem, subfolder);
}
}
//CyberArticle.CAAutomationApp对象
var objCA = new ActiveXObject(“CyberArticle.CAAutomationApp”);
//获得选中的节点
var objSelectedNodes = objCA.SelectedNodes;
if (objSelectedNodes != null && objSelectedNodes.Count > 0)
{
var objShell = new ActiveXObject(“WScript.Shell”);
//
//获得第一个选中的节点
var objSelectedNode = objSelectedNodes.Item(0);
if (objSelectedNode.Type != 0)
objSelectedNode = objSelectedNode.ParentNode;
//
//获得书籍信息和相应的目录路径
var strBookGUID = objSelectedNode.Book.GUID;
var folderpath = objSelectedNode.GetTitlePath(true, false);
//objShell.Popup(“title path: ” + folderpath);
//创建BookBuilder对象,用来下载链接
var objCABookBuilder = new ActiveXObject(“CyberArticle.CABookBuilderAutomationApp”);
//获得收藏夹路径
var strPath = objShell.SpecialFolders(“Favorites”);
strPath = objShell.ExpandEnvironmentStrings(strPath);
//objShell.Popup(strPath);
//获得文件夹对象
var objFileSystem = new ActiveXObject(“Scripting.FileSystemObject”);
//导入文件夹
ImportPath(strBookGUID, folderpath, objCABookBuilder, objShell, objFileSystem, strPath);
//开始下载
objCABookBuilder.StartDownload();
}
从这一段简单的代码可以看出,CyberArticle的扩展性是非常强大和易用的。只要您稍微具有一定的脚本编程能力,就可以很容易的对CyberArticle进行扩展。
下个CyberArticle版本,将会包含这段脚本,并制作成一个CyberArticle宏,添加到CyberArticle程序里面,方便使用。
分类: CyberArticle
那意思是说,可以收藏了网址后,直接把文章加入电子书了。
就是这样。但不是自动的,需要您手工执行这个脚本,才会把收藏夹里面的网址对应的文章保存下来。
在Windows7下,以管理员权限通过命令行运行该脚本,并且CA主程序也赋予管理员权限,无法安装。
不要用管理员权限运行,就用普通的方式就可以了。也不需要安装。直接执行js脚本就可以了。
这个功能就多人需要了。
特别适用于学技术的人群。