import bs4
soup = lambda cont: bs4.BeautifulSoup(cont, "html.parser")
+__all__ = ["anime", "getlist",
+ "error", "incompatible"]
+
base = "http://www.animenewsnetwork.com/encyclopedia/"
class error(Exception):
for el in soup:
ret += cstr(el)
return ret
+ elif isinstance(soup, str):
+ return soup
elif soup is None:
return None
else:
return ret
return int(ret)
+ @cproperty
+ def vintage(self):
+ return cstr(self._info("vintage")).strip()
+
+ @cproperty
+ def genres(self):
+ return [cstr(el) for x in (self._info("genres") or []) if isinstance(x, bs4.Tag) for el in x.findAll("a")]
+
+ @cproperty
+ def themes(self):
+ return [cstr(el) for x in (self._info("themes") or []) if isinstance(x, bs4.Tag) for el in x.findAll("a")]
+
def __repr__(self):
return "<ann.anime: %r (%i)>" % (self.name, self.id)
linkpat = re.compile("^/encyclopedia/anime\\.php\\?id=(\d+)$")
def getlist(name):
- name = s(name, "^the\s+", "")
+ name = s(name, "^(the|a)\s+", "")
if len(name) < 1:
raise error("list() needs a prefix of at least one character")
fc = name[0]
ret = []
ldiv = afind(afind(d, "div", id="maincontent"), "div", "lst")
for link in ldiv("a", "HOVERLINE"):
- mn = ""
+ rawname = ""
for el in link.font:
if isinstance(el, str):
- mn += el.strip()
+ rawname += el.strip()
+ mn = rawname.lower()
+ mn = s(mn, "^a\s+", "")
+ mn = mn.replace("\u014d", "ou")
+ mn = mn.replace("\u016b", "uu")
if mn.lower().startswith(name.lower()):
m = linkpat.match(link["href"])
if not m:
raise incompatible()
found = anime.byid(int(m.groups()[0]))
- found.rawname = mn
+ found.rawname = rawname
ret.append(found)
return ret