def GetDetails(self, url, muti): resp = self.session.get(url) resp.encoding = "utf8" if not self.CheckIfNeedLogin(resp): return jqdata = jq(resp.text) jqdetail = jqdata(".v_table_1") jqperson = jqdata(".v_table_2") try: uid = FixNums(jqperson("tr:nth-child(5) > td:nth-child(2)").text()) sid = FixNums(jqdetail("tr:nth-child(3) > td:nth-child(2)").text()) details = DarkNet_DataSale.select().where((DarkNet_DataSale.sid == sid)) person = DarkNet_Saler.select().where((DarkNet_Saler.uid == uid)) notice = DarkNet_Notice.select().where((DarkNet_Notice.sid == sid)) img = DarkNet_IMGS.select().where((DarkNet_IMGS.sid == sid)) personDatas = { "salenums": FixNums( jqperson("tr:nth-child(3) > td:nth-child(4)").text() ), "totalsales": float_format( jqperson("tr:nth-child(5) > td:nth-child(4)").text() ), "totalbuys": float_format( jqperson("tr:nth-child(7) > td:nth-child(4)").text() ), } username = jqperson("tr:nth-child(3) > td:nth-child(2)").text() if not person: personDatas.update( { "uid": uid, "user": username, "regtime": moment.date(jqperson("tr:nth-child(7) > td:nth-child(2)").text()).format("YYYY-MM-DD"), } ) person = DarkNet_Saler.create(**personDatas) else: DarkNet_Saler.update(personDatas).where( (DarkNet_Saler.uid == uid) ).execute() person = person[0].uid if not notice: notice = DarkNet_Notice.create(**{"sid": sid}) else: notice = notice[0].sid detailImages = None detailContent = " ".join(jqdata(".postbody .content").text().split()) if not img: urls = [_.attr("src") for _ in jqdata(".postbody img").items()] img = DarkNet_IMGS.create( **{"sid": sid, "img": urls, "detail": detailContent} ) detailImages = self.SavePics(urls, sid) else: img = img[0].sid currentYear = moment.now().year soldNum = FixNums( jqdetail("tr:nth-child(7) > td:nth-child(4)").text(), to=99999 ) toCurrentYearDateTime = moment.date( f"{currentYear} " + jqdetail("tr:nth-child(3) > td:nth-child(6)").text() ) RealUpTimeJQ = jqdata(".author") RealUpTimeJQ.remove("a") RealUpTimeJQ.remove("span") RealUpTime = moment.date( RealUpTimeJQ.text().replace("年", "").replace("月", "").replace("日", "") ) RealUpTime = RealUpTime if RealUpTime._date else toCurrentYearDateTime detailsDatas = { "lasttime": moment.date( f"{currentYear} " + jqdetail("tr:nth-child(7) > td:nth-child(6)").text() ).format("YYYY-MM-DD HH:mm:ss"), "priceBTC": float_format( jqdetail("tr:nth-child(3) > td:nth-child(4) > span").text() ), "priceUSDT": float_format( jqdetail("tr:nth-child(5) > td:nth-child(4)").text().split()[0] ), "lines": muti["lines"], "uptime": RealUpTime.format("YYYY-MM-DD HH:mm:ss"), "hot": muti["hot"], "types": jqdetail("tr:nth-child(5) > td:nth-child(2)").text(), "status": jqdetail("tr:nth-child(7) > td:nth-child(2)").text(), "oversell": jqdetail("tr:nth-child(9) > td:nth-child(2)").text(), "sold": soldNum, } if not details: detailsDatas.update( { "sid": sid, "user": person, "area": muti["area"], "title": muti["title"], "detailurl": url, "img": img, "notice": notice, } ) details = DarkNet_DataSale.create(**detailsDatas) self.MakeMsg(details, detailContent, detailImages, sid, username) else: self.warn(f'-{RealUpTime}- {muti["title"]}') DarkNet_DataSale.update(detailsDatas).where( (DarkNet_DataSale.sid == sid) ).execute() except Exception as e: self.error(f"GetDetails {e}") self.SaveError("error_264.html", resp) # self.error(jqdata.text()) raise
def create_details(datas): return DarkNet_DataSale.create(**datas)