首页 > 编程语言 >python实现樱花动漫自动追番功能

python实现樱花动漫自动追番功能

时间:2023-01-16 22:24:50浏览次数:59  
标签:樱花 python self list magnet dmhyKeyWord print txt 追番

源码地址

https://gitee.com/kidtic/autodmhy

准备

1.网络代理
2.比特彗星打开远程下载功能
3.按照以下文件目录设置好dmhyKeyWord.txt文件

    xxx动漫1/
        dmhyKeyWord.txt
    xxx动漫2/
        dmhyKeyWord.txt
    autodmhy.py

其中dmhyKeyWord.txt第一行写上该动漫在樱花动漫网的搜索关键字。
4.安装好requests_html包 pip install requests_html

autodmhy.py代码

'''
 名称: autodmhy 
 版本: v1.0
 作者: kidtic
 说明: 实现樱花动漫自动追番功能

 环境: 提前设置好代理与比特彗星的远程下载功能
 使用: autodmhy.py会自动遍历当前目录下的所有文件夹,只有文件夹中有dmhyKeyWord.txt的才会被当作工作目录。
       dmhyKeyWord.txt中第一行为樱花动漫的搜索关键字,剩下的为忽略项。
       autodmhy.py会搜索关键字并将搜索的动漫内容下载到当前工作目录(不会下载已经存在的 和 忽略项中的)
 目录结构:
    xxx动漫1/
        xxx01.mp4
        xxx02.mp4
        dmhyKeyWord.txt
    xxx动漫2/
        xxx01.mp4
        xxx02.mp4
        dmhyKeyWord.txt
    autodmhy.py
'''

from requests_html import HTMLSession
import os
from time import sleep


class Search_dmhy:

    curdir = "./"

    list_name = []      #名字
    list_pagelink = []  #网址链接
    list_magnet = []    #磁力链接
    list_filename = []  #文件名称
    list_filesize = []  #文件大小
    keyword = ""        #搜索关键字
    ignlist = []        #忽略

    def __init__(self):
        self.proxie = {"http":"http://127.0.0.1:7890"}  # todo:这里填好代理端口
        url = 'http://www.dmhy.org'  # 这里定义访问的网络地址
        self.url = url
        self.downurl = "http://kk:133z195@192.168.123.205:24564" # todo:这里填好比特彗星的远程下载接口
        self.session = HTMLSession()


    #打开对应的工作空间(包含dmhyKeyWord.txt的文件夹)
    def open(self, dir):
        self.curdir = dir
        #查看当前文件夹下是否有dmhyKeyWord.txt
        tempfname =  os.listdir(dir)
        #print(tempfname)
        if "dmhyKeyWord.txt" not in tempfname: 
            return False
        f = open(dir + "/dmhyKeyWord.txt",'r',encoding='utf-8')
        templst = f.readlines()
        self.keyword = templst[0].replace('\n', '')
        print(self.keyword)
        self.ignlist = templst[1:]
        for i in range(0,len(self.ignlist)):
            self.ignlist[i] = self.ignlist[i].replace('\n', '')
        print(self.ignlist)
        f.close()
       
        return True


    #搜索dmhy网站上相关关键字的结果
    def search(self):
        self.list_name = []
        self.list_pagelink = []
        self.list_magnet = []
        self.list_filename = []
        self.list_filesize = []
        # 打开网页
        mainobj = self.session.get(self.url + "/?keyword=" + self.keyword,proxies=self.proxie)
        # 找到所有的搜索结果
        contents = mainobj.html.find('#topic_list>tbody',first=True).find("tr")

        for tr in contents:
            link = tr.find(".title>a",first=True)
            linkurl = self.url + link.attrs['href']
            self.list_name.append(link.text)
            self.list_pagelink.append(linkurl)

            print(link.text+"   "+ linkurl)
        #查找磁力链接
        for i in range(len(self.list_pagelink)):
            #打开网页
            selobj = self.session.get(self.list_pagelink[i],proxies=self.proxie)

            ####
            magnetStr = selobj.html.find("#a_magnet",first=True).attrs['href']
            templi = selobj.html.find(".file_list",first=True).find("li",first=True)
            tempsize = templi.find("span",first=True)
            namestr = templi.text.replace(tempsize.text,"")
            namestr = namestr.rstrip()
            print(namestr)
            print(tempsize.text)


            self.list_filename.append(namestr)
            self.list_filesize.append(tempsize.text)
            self.list_magnet.append(magnetStr)

        #保存
        f = open(self.curdir+"/index.html", 'w')
        fh_1 = "<html>\n<head></head>\n<body>\n"
        fh_2 = "</body>\n</html>"
        fh_li = ""
        for i in range(len(self.list_magnet)):
            fh_li = fh_li + "<a href=\"%s\">%s</a><span style=\"text-indent:2em\">%s</span><br>\n"%(self.list_magnet[i], self.list_name[i], self.list_filename[i])
        f.write(fh_1)
        f.write(fh_li)
        f.write(fh_2)
        f.close()

    #将不存在工作空间内且不在ignlist内的文件下载到当前目录
    def download(self):
        tempfname =  os.listdir(self.curdir)
        for i in range(len(self.list_filename)):
            if self.list_filename[i] not in tempfname+self.ignlist:
                data={"url":"","save_path":""}
                data["url"] = self.list_magnet[i]
                data["save_path"] = os.path.abspath(".")+"\\"+self.curdir
                print(data["save_path"])
                print(self.list_filename[i])
                self.session.post(self.downurl+"/panel/task_add_magnet_result",data)


    
if __name__ == '__main__':
    dev = Search_dmhy()
    list_allfile = []

    for dirpath, dirnames, filenames in os.walk('.'):
        for dirname in dirnames:  #遍历所有文件夹下的内容
            workpath = os.path.join(dirpath, dirname)
            if dev.open(workpath):  # 查看文件夹下是否有keyword文件
                dev.search()
                dev.download()


定时执行

设置好windows计划任务,定时执行autodmhy就行。

标签:樱花,python,self,list,magnet,dmhyKeyWord,print,txt,追番
From: https://www.cnblogs.com/kidtic/p/17056409.html

相关文章

  • python字符操作大全
    代码示例编写脚本test.pychar="heLLoworld"print(char.title())#title()使每个单词的首字母大写print(char.upper())#upper()将字符串改为全部大写print(char......
  • Python中互换变量不创建临时变量的方法
    在Python中,当我们想要互换两个变量的值或将列表中的两个值交换时,我们可以使用如下的格式进行,不需要创建临时变量:x,y=y,x这么做的原理是什么呢?首先一般情况下Python......
  • Python环境的安装
    1.下载Python访问Python官网:​​https://www.python.org/​​点击downloads按钮,在下拉框中选择系统类型(windows/MacOS/Linux等)选择下载最新版本的Python没有版本要求......
  • python matplot非阻塞show
    importmatplotlib.pyplotaspltplt.ion()#非阻塞模式path="/****/color_0004_%04d.png"plt.ion()foriinrange(5):path1=path%iplt.axis("off")......
  • python写日志
    importloggingfromloguruimportloggerlogging.basicConfig(filename='test_yan.log',#指定文件存放位置level=logging.DEBUG,#设置写入文......
  • #Python 利用pivot_table,数据透视表进行数据分析
     前面我们分享了,利用python进行数据合并和连接,但是工作中,我们往往需要对数据进一步的聚合或者运算,以求最后的数据结果。今天我们就来学习一下利用pandas模块,对数据集进......
  • Python协程与异步编程
    同步synchronous,异步asynchronous,并发concurrent,并行parall同步是一种依赖关系。并行是假同时,并发是真同时进程process,线程thread,协程进程是资源分配的单位,线程是协......
  • python高级语言特性
    装饰器nothingbuta语法糖语法糖(Syntacticsugar):也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(PeterJ.Landin)发明的一个术语,指计算机语言中添加的某种语法,这......
  • python—测试工具UI实践(1)—需求分析及环境部署
    环境部署:安装python安装pycharm工作任务:需求:研发一个测试工具,构造随机测试数据技术要求:基于python语言开发成果物:正常使用分享交流:分享开发过程中的收获 ......
  • python方法(函数)
    python方法(函数)定义格式def方法名(参数1,参数2,参数3):#具体实现return#返回值参数默认值defdesc(name='no-name',age=0):print("%s%d"%(name,ag......