Skip to content

Commit e46ad08

Browse files
Added separate background fetching: Fixes image corruption issue. Adds rarity background to leaks.
1 parent bcc1354 commit e46ad08

File tree

6 files changed

+55
-10
lines changed

6 files changed

+55
-10
lines changed

bot_helpers/image_helper.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ def from_url(url, size=512, mode='RGBA'):
1818

1919
return Image.new(mode, (size, size), (0, 0, 0, 0))
2020

21+
def with_background(image, background):
22+
background = background.resize(image.size)
23+
background.paste(image, (0, 0), image)
24+
return background
25+
2126
def from_path(path, size=512):
2227
image = Image.open(path).convert('RGBA')
2328

bot_helpers/rarity_helper.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from bot_helpers import image_helper
2+
3+
RARITY_COLORS = {
4+
"Common": "https://media.fortniteapi.io/images/rarities/v2/rarity_common.png",
5+
"Epic": "https://media.fortniteapi.io/images/rarities/v2/rarity_epic.png",
6+
"Legendary": "https://media.fortniteapi.io/images/rarities/v2/rarity_legendary.png",
7+
"Mythic": "https://media.fortniteapi.io/images/rarities/v2/rarity_mythic.png",
8+
"Rare": "https://media.fortniteapi.io/images/rarities/v2/rarity_rare.png",
9+
"Transcendent": "https://media.fortniteapi.io/images/rarities/v2/rarity_transcendent.png",
10+
"Uncommon": "https://media.fortniteapi.io/images/rarities/v2/rarity_uncommon.png",
11+
12+
"CUBESeries": "https://media.fortniteapi.io/images/rarities/v2/T-Cube-Background.png",
13+
"DCUSeries": "https://media.fortniteapi.io/images/rarities/v2/T-BlackMonday-Background.png",
14+
"FrozenSeries": "https://media.fortniteapi.io/images/rarities/v2/T_Ui_LavaSeries_Frozen.png",
15+
"CreatorCollabSeries": "https://media.fortniteapi.io/images/rarities/v2/T_Ui_CreatorsCollab_Bg.png",
16+
"LavaSeries": "https://media.fortniteapi.io/images/rarities/v2/T_Ui_LavaSeries_Bg.png",
17+
"MarvelSeries": "https://media.fortniteapi.io/images/rarities/v2/Marvel.png",
18+
"PlatformSeries": "https://media.fortniteapi.io/images/rarities/v2/platformseries.png",
19+
"ShadowSeries": "https://media.fortniteapi.io/images/rarities/v2/T_Ui_LavaSeries_Shadow.png",
20+
"SlurpSeries": "https://media.fortniteapi.io/images/rarities/v2/Slurp.png",
21+
"ColumbusSeries": "https://media.fortniteapi.io/images/rarities/v2/ColumbusSeries.png"
22+
}
23+
24+
def get_background(rarity):
25+
return image_helper.from_url(RARITY_COLORS[rarity], mode='RGB')

leaks/leaks.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from PIL import Image, ImageFont, ImageDraw
33
from datetime import datetime
44

5-
from bot_helpers import exception_helper, image_helper, request_helper, post_helper, strings_helper
5+
from bot_helpers import exception_helper, image_helper, request_helper, post_helper, strings_helper, rarity_helper
66
import constants
77

88
class LeaksModule:
@@ -24,7 +24,7 @@ def register(self, schedule):
2424

2525
@exception_helper.catch_exceptions()
2626
def update(self):
27-
leaks_json = request_helper.io_request(self._API_LEAKS_URL, {"fields": "id,name,type,images"})
27+
leaks_json = request_helper.io_request(self._API_LEAKS_URL, {"fields": "id,name,type,images,rarity,series"})
2828
leaks_date = self._parse_leaks_date(leaks_json)
2929
new_items = self._get_newly_leaked_items(leaks_json)
3030
if len(new_items) == 0: return
@@ -77,8 +77,13 @@ def _generate_icons(self, leaks_json, new_items):
7777
continue
7878

7979
# Item Image
80-
item_background_url = leak_item['images']['background']
81-
icon_image = image_helper.from_url(item_background_url, mode='RGB')
80+
item_icon = image_helper.from_url(leak_item['images']['icon'])
81+
82+
rarity_id = leak_item['rarity']['id']
83+
if leak_item['series'] is not None: rarity_id = leak_item['series']['id']
84+
item_background = rarity_helper.get_background(rarity_id)
85+
86+
icon_image = image_helper.with_background(item_icon, item_background)
8287

8388
#Overlay
8489
icon_image.paste(overlay_image, (0, 0), overlay_image)

main.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
88
for module in modules:
99
module.register(schedule)
1010
print("Initialized module: " + module.__class__.__name__)
11-
12-
# schedule.run_all()
11+
print("All modules initialized. Waiting for updates...")
12+
13+
schedule.run_all()
1314

1415
while True:
1516
schedule.run_pending()

shop/shop.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from PIL import Image, ImageFont, ImageDraw
33
from datetime import datetime, timedelta
44

5-
from bot_helpers import exception_helper, image_helper, request_helper, post_helper, strings_helper
5+
from bot_helpers import exception_helper, image_helper, request_helper, post_helper, strings_helper, rarity_helper
66
import constants
77

88
class ShopModule:
@@ -71,7 +71,16 @@ def _generate_icons(self, shop_json, shop_date):
7171
new_badge = image_helper.from_path(os.path.join(constants.ASSETS_PATH, "new_badge.png"))
7272

7373
for offer_i, offer_json in enumerate(shop_offers_json):
74-
item_background_url = offer_json['displayAssets'][0]['background']
74+
display_asset = offer_json['displayAssets'][0]
75+
item_icon = image_helper.from_url(display_asset['url'])
76+
77+
item_background_url = display_asset["background_texture"]
78+
if item_background_url is None:
79+
rarity_id = offer_json['rarity']['id']
80+
if offer_json['series'] is not None: rarity_id = offer_json['series']['id']
81+
item_background = rarity_helper.get_background(rarity_id)
82+
else:
83+
item_background = image_helper.from_url(item_background_url)
7584

7685
is_bundle = offer_json['mainType'] == "bundle"
7786
main_id = ("bundle_" if is_bundle else "") + offer_json['mainId']
@@ -96,7 +105,7 @@ def _generate_icons(self, shop_json, shop_date):
96105
days_gone = None
97106

98107
#Save Background
99-
icon_image = image_helper.from_url(item_background_url, mode='RGB')
108+
icon_image = image_helper.with_background(item_icon, item_background)
100109

101110
#Overlay
102111
icon_image.paste(overlay_image, (0, 0), overlay_image)

version.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.1.2
1+
1.2.0

0 commit comments

Comments
 (0)