下载小说并转成语音

最近迷上听小说了,但几个app上有声小说更新太慢,自己看小说的话不能同时去做其他事情,所以想了个办法从网上下载小说并将文字转换成语音。以后其他小说只需要改改下载小说地址即可。故写在博客上供以后使用。

一、main.py

from spider import Spider
from txt import Txt
from mp3 import Mp3

if __name__ == ‘__main__‘:
    clsSpider = Spider()
    clsTxt = Txt()
    clsMp3 = Mp3()
    dictTitle = clsSpider.getTitle()
    print(dictTitle)
    i = 0
    filename = ‘‘
    for title in dictTitle:
        filename = ‘%05d-%s‘ % (i, dictTitle[title])
        if clsTxt.existTxt(filename) and clsMp3.existMp3(filename):
            i = i + 1
            continue
        content = clsSpider.getContent(title)
        if (content is None) or (len(content) == 0):
            i = i + 1
            continue
        if clsTxt.existTxt(filename) is False:
            clsTxt.writeTxt(filename, content)
        if clsMp3.existMp3(filename) is False:
            clsMp3.writMp3(filename, content)
        i = i + 1

二、spider.py

import requests
from bs4 import BeautifulSoup

class Spider(object):
    def __init__(self):
        self.session = requests.session()

    def __del__(self):
        self.session.close()

    def getTitle(self):
        dictTitle = {}
        soup = None
        try:
            req = self.session.get(‘https://www.xxxxxx.com/xx/x/xxx/‘)
            req.encoding = ‘utf-8‘
            soup = BeautifulSoup(req.text, ‘html.parser‘)
            for a in soup.select(‘#list dd a‘):
                dictTitle[a[‘href‘]] = a.text.strip()
            return dictTitle
        except:
            print(‘获取章节列表失败!‘)
            dictTitle.clear()
            return None
        finally:
            if soup != None:
                soup.clear()

    def getContent(self, url):
        soup = None
        try:
            req = self.session.get(‘https://www.xxxxxx.com/xx/x/xxx/‘ + url)
            req.encoding = ‘utf-8‘
            soup = BeautifulSoup(req.text, ‘html.parser‘)
            return soup.select_one(‘#content‘).text.strip()
        except:
            print(‘获取[https://www.xxxxxx.com/xx/x/xxx/%s]内容异常!‘ % url)
            return None
        finally:
            if soup != None:
                soup.clear()

三、txt.py

import os

class Txt(object):
    def __init__(self):
        if os.path.exists(‘txt‘) is False:
            os.mkdir(‘txt‘)

    def existTxt(self, title):
        return os.path.exists(‘txt\\%s.txt‘ % title)

    def writeTxt(self, title, content):
        try:
            with open(‘txt\\%s.txt‘ % title, ‘wb‘) as f:
                f.write(content.encode(‘utf-8‘))
        except:
            print(‘写入文件txt\\%s.txt异常!‘ % title)

四、mp3.py

import os
from aip import AipSpeech

class Mp3(object):
    def __init__(self):
        self.client = AipSpeech(‘xxx‘, ‘xxx‘, ‘xxx‘)
        if os.path.exists(‘mp3‘) is False:
            os.mkdir(‘mp3‘)

    def existMp3(self, title):
        return os.path.exists(‘mp3\\%s.mp3‘ % title)

    def writMp3(self, title, content):
        try:
            pos = 0
            msg = ‘‘
            while(pos < len(content)):
                msg = content[pos:pos+1000]
                while(True):
                    try:
                        result = self.client.synthesis(msg)
                        if not isinstance(result, dict):
                            with open(‘mp3\\%s.mp3‘ % title, ‘ab+‘) as f:
                                f.write(result)
                                break
                        else:
                            print(result)
                    except:
                        print(‘1‘)
                pos = pos + 1000
        except:
            print(‘写入文件mp3\\%s.mp3异常!‘ % title)

原文地址:https://www.cnblogs.com/qiyueliuguang/p/11109409.html

时间: 2024-08-01 16:19:36

下载小说并转成语音的相关文章

科大讯飞(2) 语音合成(文字转换成语音)

科大讯飞开放平台.SDK下载.添加静态库.初始化见UI进阶 科大讯飞(1) 语音听写(语音转换成文字) 实现语音合成 功能实现步骤: 导入头文件 创建文字识别对象 指定文字识别后的回调代理对象 开启文字识别功能 在回调方法中处理文字识别后返回的对象 文字合成中的参数: 代码展示: 1 //文字识别的回调方法接口 2 #import <iflyMSC/IFlySpeechSynthesizerDelegate.h> 3 4 //文字识别对象 5 #import <iflyMSC/IFlyS

将文本转换成语音

又一次在这里和大家在这里和大家见面了.几天给大家看的是如何实现将文本转换成语音.这可是现在很流行的一种快捷表达方式哦!!看<nikita>没?当时我的那个羡慕呀!!不过还好,有我们的讯飞科技为我们写这个强大的程序接口,这样,我们就有机会实现其效果哦! 这里只是谢了一个简单的类似与HelloWorld的那种简单程序.但是这个一通则百通吧. 首先呢?我们必须要在Eclipse环境里面导入一个jar包,那就是这个地址上的jar包.http://download.csdn.net/detail/wan

文本转换成语音

"让别人读书给你听",在某些情况下是一种需求.从程序员的角度来说,就是要把"人"换成"程序",让程序来朗读文字.满足这个需求的关键技术点,是"文本转换成语音",简称TTS. 这次介绍的,并不是TTS实现的原理,而是TTS的应用,也就是基于特定的库或开源项目的使用.对于原理的东西,小程在准备好理论的知识后再尝试讲解清楚. TTS的实现,有不少项目,这里介绍的是eSpeak. 本文介绍如何通过eSpeak来实现文本转换成语音的功能

文本转换成语音的免费工具

文本转换成语音的免费工具?日常生活中,我们在使用微信聊天工具的时候,如果不方便输入文字的情况下,我们会使用语音给对方发送消息.如果对方不方便听取语音消息的时候,可以将语音转换成文字,但是仅限于翻译普通话.那么,文字转换成语音,有没有好用靠谱的软件呢?小编给大家分享一个工具,可以将文字转换成语音.使用工具:迅捷PDF转换器1.首先大家可以在百度浏览器搜索关键词PDF转换器,然后将软件下载安装到电脑中.为下面的操作提前准备.2.软件安装后,鼠标双击进入工具操作页面,这个软件的色彩搭配很好,增强了视觉

文字怎样转换成语音的?转换的方法

文字怎样转换成语音?转换的方法,当我们在阅读一些文字时,有的时候我们需要将这些文件中的文字进行转换成语音的形式,这就需要我们进行在线转换,下面就让小编给大家简单介绍一下.步骤一:我们可以通过在浏览器上的查找和搜索迅捷语音云服务找到文字转语音的网站中进行转换: 步骤二:找到文字转语音的功能按钮,点击进入之后就可以进行一些参数的设置,输出格式.音色类型.背景音乐等一系列的设置: 步骤三:等设置完后即可进行文字的输入,将需要转换成语音的文字输入到界面中去: 步骤四:等输入好之后就可以进行文件的转换了点

怎么将文字转换成语音?

文字转换成语音的形式有很多种,有的时候我们可以将准备好的文字文件转换成语音的形式,下面小编就给大家简单介绍一下.步骤一:将文字转换成语音的形式并不是很困难,我们首先需要将文字准备好,然后通过在浏览器上的搜索迅捷语音云服务进入到这样一个文字转语音的网站中去: 步骤二:然后我们可以进入到文字转语音中去,先进行输出格式和一些音色类型.背景音乐等设置:步骤三:然后将文字输入到界面中去,进行编辑,等文字输入好之后就可以点击开始转换了:步骤四:文字在转换的时候是需要一定的时间的,我们需要耐心的等到一段时间:

使用request下载小说

使用requests .title { text-align: center } .todo { font-family: monospace; color: red } .done { color: green } .tag { background-color: #eee; font-family: monospace; padding: 2px; font-size: 80%; font-weight: normal } .timestamp { color: #bebebe } .tim

TXT文件怎么转成语音播放

大家在办公中,一般情况下,什么文件格式方便就用什么文件格式,就比如说有时候需要用到语音播放一段文件的时候,就需要把这个文件转成语音的格式,但是很多人呢并不会这两种格式之间的相互转换,接下来小编告诉大家一招怎么把TXT文件转成语音播放吧.1.要把TXT文件转成语音播放,先把TXT文件准备好,接着准备一个PDF转换器,就可以把文件转成语音播放了.2.用鼠标点击打开PDF转换器,在转换器中用鼠标先点击文字语音转换功能,接着用鼠标点击文件转语音.3.点击之后,接着用鼠标点击界面下面的添加文件,将TXT文

文档资料文字怎么在线转换成语音内容

文档资料文字怎么在线转换成语音内容,由于工作的需要,每天都需要看文档资料,严重的用眼过度,而且很多时候出门在外看文档特别不方便,如果将文字转换成语音内容,这样不仅在外也可以阅读,而且大大的提高了工作的效率,那如何进行文字转语音的操作呢!步骤一:我们借助电脑,在浏览器中搜索"迅捷语音云服务"并点击进入到在线操作平台.步骤二:进入到在线操作平台后,选择转换功能"文字转语音"进入待转换界面.步骤三:在待转换页面输入框内输入/粘贴需要转换的文本内容. 步骤四:待转换页面下方