/
animal.py
64 lines (51 loc) · 2.06 KB
/
animal.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import romkan
from PIL import Image
def try_unicode(str):
try:
return str.decode('utf-8')
except Exception:
return str
class Animal:
def __init__(self, latin = "", ka = "", zoku = "", romaji = "", kana = "",
rarity = 3, display_name = "", masuda = None, takatsu = None):
kana = try_unicode(kana)
if not romaji and kana:
romaji = romkan.to_roma(kana).replace("n'", "nn")
elif not kana and romaji:
kana = romkan.to_kana(romaji)
self.romaji = romaji
self.kana = kana
self.masuda = masuda if masuda else []
self.takatsu = takatsu if takatsu else []
self.latin = latin if latin else ""
self.ka = ka if ka else ""
self.zoku = zoku if zoku else ""
self.rarity = rarity if rarity else 3
self.display_name = display_name if display_name else self.kana
def get_link(self):
return "/ikimono/" + self.romaji + ".html"
def image(self, suffix):
return os.path.join("/images/ikimono", self.romaji, self.romaji + "-" + suffix + ".jpg")
def inhabits(self, river, ryuuiki):
if river == "takatsu":
return self.takatsu_inhabits(ryuuiki)
if river == "masuda":
return self.masuda_inhabits(ryuuiki)
def takatsu_inhabits(self, ryuuiki):
return ryuuiki in self.takatsu
def masuda_inhabits(self, ryuuiki):
return ryuuiki in self.masuda
def starting_location(self):
locations = self.locations()
return locations[0] if locations else ""
def locations(self):
return ["takatsu-" + ryuuiki for ryuuiki in self.takatsu] + ["masuda-" + ryuuiki for ryuuiki in self.masuda]
def rarity_stars(self):
return ("★" * self.rarity) + ("☆" * (5 - self.rarity))
def is_long(self):
ichiran_img = os.path.join("animals/web", self.image('ichiran')[1:]) # remove root slash
width, height = Image.open(ichiran_img).size
return height * 1.99 <= width