def update_details(datas, sid):
     DarkNet_DataSale.update(datas).where((DarkNet_DataSale.sid == sid)).execute()
Exemple #2
0
    def GetDetails(self, url, muti):
        # time.sleep(2)
        resp = self.session.get(url)
        resp.encoding = "utf8"
        self.CheckIfNeedLogin(resp)
        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(jqperson("tr:nth-child(5) > td:nth-child(4)").text()),
                "totalbuys":
                float(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(
                    jqdetail(
                        "tr:nth-child(3) > td:nth-child(4) > span").text()),
                "priceUSDT":
                float(
                    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)
            raise