Skip to content

Commit 6176f54

Browse files
Feature: Server Logos (LunarClient#96)
* Modify workflow to validate and convert server logos. * Add requirements for server logos. * Force resize to 512px if larger. * Fix wording. * First batch of images. * Second batch. * Third batch. * Fourth batch. * Fifth batch. * Another batch. * Yet another batch... * Modifying script to not fail if it doesn't find a logo.
1 parent c6ae4ff commit 6176f54

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+95
-1
lines changed

.github/workflows/validate-upload.yaml

+16-1
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,24 @@ jobs:
3434
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
3535
aws-secret-access-key: ${{ secrets.AWS_ACCESS_KEY_SECRET }}
3636
aws-region: us-east-2
37+
38+
- name: Setup Python 3.x
39+
uses: actions/setup-python@v1
40+
with:
41+
python-version: '3.x'
42+
43+
- name: Install Python dependencies
44+
run: pip install webptools Pillow
45+
46+
- name: Prepare Server Logos
47+
run: python prepare_logos.py --source logos --destination _out/logos
48+
49+
- name: Move servers.json to upload directory
50+
run: |
51+
cp servers.json _out/
3752
3853
- name: Upload to S3
39-
run: aws s3 cp servers.json s3://lcservermappings --cache-control "public, max-age=604800, immutable"
54+
run: aws s3 sync _out s3://lcservermappings --delete --cache-control "public, max-age=604800, immutable"
4055

4156
- name: Purge Cloudflare cache
4257
run: |

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
_out

README.md

+3

logos/Kwadratowa.png

16.1 KB

logos/akumamc.png

125 KB

logos/alphahq.png

212 KB

logos/aplaxy.png

165 KB

logos/arcane.png

238 KB

logos/astralmc.png

252 KB

logos/backplay.png

130 KB

logos/baldymc.png

64.3 KB

logos/beastmc.png

165 KB

logos/cavepvp.png

138 KB

logos/cobaltclub.png

48.7 KB

logos/coldnetwork.png

128 KB

logos/coralmc.png

189 KB

logos/crotus.png

83 KB

logos/cubehard.png

33.3 KB

logos/cylonemc.png

76.6 KB

logos/dynamicpvp.png

135 KB

logos/edenmine.png

61.4 KB

logos/erisium.png

142 KB

logos/faithfulmc.png

225 KB

logos/feargames.png

234 KB

logos/freakyville.png

164 KB

logos/fruitservers.png

266 KB

logos/fruskygames.png

124 KB

logos/ghouluhc.png

121 KB

logos/goldenuhc.png

226 KB

logos/gommehd.png

257 KB

logos/hadaria.png

42.2 KB

logos/hazelmc.png

246 KB

logos/hivemc.png

35.9 KB

logos/holyhcf.png

67.9 KB

logos/hycraft.png

179 KB

logos/hypixel.png

68.5 KB

logos/invadedlands.png

110 KB

logos/jailmc.png

239 KB

logos/jartexnetwork.png

226 KB

logos/librecraft.png

238 KB

logos/loverfella.png

46.1 KB

logos/luckynetwork.png

154 KB

logos/mcgamer.png

165 KB

logos/mcmanhunt.png

422 KB

logos/mcplayhd.png

128 KB

logos/minechaos.png

180 KB

logos/mineclub.png

168 KB

logos/mineglobe.png

223 KB

logos/minehut.png

14.2 KB

logos/minejunkie.png

69.6 KB

logos/minemenclub.png

39.7 KB

logos/mineplex.png

184 KB

logos/minerip.png

132 KB

logos/munchymc.png

87 KB

logos/mush.png

368 KB

logos/mythicnetwork.png

124 KB

logos/ognetwork.png

281 KB

logos/originrealms.png

135 KB

logos/pandakmc.png

312 KB

logos/pandorianmc.png

91.1 KB

logos/potpvpbrazil.png

161 KB

logos/pvparcade.png

245 KB

logos/pvpgym.png

128 KB

logos/pvplegacy.png

61.2 KB

logos/qplay.png

13.6 KB

logos/redesky.png

122 KB

logos/rinaorc.png

428 KB

logos/sagepvp.png

218 KB

logos/shotbow.png

118 KB

logos/skillwars.png

230 KB

logos/skycraft.png

49.6 KB

logos/skyservers.png

49.2 KB

logos/sololegends.png

102 KB

logos/squidland.png

225 KB

logos/starcraft.png

253 KB

logos/survivalgamescz.png

118 KB

logos/sydaria.png

181 KB

logos/teamfight.png

22.3 KB

logos/thearchon.png

129 KB

logos/timolia.png

56.2 KB

logos/uhchub.png

382 KB

logos/ultimismc.png

149 KB

logos/universocraft.png

213 KB

logos/veltpvp.png

86.2 KB

logos/vicnix.png

41.1 KB

logos/vipermc.png

87 KB

logos/virtualplanet.png

253 KB

logos/warfaremc.png

195 KB

logos/wildya.png

148 KB

logos/wynncraft.png

129 KB

logos/yolomc.png

318 KB

prepare_logos.py

+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import json
2+
import argparse
3+
import webptools
4+
import shutil
5+
import os
6+
7+
from PIL import Image
8+
9+
10+
def main():
11+
# Webp Fix.
12+
webptools.grant_permission()
13+
14+
parser = argparse.ArgumentParser()
15+
parser.add_argument('--input', required=True, type=str)
16+
parser.add_argument('--source', required=True, type=str)
17+
parser.add_argument('--destination', required=True, type=str)
18+
parser.add_argument('--resize', default='512', type=int)
19+
parser.add_argument('--lossless', default=False, action='store_true')
20+
args = parser.parse_args()
21+
22+
# Load server mappings index.
23+
servers_file = open(args.input)
24+
servers = json.load(servers_file)
25+
servers_file.close()
26+
27+
# Create logos ouput folder.
28+
os.makedirs(args.destination, exist_ok=True)
29+
30+
# Loop through each server in index.
31+
for server in servers:
32+
try:
33+
server_id = server['id']
34+
server_name = server['name']
35+
logo_source = '%s/%s.png' % (args.source, server_id)
36+
logo_destination = '%s/%s.webp' % (args.destination, server_id)
37+
38+
# Check if server in index has an accompanying logo.
39+
if not os.path.isfile(logo_source):
40+
raise ValueError(
41+
'%s does not have a server logo... Please ensure the file name matches the server ID and is a PNG.' %
42+
server_name
43+
)
44+
45+
# Load image and check dimensions.
46+
server_logo = Image.open(logo_source)
47+
if server_logo.width != server_logo.height:
48+
raise ValueError(
49+
'%s\'s server logo does not have a 1:1 aspect ratio... Please ensure the image meets the requirements before proceeding.' %
50+
server_name
51+
)
52+
if server_logo.width < 512:
53+
raise ValueError(
54+
'%s\'s server logo width/height is less than 512px... Please ensure the image meets the requirements before proceeding.' %
55+
server_name
56+
)
57+
58+
# Convert to Webp.
59+
output = webptools.cwebp(
60+
input_image=(logo_source),
61+
output_image=(logo_destination),
62+
option=('-lossless ' if args.lossless else '') + f'-resize {args.resize} {args.resize} -metadata none'
63+
)
64+
if output['exit_code']:
65+
raise OSError(f'Failed to run cwebp on {logo_source}: {output}')
66+
67+
print('Successfully converted %s\'s logo.' % server_name)
68+
except Exception:
69+
print('Couldn\'t process %s\'s logo... Skipping.' % server_name)
70+
71+
print('Done!')
72+
73+
74+
if __name__ == '__main__':
75+
main()

0 commit comments

Comments
 (0)