|
|
|
@ -108,15 +108,21 @@ class GatherPokemonFormsWorker(QRunnable): |
|
|
|
|
|
|
|
form_name = self.extract_form_name(sprite) |
|
|
|
#logger.info(f'{sprite_url}, {form_name}') |
|
|
|
record_male_form = False |
|
|
|
record_female_form = False |
|
|
|
record_genderless_form = False |
|
|
|
gender_relevant = False |
|
|
|
if form_name != "None": |
|
|
|
form_index += 1 |
|
|
|
gender = 0 |
|
|
|
if form_name.startswith("Male"): |
|
|
|
form_index -= 1 |
|
|
|
gender = 1 |
|
|
|
gender_relevant = True |
|
|
|
elif form_name.startswith("Female"): |
|
|
|
form_index -= 1 |
|
|
|
gender = 2 |
|
|
|
gender_relevant = True |
|
|
|
|
|
|
|
dex_page_data = self.get_pokemon_dex_page(url_name) |
|
|
|
if dex_page_data: |
|
|
|
@ -156,15 +162,71 @@ class GatherPokemonFormsWorker(QRunnable): |
|
|
|
if generation_found: |
|
|
|
break |
|
|
|
|
|
|
|
pokemon_form = { |
|
|
|
"pfic":format_pokemon_id(national_dex_number, generation, form_index, gender), |
|
|
|
"name":pokemon_name, |
|
|
|
"form_name":form_name if form_name != "None" else None, |
|
|
|
"sprite_url":sprite_url, |
|
|
|
"national_dex":national_dex_number, |
|
|
|
"generation":generation |
|
|
|
} |
|
|
|
found_forms.append(pokemon_form) |
|
|
|
if not gender_relevant: |
|
|
|
# see if we can find gender info on the page to see if it has male and female forms anyway. |
|
|
|
gender_header = dex_soup.find('th', string="Gender") |
|
|
|
if gender_header: |
|
|
|
gender_info = gender_header.findNext('td').getText().replace(",", "").split() |
|
|
|
skip_next = False |
|
|
|
for info in gender_info: |
|
|
|
if skip_next: |
|
|
|
skip_next = False |
|
|
|
continue |
|
|
|
if info.lower().startswith("0%"): |
|
|
|
skip_next = True |
|
|
|
continue |
|
|
|
if info.lower() == "male": |
|
|
|
record_male_form = True |
|
|
|
elif info.lower() == "female": |
|
|
|
record_female_form = True |
|
|
|
|
|
|
|
if not record_female_form and not record_male_form: |
|
|
|
record_genderless_form = True |
|
|
|
|
|
|
|
if gender_relevant or record_genderless_form: |
|
|
|
pokemon_form = { |
|
|
|
"pfic":format_pokemon_id(national_dex_number, generation, form_index, gender), |
|
|
|
"name":pokemon_name, |
|
|
|
"form_name":form_name if form_name != "None" else None, |
|
|
|
"sprite_url":sprite_url, |
|
|
|
"national_dex":national_dex_number, |
|
|
|
"generation":generation, |
|
|
|
"gender_relevant": gender_relevant |
|
|
|
} |
|
|
|
found_forms.append(pokemon_form) |
|
|
|
else: |
|
|
|
if record_male_form: |
|
|
|
gendered_form = form_name |
|
|
|
if gendered_form == "None": |
|
|
|
gendered_form = "Male" |
|
|
|
else: |
|
|
|
gendered_form = "Male " + gendered_form |
|
|
|
pokemon_form = { |
|
|
|
"pfic":format_pokemon_id(national_dex_number, generation, form_index, 1), |
|
|
|
"name":pokemon_name, |
|
|
|
"form_name":gendered_form if gendered_form != "None" else None, |
|
|
|
"sprite_url":sprite_url, |
|
|
|
"national_dex":national_dex_number, |
|
|
|
"generation":generation, |
|
|
|
"gender_relevant": gender_relevant |
|
|
|
} |
|
|
|
found_forms.append(pokemon_form) |
|
|
|
if record_female_form: |
|
|
|
gendered_form = form_name |
|
|
|
if gendered_form == "None": |
|
|
|
gendered_form = "Female" |
|
|
|
else: |
|
|
|
gendered_form = "Female " + gendered_form |
|
|
|
pokemon_form = { |
|
|
|
"pfic":format_pokemon_id(national_dex_number, generation, form_index, 2), |
|
|
|
"name":pokemon_name, |
|
|
|
"form_name":gendered_form if gendered_form != "None" else None, |
|
|
|
"sprite_url":sprite_url, |
|
|
|
"national_dex":national_dex_number, |
|
|
|
"generation":generation, |
|
|
|
"gender_relevant": gender_relevant |
|
|
|
} |
|
|
|
found_forms.append(pokemon_form) |
|
|
|
|
|
|
|
cache.set(url_name, found_forms) |
|
|
|
return found_forms |