panda1835 commited on
Commit
81b9a71
β€’
1 Parent(s): 67c0f3e

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +12 -24
  2. utils.py +121 -12
app.py CHANGED
@@ -20,15 +20,6 @@ def new_streak(intensity):
20
  new_streak = utils.get_streak()
21
  return f"{new_streak} streak days", '## ' + 'βœ… ' * new_streak, reward
22
 
23
- # def update_pokemon_gallery():
24
- # pokemon_exps = []
25
-
26
- # pokemons = utils.get_pokemon()
27
- # for dex in pokemons.keys():
28
- # info = gr.Markdown(f"**EXP**: {utils.get_poke_energy(dex)}")
29
- # pokemon_exps.append(info)
30
- # return pokemon_exps
31
-
32
  def restart():
33
  with open('dummy.txt', 'w') as f:
34
  f.write(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
@@ -43,28 +34,25 @@ with gr.Blocks() as demo:
43
 
44
  gr.Markdown('<h1 style="text-align: center;">PokeVerse</h1>')
45
  reward_md = gr.Markdown()
46
- winning_btn = gr.Button("Are you winning today? πŸ’ͺ")
47
- restart_btn = gr.Button("Restart πŸ€")
48
  intensity = gr.Slider(0, 3, step=1, label="Intensity")
49
- streak_md = gr.Markdown(f"{streaks} streak days")
50
  streakboard = gr.Markdown('## ' + 'βœ… ' * streaks)
51
-
 
52
  gr.Markdown('<h2 style="text-align: center;">My Poke Friends</h2>')
53
 
54
- pokemon_exps = []
55
-
56
  with gr.Row():
57
  for dex in pokemons.keys():
58
- with gr.Group():
59
- with gr.Column(min_width=200) as poke_col:
60
- gr.Image(pokemons[dex]['image'], show_label=False)
61
- with gr.Accordion(pokemons[dex]['name'], open=False):
62
- gr.Markdown(pokemons[dex]['description'])
63
- info = gr.Markdown(f"**EXP**: {utils.get_poke_energy(dex)}")
64
- pokemon_exps.append(info)
65
-
66
 
67
  winning_btn.click(new_streak, inputs=[intensity], outputs=[streak_md, streakboard, reward_md])
68
  restart_btn.click(restart, None, None)
69
- # streak_md.change(update_pokemon_gallery, outputs=pokemon_exps)
70
  demo.launch()
 
20
  new_streak = utils.get_streak()
21
  return f"{new_streak} streak days", '## ' + 'βœ… ' * new_streak, reward
22
 
 
 
 
 
 
 
 
 
 
23
  def restart():
24
  with open('dummy.txt', 'w') as f:
25
  f.write(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
 
34
 
35
  gr.Markdown('<h1 style="text-align: center;">PokeVerse</h1>')
36
  reward_md = gr.Markdown()
37
+ winning_btn = gr.Button("πŸ’ͺ Are you winning today? πŸ’ͺ")
38
+ restart_btn = gr.Button("πŸ€ Restart πŸ€")
39
  intensity = gr.Slider(0, 3, step=1, label="Intensity")
40
+ streak_md = gr.Markdown(f"### πŸ”₯ {streaks} streak days")
41
  streakboard = gr.Markdown('## ' + 'βœ… ' * streaks)
42
+ money_md = gr.Markdown(f"### πŸ’° Money saved: {'{:,}'.format(utils.get_money())} VND")
43
+ money_md = gr.Markdown(f"### 🧱 Minifigure: {utils.get_total_minifigure()}")
44
  gr.Markdown('<h2 style="text-align: center;">My Poke Friends</h2>')
45
 
 
 
46
  with gr.Row():
47
  for dex in pokemons.keys():
48
+ if pokemons[dex]['visible'] == True:
49
+ with gr.Group():
50
+ with gr.Column(min_width=200) as poke_col:
51
+ gr.Image(pokemons[dex]['image'], show_label=False)
52
+ with gr.Accordion(pokemons[dex]['name'], open=False):
53
+ gr.Markdown(pokemons[dex]['description'])
54
+ info = gr.Markdown(f"**EXP**: {utils.get_poke_energy(dex)}")
 
55
 
56
  winning_btn.click(new_streak, inputs=[intensity], outputs=[streak_md, streakboard, reward_md])
57
  restart_btn.click(restart, None, None)
 
58
  demo.launch()
utils.py CHANGED
@@ -84,7 +84,7 @@ def get_poke_energy(dex):
84
  metadata = read_metadata()
85
  return metadata["pokemon"][dex]["energy"]
86
 
87
- def pokemon(dex):
88
  pokemon = pypokedex.get(dex=dex)
89
  description = pokemon.get_descriptions()
90
  try:
@@ -99,6 +99,62 @@ def pokemon(dex):
99
  sprite = None
100
  return name, description, image, sprite
101
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  def random_pokemon():
103
  min_dex = 1
104
  max_dex = 1017
@@ -106,8 +162,9 @@ def random_pokemon():
106
  all_dex = get_all_pokemon_dex()
107
  while True:
108
  dex = random.randint(min_dex, max_dex)
109
- if dex not in all_dex:
110
- name, description, image, sprite = pokemon(dex)
 
111
  break
112
 
113
  random_pokemon = {
@@ -116,7 +173,9 @@ def random_pokemon():
116
  "image": image,
117
  "sprite": sprite,
118
  "description": description,
119
- "energy": 0
 
 
120
  }
121
  }
122
 
@@ -124,8 +183,7 @@ def random_pokemon():
124
 
125
  def add_new_pokemon(new_pokemon):
126
  metadata = read_metadata()
127
- dex = list(new_pokemon.keys())[0]
128
- metadata["pokemon"][dex] = new_pokemon[dex]
129
  return metadata
130
 
131
  def is_lucky(streak):
@@ -185,6 +243,44 @@ def new_streak(intensity):
185
  streak = metadata["streak"]
186
  reward = ""
187
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
188
  if is_lucky(streak):
189
  gift = lucky_draw()
190
  if gift[0] == 'money':
@@ -199,19 +295,32 @@ def new_streak(intensity):
199
  gift_str = "a minifigure"
200
 
201
  if gift[0] == 'energy':
202
- gift_str = f"{gift[2]} energy point to {get_pokemon_by_dex(gift[1])['name']}"
203
 
204
- reward += f"**Lucky*!!!* You are rewarded {gift_str}.\n\n"
205
 
206
  # Update new reward
207
  metadata = read_metadata()
208
 
209
  all_dex = get_all_pokemon_dex()
210
- random_dex = random.choice(all_dex)
211
- energy = poke_energy(streak, intensity)
212
- metadata["pokemon"][random_dex]["energy"] += energy
213
- reward += f"Your **{metadata['pokemon'][random_dex]['name']}** has just got **{energy} EXP**.\n\n"
 
 
 
 
 
 
 
 
 
 
214
 
 
 
 
215
  save_metadata(metadata)
216
 
217
  is_first_day_of_week = datetime.date.today().weekday() == 0
 
84
  metadata = read_metadata()
85
  return metadata["pokemon"][dex]["energy"]
86
 
87
+ def get_pokemon_info(dex):
88
  pokemon = pypokedex.get(dex=dex)
89
  description = pokemon.get_descriptions()
90
  try:
 
99
  sprite = None
100
  return name, description, image, sprite
101
 
102
+ def get_evolution_chain(dex):
103
+ # Fetch the PokΓ©mon species data for Ivysaur
104
+ pokemon = pypokedex.get(dex=dex)
105
+ name = pokemon.name
106
+ species_url = f"https://pokeapi.co/api/v2/pokemon-species/{name}"
107
+ species_response = requests.get(species_url)
108
+ species_data = json.loads(species_response.text)
109
+
110
+ # Extract the evolution chain URL
111
+ evolution_chain_url = species_data['evolution_chain']['url']
112
+
113
+ # Fetch the evolution chain data
114
+ evolution_chain_response = requests.get(evolution_chain_url)
115
+ evolution_chain_data = json.loads(evolution_chain_response.text)
116
+
117
+ # Parse the evolution chain data and get the full list of evolutions
118
+ evolution_list = []
119
+ chain = evolution_chain_data['chain']
120
+ while chain:
121
+ species_name = chain['species']['name']
122
+ evolution_list.append(pypokedex.get(name=species_name).dex)
123
+ if chain.get('evolves_to') != []:
124
+ chain = chain.get('evolves_to')[0]
125
+ else:
126
+ break
127
+
128
+ return evolution_list
129
+
130
+ def can_evolve(dex, energy):
131
+ metadata = read_metadata()
132
+ if metadata["pokemon"][dex]["max_energy"] <= energy:
133
+ return True
134
+ else:
135
+ return False
136
+
137
+ def evolve_to(dex):
138
+ evolution_chain = get_evolution_chain(dex)
139
+ print(evolution_chain)
140
+ # If fully evolved
141
+ if dex == evolution_chain[-1]:
142
+ return None
143
+ else:
144
+ evolve_dex = evolution_chain[evolution_chain.index(dex) + 1]
145
+ name, description, image, sprite = get_pokemon_info(evolve_dex)
146
+ return {
147
+ evolve_dex: {
148
+ "name": name,
149
+ "image": image,
150
+ "sprite": sprite,
151
+ "description": description,
152
+ "energy": 0,
153
+ "max_energy": 100 + 20*(evolution_chain.index(dex) + 1),
154
+ "visible": True
155
+ }
156
+ }
157
+
158
  def random_pokemon():
159
  min_dex = 1
160
  max_dex = 1017
 
162
  all_dex = get_all_pokemon_dex()
163
  while True:
164
  dex = random.randint(min_dex, max_dex)
165
+ # if not in the team and the first level
166
+ if (dex not in all_dex) and (dex == get_evolution_chain(dex)[0]):
167
+ name, description, image, sprite = get_pokemon_info(dex)
168
  break
169
 
170
  random_pokemon = {
 
173
  "image": image,
174
  "sprite": sprite,
175
  "description": description,
176
+ "energy": 0,
177
+ "max_energy": 100,
178
+ "visible": True
179
  }
180
  }
181
 
 
183
 
184
  def add_new_pokemon(new_pokemon):
185
  metadata = read_metadata()
186
+ metadata["pokemon"].update(new_pokemon)
 
187
  return metadata
188
 
189
  def is_lucky(streak):
 
243
  streak = metadata["streak"]
244
  reward = ""
245
 
246
+ date1 = datetime.datetime.today()
247
+ date2 = datetime.datetime.strptime(metadata["last_streak_day"], "%d/%m/%Y")
248
+ delta = date1 - date2
249
+ distance = delta.days
250
+
251
+ if (distance >= 2):
252
+ metadata = {
253
+ "streak": 0,
254
+ "total_minifigure": 0,
255
+ "donation": [
256
+ {
257
+ "wildact": {
258
+ "donation_link": "https://www.wildact-vn.org/en/support-us/donate/",
259
+ "image": "https://a-us.storyblok.com/f/1014782/567x567/7338612d04/wa_logo-2023-vn.png"
260
+ }
261
+ }
262
+ ],
263
+ "last_streak_day": datetime.datetime.today().strftime("%d/%m/%Y"),
264
+ "money": 0,
265
+ "pokemon": {
266
+ "4": {
267
+ "name": "Charmander",
268
+ "image": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/other/official-artwork/4.png",
269
+ "sprite": "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/4.png",
270
+ "description": "Obviously prefers hot places. When it rains, steam is said to spout from the tip of its tail.",
271
+ "energy": 179,
272
+ "max_energy": 100,
273
+ "visible": false
274
+ }
275
+ },
276
+ "wishlist": [
277
+ "https://u6wdnj9wggobj.vcdn.cloud/media/catalog/product/cache/a237138a07ed0dd2cc8a6fa440635ea6/7/6/76414_copy_0.jpg",
278
+ "https://u6wdnj9wggobj.vcdn.cloud/media/catalog/product/cache/a237138a07ed0dd2cc8a6fa440635ea6/6/0/60302_7_.jpg"
279
+ ]
280
+ }
281
+ save_metadata(metadata)
282
+ return "# πŸ”₯πŸ”₯πŸ”₯ YOU SKIP 1 DAYYYYYY. EVERYTHING IS BURNTTTTTT. ALL YOUR FRIENDS ARE VANISHINGGGGG πŸ”₯πŸ”₯πŸ”₯"
283
+
284
  if is_lucky(streak):
285
  gift = lucky_draw()
286
  if gift[0] == 'money':
 
295
  gift_str = "a minifigure"
296
 
297
  if gift[0] == 'energy':
298
+ gift_str = f"{gift[2]} energy point to **{get_pokemon_by_dex(gift[1])['name']}**"
299
 
300
+ reward += f"**Lucky!!!** You are awarded {gift_str} 🎁.\n\n \n\n"
301
 
302
  # Update new reward
303
  metadata = read_metadata()
304
 
305
  all_dex = get_all_pokemon_dex()
306
+ while True:
307
+ random_dex = random.choice(all_dex)
308
+ if metadata["pokemon"][random_dex]["visible"] == True:
309
+ energy = poke_energy(streak, intensity)
310
+ metadata["pokemon"][random_dex]["energy"] += energy
311
+
312
+ if can_evolve(random_dex, metadata["pokemon"][random_dex]["energy"]):
313
+ metadata["pokemon"][random_dex]["visible"] = False
314
+ evolve_pokemon = evolve_to(int(random_dex))
315
+ evolve_dex = list(evolve_pokemon.keys())[0]
316
+ metadata["pokemon"].update(evolve_pokemon)
317
+ reward += f"Your **{metadata['pokemon'][random_dex]['name']}** has just evolved into **{metadata['pokemon'][evolve_dex]['name']}**. Hoorayyyyy!!! πŸ₯³.\n\n \n\n"
318
+
319
+ reward += f"Your **{metadata['pokemon'][random_dex]['name']}** has just got **{energy} EXP** β˜€οΈ.\n\n \n\n"
320
 
321
+ break
322
+
323
+ metadata["last_streak_day"] = datetime.datetime.today().strftime("%d/%m/%Y")
324
  save_metadata(metadata)
325
 
326
  is_first_day_of_week = datetime.date.today().weekday() == 0