# -*-coding:utf-8 -*-
import threading
from queue import Queue
import os,time,random

import publicMethods  #公共方法、函数定义模块

from constant import INT_MIN_COUNT_ERR_TEXT

# rules[] 0 搜索模式，1 标签名 ，2 属性名 ，3 值 ，4 章节编码 , 5 总页数 , 6 链接方式 , 7 插入链接部分 , 8 修改方式 
#  9 前端删除行 , 10 后端删除行 ，11 删除广告1 , 12 删除广告2 , 13 广告正则 , 14 保存位置  15 输出编码 , 16 输入文件名 
        
class taskThread(threading.Thread):#章节线程类
    def __init__(self,id,url,rules,parent):
        super().__init__()
        #super(taskThread, self).__init__()  # 重构run函数必须要写
        self.chapterId=id
        self.url=url
        self.rules=rules
        self.parent=parent
        #self.tree=tree
        #self.queue=queue
    
        #s
    def run(self): #线路主要方法——捕捉章节正文
        
        def intFromStr(val):#转为型号，主要区分 '' 值转为 0
            try:
                i=int(val)
                return i
            except:
                return 0
            
            #

        #self.queue.join()
        #num = self.queue.get()
        print("\t\t进程{}：线程 {} 【开始\n".format(self.chapterId,self.rules[16]))

        if not publicMethods.captureChapterText(self.url,self.rules): #内容太少时视为出错（默认为 8 个字符）
            self.parent.errItems.append(self.chapterId)
            
        #file=os.path.join( self.rules[14] ,os.path.join(self.rules[14] , self.rules[16]))
        #publicMethods.saveTextFile(file , text , self.rules[15]) 
        #self.tree.set(self.chapterId,column='#3',value=str(os.path.getsize(file)))

        #  线路处理方法语句
        #self.queue.task_done()# 线路程（每个任务）完成这项工作之后，使用 queue.task_done() 函数向任务已经完成的队列发送一个信号
        print("\t\t进程{}：线程 {} 结束】\n".format(self.chapterId,self.rules[16]))
        


if __name__ == "__main__":
    queue = Queue()
    print("【所有任务开始】\n")
    ps=[]
    for i in range(3): #进程数量
        p = taskThread(i,queue)
        ps.append(p)
        p.setDaemon(True) #进程守护
        p.start()
        
    
    for i in range(9):#总任务数
        queue.put(i,False,5)#往队列中填数据 
    
    queue.join()
    
    print("【所有任务结束】")
