コード例 #1
0
ファイル: index.py プロジェクト: pirica/Fortnite-ShopBot
    def MonitorChange(self) -> bool:
        prevdata = json.loads(
            ShopBot.GET_ItemShop(self,
                                 api_key=self.api_key,
                                 language=self.language))
        prevdata_ = Utility.Split_Special(self, data=prevdata)
        prevdata_ = Utility.Extract_ItemShop(self, data=prevdata_)
        time.sleep(600)

        while True:
            data = json.loads(
                ShopBot.GET_ItemShop(self,
                                     api_key=self.api_key,
                                     language=self.language))
            data_ = Utility.Split_Special(self, data=data)
            data_ = Utility.Extract_ItemShop(self, data=data_)
            log.info("Checking ItemShop change...")
            if prevdata_ == data_:
                log.info("ItemShop changed")
                date = Utility.ISOtoHuman(
                    self,
                    date=Utility.Now_ISO(self),
                    dateformat=self.text_override['date'],
                    hour=self.text_override['hour'],
                    language=self.language)
                specialoffer = None
                if self.text_override['auto-specialoffer-convert']['enabled']:
                    with requests.Session() as session:
                        specialoffer = AuthUtil.get_special_offer(
                            self,
                            session=session,
                            email=self.text_override[
                                'auto-specialoffer-convert']['email'],
                            password=self.text_override[
                                'auto-specialoffer-convert']['password'],
                            user_agent=self.user_agent,
                            language=self.language)
                if specialoffer is None:
                    specialoffer = self.text_override[
                        'auto-specialoffer-convert']['default']
                if data is not None and date is not None:
                    log.info("Generating shop image...")
                    Image = ShopBot.GenerateImage(
                        self,
                        data=data,
                        date=date,
                        text_override=self.text_override,
                        specialoffer=specialoffer,
                        namefont=self.namefont,
                        categoryfont=self.categoryfont)
                else:
                    log.error("Failed to get shop data")
                if Image:
                    log.info("Success")
            else:
                log.info("ItemShop nothing changed")
            time.sleep(600)
コード例 #2
0
ファイル: index.py プロジェクト: pirica/Fortnite-ShopBot
    def GenerateImage(self,
                      data: dict,
                      date: str,
                      text_override: dict = {},
                      specialoffer: str = "Special Offers",
                      namefont: str = "",
                      categoryfont: str = "") -> bool:
        try:
            Splited = Utility.Split_Special(self, data=data)
            Sorted = Utility.Sort_Item(self, data=Splited)
            Overrided = Utility.Text_Override(
                self, data=Sorted, text_override=text_override['categories'])
            Extracted = Utility.Extract_ItemShop(self, Overrided)
            if len(Extracted['featured']) > 1 or len(
                    Extracted['daily']) > 1 or len(Extracted['special']) > 1:
                if len(Extracted['special']) > 1:
                    rows = max(ceil(len(Extracted['featured']) / 4),
                               ceil(len(Extracted['daily']) / 4),
                               ceil(len(Extracted['special']) / 4))
                    ShopImage = Image.new("RGBA", (3800, ((545 * rows) + 365)))
                else:
                    rows = max(ceil(len(Extracted['featured']) / 4),
                               ceil(len(Extracted['daily']) / 4))
                    ShopImage = Image.new("RGBA", (2550, ((545 * rows) + 365)))

                try:
                    background = ImageUtil.Open(self, "background.png")
                    background = ImageUtil.RatioResize(self, background,
                                                       ShopImage.width,
                                                       ShopImage.height)
                    ShopImage.paste(
                        background,
                        ImageUtil.CenterX(self, background.width,
                                          ShopImage.width))
                except FileNotFoundError:
                    log.warning("Failed to open background.png")

                for num, unity in enumerate(Extracted.items()):
                    if len(unity[1]) > 1:
                        Unity = ShopBot.GenerateUnity(self, unity[1], namefont,
                                                      categoryfont)
                        if Unity is not None:
                            canvas = ImageDraw.Draw(ShopImage)
                            font = ImageUtil.OpenFont(self, 48, namefont)
                            ShopImage.paste(Unity, ((num * 1200) +
                                                    ((num + 1) * 50), 315),
                                            Unity)
                            if unity[0] != "special":
                                canvas.text(
                                    (50 + (num * 1250), 260),
                                    text_override.get(unity[0],
                                                      unity[0].capitalize()),
                                    font=font)
                            else:
                                canvas.text((50 + (num * 1250), 260),
                                            specialoffer,
                                            font=font)
                    else:
                        log.debug(f"{unity[0]} is None")
            else:
                ShopImage = Image.new("RGBA", (2550, 365))
                try:
                    background = ImageUtil.Open(self, "background.png")
                    background = ImageUtil.RatioResize(self, background,
                                                       ShopImage.width,
                                                       ShopImage.height)
                    ShopImage.paste(
                        background,
                        ImageUtil.CenterX(self, background.width,
                                          ShopImage.width))
                except FileNotFoundError:
                    log.warning("Failed to open background.png")

                canvas = ImageDraw.Draw(ShopImage)
                font = ImageUtil.OpenFont(self, 48, namefont)
                canvas.text((50, 260),
                            text_override.get("featured", "Featured"),
                            font=font)
                canvas.text((1300, 260),
                            text_override.get("daily", "Daily"),
                            font=font)
                log.info("Shop is None")

            try:
                logo = ImageUtil.Open(self, "logo.png").convert("RGBA")
                logo = ImageUtil.RatioResize(self, logo, 0, 210)
                ShopImage.paste(
                    logo, ImageUtil.CenterX(self, logo.width, ShopImage.width),
                    logo)
            except FileNotFoundError:
                log.warning("Failed to open logo.png")

            font = ImageUtil.OpenFont(self, 40, namefont)
            canvas.text((5, 5), date, font=font)

            ShopImage.save("itemshop.png")
            return True
        except Exception as e:
            log.error(self, f"Failed to generate image, {e}")
            return False