游戏蛮牛学习群(纯技术交流,不闲聊):159852603
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

教程分享

关注:791

当前位置:游戏蛮牛 技术专区 教程分享

查看: 498|回复: 10

[蛮牛干货备选] unity制作一个手机小说阅读器-5

[复制链接]  [移动端链接]
排名
214
昨日变化

37

主题

882

帖子

4492

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
6108
好友
17
蛮牛币
4941
威望
0
注册时间
2013-10-22
在线时间
1421 小时
最后登录
2018-11-16

社区QQ达人七夕浪漫情人

QQ
发表于 2018-10-24 09:50:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 子非夏虫,焉知 于 2018-10-24 10:28 编辑

目录:
1.ugui设置:http://www.manew.com/thread-108184-1-1.html
2.txt拆分:http://www.manew.com/thread-108187-1-1.html
3.翻页效果:http://www.manew.com/thread-108188-1-1.html
4.章节跳转及最终工程文件:http://www.manew.com/thread-108190-1-1.html
5.爬取网络小说:http://www.manew.com/thread-141503-1-1.html
6.移动端文字转语音:http://www.manew.com/thread-141505-1-1.html


好了 作者又来了,因为作者的斗破又看完了。。。。
好久没看小说了,因为现在的阅读app一个个都要钱,买不起买不起。
然后突然想起来一本小时候在书店读过的书,讲的是一个小孩,一条瘸腿的狼,一个鹰的偏科幻一点的故事,记得的就这么多。
然后一搜,居然找到了,是雨魔的《兽王》。然后一看,哇,小时候看的进度还不到整本书的1/10。
那就翻出来再看看,嗯?还不错哦,现在还能有兴趣继续看,ojbk。
再一搜,居然怎么都找不到完本的txt下载。。。简直low。
手机上下几个阅读器搜搜,百度(某猫看书)的先跳出来,让我免费读了7天。然后,对不起,拜拜,整本书需要100多元才能买完。
再下个排名靠前的免费阅读器,网上搜到的源整本书断断续续的,一会就少一章,五分钟一个广告,关闭网络了还不行,不让你读,并且还没有作者最想要的,开车的时候可以直接听小说的功能,对不起,打扰了。
继续找?估计也不会有比这个免费阅读器更好的了,那不如。。。。自己动手丰衣足食。
废话说了这么多,下面开始正式心路历程吧。
------------------------------------废话分割线-------------------------------------------------
本次教程主要解决两个点:1.解决网上搜不到完本txt的问题
2.解决移动端语音读书的功能

本篇讲第一点:网上搜不到完本资源怎么办。
因为之前的篇幅讲过了网上直接能找到完本资源的书,可以直接拿过来拆分,现在网上找不到完本的资源,但是,可以找到一章一章读的网页:比如说三五阅读:https://www.555zw.com/book/10/10968/,再比如说思路客:http://www.siluwu.com/0/31/31969/
本文就以思路客为例(为什么用思路客?因为任性)
到这里大家不难想到一个词:爬虫。
没错,我们要做的就是把这个网页的文字爬取下来。
这不过是一个最简单不过的爬虫程序了!
好,说干就干,怎么爬?很简单啊:找到第一章的链接,丢进去
        WWW url = new WWW "http://www.siluwu.com/0/31/31969/6343925.html");


        yield return url;

        Debug.Log(url.text);

简单吧。然后跑一下,结果出来了:
1540343837683.jpg

不错哦,网页的东西都爬下来了,唯一的缺陷是,貌似他是gbk编码的,中文全乱码了。
在转编码的过程中,作者跌跌撞撞的爬了很多坑,首先是尝试了百度搜到的直接string转码gbk转utf8。
很不幸,无论怎么转,出来的要么是空,要么是????????。
没关系,继续动动奶子想想。
然后突然发现,好多地方都是用byte转,我也尝试过string转byte再转gbk,但是。。。。www下来了自己不就有byte吗????我为啥不直接用?
柳暗花明,直接取byte[] byt = url.bytes;再调用网上搜到的gbk转utf8,这些破string就全出来了!!!!
1540344438173.jpg

哈哈哈哈哈。后面就容易了,从这些破字符串中,取到你想要的东西,比如说章节头尾,比如说正文。这些就不用我教了吧,相信我聪明的小读者们都能搞定!
PS,此处好像Unity还有点bug,就是有些debug,选中了无法看到详细信息,所以作者就做了个简单的场景放个UGUI的Text,显示文字。
惯例源码:using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using UnityEngine;
using UnityEngine.UI;

public class NewBehaviourScript : MonoBehaviour {

    // Use this for initialization
    void Start () {
        StartCoroutine(GetHttpInfo());
    }
   
    // Update is called once per frame
    void Update () {
        
    }
    public Text text;

    int Zhangjie_num = 0;//实际跟Index相加的章节数
    int Index_num=12533506;//第一章的index
    int ShowZhangjie_num = 0;//用来查询和命名txt的章节数
    IEnumerator GetHttpInfo () {

        //www获取资源,要求网页的index必须是按整数+1,大多数网站都是这样的,别担心
        WWW url = new WWW ("http://www.siluke.com/0/11/11477/"+(Index_num+Zhangjie_num)+".html");

        yield return url;

        byte[] byt = url.bytes;
        //过小的为空章节(思路客大章节之间用空章节隔开,此处用两个变量自加区分开,)
        if (byt.Length < 200)
        {
            Zhangjie_num++;

            if (Zhangjie_num < 582)
            {
                StartCoroutine(GetHttpInfo());
            }
        }
        else
        {
            //将byte转为utf8格式
            byt = Encoding.Convert(Encoding.GetEncoding("GBK"), Encoding.UTF8, byt);
            string str = Encoding.UTF8.GetString(byt);
            Debug.Log(str);

            //下面的操作是针对实际文本中筛选获取需要的文本
            //仔细阅读上面debug出来的string,找到想要的规则,尽量找网页之间共性的,单个网页内重复性低的关键字符串
            //思路客的规则大概是正文"    "开头,"<script>read_link_up()"结尾
            string str_start = "    ";
            string str_end = "<script>read_link_up()";
            int IndexofA = str.IndexOf(str_start);
            int IndexofB = str.LastIndexOf(str_end);
            //从str_start开始取,要把自己的字符长度算进去,到str_end的头减去前面的部分,再往前推,所以每本书这里的数值要自己改,如果此处有更好更通用的算法欢迎评论
            string finalstr = str.Substring(IndexofA + str_start.Length, IndexofB - IndexofA - 32);
            //下面就是把正文中一些垃圾字符拿移除,设置好文本间的换行
            finalstr = finalstr.Replace("    ", "\n");
            finalstr = finalstr.Replace(" ", "");
            finalstr = finalstr.Replace("<br /><br />", "");

            //Debug.Log((str.Substring(400)));
            //Debug.Log(finalstr);


            //这里作者获取了一下文章的标题,放入整个string的最前面,原理参照如上
            string str_start_title = "title";
            string str_end_title = "/title";
            int IndexofA_title = str.IndexOf(str_start_title);
            int IndexofB_title = str.IndexOf(str_end_title);
            string finalstr_title = str.Substring(IndexofA_title + str_start_title.Length + 1, IndexofB_title - IndexofA_title - 14);
            //Debug.Log(finalstr_title);
            finalstr = finalstr_title + "\n" + finalstr;

            //此处用来显示string拿来debug看看
            text.text = finalstr;

            //接下来就跟之前一样了,写入文件,新建个文件夹分章存,参考斗破,此处没写文件夹新建逻辑,自己去弄文件夹吧,或者你自己写判断创建文件夹
            string BookName = "sw";
            string BookUrl = Application.streamingAssetsPath + "/" + BookName; ;//弄一个文件夹,用来存放一千多个章节的txt
            string ZhangJieUrl = BookUrl + "/第" + (ShowZhangjie_num + 1) + "章.txt";//给每一章一个名字吧,方便加载
            if (!File.Exists(ZhangJieUrl))
            {//把分别把每一章写进去创建成txt
                FileStream fs1 = new FileStream(ZhangJieUrl, FileMode.Create, FileAccess.Write);//创建写入文件
                StreamWriter sw = new StreamWriter(fs1);
                sw.WriteLine(finalstr);//开始写入值
                sw.Close();
                sw.Dispose();
                fs1.Close();
                fs1.Dispose();
                //注意close和dispose,不释放unity会卡死
            }

            Zhangjie_num++;
            ShowZhangjie_num++;
            yield return 1;
            //写完一章debug一下,让你不至于那么焦躁,最终写完了告诉你allend,此处的582,是拿最后一章的index减去第一章的index算出来的,应该还要+1,不然会缺失最后一章
            Debug.Log("Write_end" + Zhangjie_num);
            if (Zhangjie_num < 582)
            {
                StartCoroutine(GetHttpInfo());
            }
            else
            {
                Debug.Log("Allend!!!!!!!!!");
            }
        }
    }



}

懒人专供: pachong.unitypackage.zip (6.52 KB, 下载次数: 19, 售价: 4 蛮牛币)

回复

使用道具 举报

7日久生情
1854/5000
排名
2301
昨日变化
9

13

主题

342

帖子

1854

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
217870
好友
1
蛮牛币
610
威望
0
注册时间
2017-4-15
在线时间
915 小时
最后登录
2018-11-15
发表于 2018-10-24 10:43:51 | 显示全部楼层
很强势

回复

使用道具 举报

5熟悉之中
553/1000
排名
4794
昨日变化
30

0

主题

120

帖子

553

积分

Rank: 5Rank: 5

UID
171160
好友
0
蛮牛币
1424
威望
0
注册时间
2016-9-22
在线时间
145 小时
最后登录
2018-11-16
发表于 2018-10-24 10:59:34 | 显示全部楼层

回复

使用道具 举报

5熟悉之中
509/1000
排名
5444
昨日变化
3

1

主题

161

帖子

509

积分

Rank: 5Rank: 5

UID
245227
好友
0
蛮牛币
597
威望
0
注册时间
2017-9-21
在线时间
97 小时
最后登录
2018-11-16
发表于 2018-10-25 09:12:53 | 显示全部楼层
66666666666666666666666666 自己动手丰衣足食啊

回复 支持 反对

使用道具 举报

7日久生情
1565/5000
排名
2496
昨日变化
10

12

主题

632

帖子

1565

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
214924
好友
3
蛮牛币
4039
威望
0
注册时间
2017-3-28
在线时间
367 小时
最后登录
2018-11-16
发表于 2018-10-25 09:13:22 | 显示全部楼层
简直不要太强

回复

使用道具 举报

6蛮牛粉丝
1281/1500
排名
3967
昨日变化
1

0

主题

754

帖子

1281

积分

Rank: 6Rank: 6Rank: 6

UID
210390
好友
0
蛮牛币
1538
威望
0
注册时间
2017-3-7
在线时间
173 小时
最后登录
2018-11-13
发表于 2018-10-25 09:30:01 | 显示全部楼层

回复

使用道具 举报

排名
15040
昨日变化
9

0

主题

26

帖子

79

积分

Rank: 2Rank: 2

UID
297843
好友
0
蛮牛币
349
威望
0
注册时间
2018-9-21
在线时间
7 小时
最后登录
2018-11-14
发表于 2018-10-25 10:01:36 | 显示全部楼层
膜拜大神

回复

使用道具 举报

5熟悉之中
885/1000
排名
6051
昨日变化
37

0

主题

515

帖子

885

积分

Rank: 5Rank: 5

UID
254705
好友
1
蛮牛币
897
威望
0
注册时间
2017-11-16
在线时间
152 小时
最后登录
2018-11-16
发表于 2018-10-26 08:20:46 | 显示全部楼层
66666666666666666666666666666666666

回复 支持 反对

使用道具 举报

5熟悉之中
587/1000
排名
3817
昨日变化
14

0

主题

78

帖子

587

积分

Rank: 5Rank: 5

UID
275506
好友
0
蛮牛币
2336
威望
0
注册时间
2018-4-3
在线时间
142 小时
最后登录
2018-11-15
发表于 2018-10-26 10:28:54 | 显示全部楼层
楼主很6 谢谢楼主

回复 支持 反对

使用道具 举报

7日久生情
2012/5000
排名
1995
昨日变化
2

45

主题

770

帖子

2012

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
219600
好友
7
蛮牛币
2732
威望
0
注册时间
2017-4-27
在线时间
543 小时
最后登录
2018-11-16
发表于 2018-10-27 18:29:05 | 显示全部楼层
你这真的是六啊

回复

使用道具 举报

排名
18671
昨日变化
8

0

主题

7

帖子

49

积分

Rank: 1

UID
301048
好友
0
蛮牛币
21
威望
0
注册时间
2018-10-23
在线时间
12 小时
最后登录
2018-11-14
发表于 2018-10-30 16:11:39 | 显示全部楼层
赞,很强势

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

关闭

站长推荐 上一条 /1 下一条

快速回复 返回顶部 返回列表