200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 有声小说书屋阅读软件 功能及技术分析

有声小说书屋阅读软件 功能及技术分析

时间:2022-10-04 10:08:37

相关推荐

有声小说书屋阅读软件 功能及技术分析

目录

一、有声小说书屋软件功能

1、界面介绍

2、听书功能

1)点击上册工具栏的 喇叭,可实现听书功能,

2)生成网页,借助 edge浏览器的听书功能

3、扩展书屋

二、所用技术介绍

1、导入小说,自动分章节功能

2、显示技术

3、XML存储技术

4、本地网站技术

这是我历经十来年,一直坚持开发的一个软件,可以把网络上的公版TXT小说,直接转换为本地藏书,并提供多种阅读、听书方式,目前已经比较完善了。

一、有声小说书屋软件功能

1、界面介绍

左侧是树形列表, 代表着书籍、章节

右侧是显示, 显示章节内容

2、听书功能

1)点击上册工具栏的 喇叭,可实现听书功能,

使用的是微软的TTS技术,不过目前的TTS 还是很机械声,听书效果一般

2)生成网页,借助 edge浏览器的听书功能

左侧,树形列表中,选中某本书,然后右键点击 出现菜单

选择生成本地网站

这样就生成 本地网页版

默认edge浏览器打开,

右键 选择 大声朗读功能, 即可用比较好的自然语音 阅读

3、扩展书屋

首先,在竖形列表中,选中一个目录,比如四大名著,然后将TXT格式小说或epub格式小说,拖入到左侧竖形列表中,就可以自动往书屋中,添加新书了。

二、所用技术介绍

总体框架使用的VC的 SDI单文档程序框架

1、导入小说,自动分章节功能

这里使用线程才实现导入分章节模块

//导入小说线程UINT ImportXiaoshuoThread(LPVOID parm){CMainFrame *pMainFrm=m_XiaoshuoParam.pFram;CImportTreeView *pView=m_XiaoshuoParam.pView;CTreeCtrl &nTreeCtrl=*m_XiaoshuoParam.pTreeCtrl;pMainFrm->beginImport(m_XiaoshuoParam.pFram,m_XiaoshuoParam.hDrop,m_XiaoshuoParam.pView,m_XiaoshuoParam.pImportView,nTreeCtrl,m_XiaoshuoParam.hItem);return 1;}

AfxBeginThread(ImportXiaoshuoThread,NULL);

1)、epub格式小说

对于epub格式,有专门的处理方式,网上有个好像是华为的epub格式库,借鉴它的方法进行解析的

2)、txt格式小说

这是使用最广的格式了,

解析的策略是,读取小说,然后按照 关键字进行章节的划分,如:章、回、节、卷等,实在没有找到关键字的,则按字数划分

2、显示技术

派生 CScrollView 类,实现自己的显示视图界面。

按照BODY、 段落 、行、字,进行数据结构设计, 然后进行显示算法设计等

3、XML存储技术

导入后的小说章节,采用XML格式进行存储。

网上有开源的XML读写类,可以使用

4、本地网站技术

先使用VUE,打造本地网站

客户端生成网站,实际上就是写文件

void CMyView::ToGenMyHtml(){CString htmlStr;htmlStr=L"<html lang=\"zh-cn\">\n\<head>\n\<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n\<title>古典小说-听小说</title>\n\<link rel=\"stylesheet\" href=\"HTML/js/element_lib/theme-chalk/index.css\">\n\<link rel='stylesheet' href='/js/myCss/gudianxiaoshuo.css'>\n\<script src=\"HTML/js/vue.js\" type=\"text/javascript\" charset=\"utf-8\"></script>\n\";CString jsFile;if (pMain->BExistFile(L"gudian.txt")){jsFile = L"<script type=\"text/javascript\" src=\"/js/myHeader_gudian.js\" charset=\"utf-8\"></script>\n";}else if (pMain->BExistFile(L"web.txt")){jsFile = L"<script type=\"text/javascript\" src=\"/js/myHeader.js\" charset=\"utf-8\"></script>\n";}else{jsFile = L"<script type=\"text/javascript\" src=\"/js/myHeader_yousheng.js\" charset=\"utf-8\"></script>\n";}jsFile += L"<script type=\"text/javascript\" src=\"/js/comp/comp_headBtns.js\" charset=\"utf-8\"></script>\n";htmlStr += jsFile;htmlStr += L"</head>\n";CFile nFile_Save;CString strFile=g_strPath+_T("听小说.html");nFile_Save.Open(strFile,CFile::modeCreate|CFile::modeWrite);WORD sign=0xfeff; //保存为UNICODE格式 否则的话 中文可能出现乱码nFile_Save.Write(&sign,2);nFile_Save.Write(htmlStr,htmlStr.GetLength()*2); // 直接将数据保存到文档中, ASCII 方式存储, 其中 ASC为0的 不显示 效果与空格相同,但ASC吗不同 空格为0x20 nFile_Save.Close();g_curWebTitle = L"古典小说-听小说";//ShellExecute(NULL,NULL,strFile,NULL,NULL,SW_NORMAL);OpenUrlWithEdge(strFile.GetBuffer());strFile.ReleaseBuffer();}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。