def __init__(self, aniDB, number=None, epid=None, filePath=None, fid=None, epno=None, paramsA=None, paramsF=None, load=False): if not aniDB and not number and not epid and not file and not fid: return None self.maper = AniDBMaper() self.epid = epid self.filePath = filePath self.fid = fid self.epno = epno if not paramsA: self.bitCodeA = "C000F0C0" self.paramsA = self.maper.getFileCodesA(self.bitCodeA) else: self.paramsA = paramsA self.bitCodeA = self.maper.getFileBitsA(self.paramsA) if not paramsF: self.bitCodeF = "7FF8FEF8" self.paramsF = self.maper.getFileCodesF(self.bitCodeF) else: self.paramsF = paramsF self.bitCodeF = self.maper.getFileBitsF(self.paramsF) aniDBabstractObject.__init__(self, aniDB, load)
def __init__(self, aniDB, name=None, aid=None, tvdbid=None, paramsA=None, autoCorrectName=False, load=False): self.maper = AniDBMaper() self.tvDBMap = TvDBMap() self.allAnimeXML = None self.name = name self.aid = aid self.tvdb_id = tvdbid if self.tvdb_id and not self.aid: self.aid = self.tvDBMap.get_anidb_for_tvdb(self.tvdb_id) if not (self.name or self.aid): raise AniDBIncorrectParameterError("No aid or name available") if not self.aid: self.aid = self._get_aid_from_xml(self.name) if not self.name or autoCorrectName: self.name = self._get_name_from_xml(self.aid) if not (self.name or self.aid): raise ValueError if not self.tvdb_id: self.tvdb_id = self.tvDBMap.get_tvdb_for_anidb(self.aid) if not paramsA: self.bitCode = "b2f0e0fc000000" self.params = self.maper.getAnimeCodesA(self.bitCode) else: self.paramsA = paramsA self.bitCode = self.maper.getAnimeBitsA(self.paramsA) super(Anime, self).__init__(aniDB, load)
def __init__(self, aniDB, name=None, aid=None, paramsA=None, autoCorrectName=False, load=False): self.maper = AniDBMaper() self.allAnimeXML = None self.name = name self.aid = aid if not (self.name or self.aid): raise AniDBIncorrectParameterError("No aid or name available") if not (self.name or self.aid): raise ValueError if not paramsA: self.bitCode = "b2f0e0fc000000" self.params = self.maper.getAnimeCodesA(self.bitCode) else: self.paramsA = paramsA self.bitCode = self.maper.getAnimeBitsA(self.paramsA) aniDBabstractObject.__init__(self, aniDB, load)
def __init__(self, aniDB, number=None, epid=None, filePath=None, fid=None, epno=None, paramsA=None, paramsF=None, load=False, calculate=False): self.maper = AniDBMaper() self.epid = epid self.filePath = filePath self.fid = fid self.epno = epno if calculate: (self.ed2k, self.size) = self._calculate_file_stuff(self.filePath) if not paramsA: self.bitCodeA = "C000F0C0" self.paramsA = self.maper.getFileCodesA(self.bitCodeA) else: self.paramsA = paramsA self.bitCodeA = self.maper.getFileBitsA(self.paramsA) if not paramsF: self.bitCodeF = "7FF8FEF8" self.paramsF = self.maper.getFileCodesF(self.bitCodeF) else: self.paramsF = paramsF self.bitCodeF = self.maper.getFileBitsF(self.paramsF) super(Episode, self).__init__(aniDB, load)
class Episode(aniDBabstractObject): def __init__(self, aniDB, number=None, epid=None, filePath=None, fid=None, epno=None, paramsA=None, paramsF=None, load=False, calculate=False): if not aniDB and not number and not epid and not file and not fid: return None self.maper = AniDBMaper() self.epid = epid self.filePath = filePath self.fid = fid self.epno = epno if calculate: (self.ed2k, self.size) = self._calculate_file_stuff(self.filePath) if not paramsA: self.bitCodeA = "C000F0C0" self.paramsA = self.maper.getFileCodesA(self.bitCodeA) else: self.paramsA = paramsA self.bitCodeA = self.maper.getFileBitsA(self.paramsA) if not paramsF: self.bitCodeF = "7FF8FEF8" self.paramsF = self.maper.getFileCodesF(self.bitCodeF) else: self.paramsF = paramsF self.bitCodeF = self.maper.getFileBitsF(self.paramsF) super(Episode, self).__init__(aniDB, load) def load_data(self): """load the data from anidb""" if self.filePath and not (self.ed2k or self.size): (self.ed2k, self.size) = self._calculate_file_stuff(self.filePath) self.rawData = self.aniDB.file(fid=self.fid, size=self.size, ed2k=self.ed2k, aid=self.aid, aname=None, gid=None, gname=None, epno=self.epno, fmask=self.bitCodeF, amask=self.bitCodeA) self._fill(self.rawData.datalines[0]) self._build_names() self.laoded = True def add_to_mylist(self, status=None): """ status: 0 unknown - state is unknown or the user doesn't want to provide this information (default) 1 on hdd - the file is stored on hdd 2 on cd - the file is stored on cd 3 deleted - the file has been deleted or is not available for other reasons (i.e. reencoded) """ if self.filePath and not (self.ed2k or self.size): (self.ed2k, self.size) = self._calculate_file_stuff(self.filePath) try: self.aniDB.mylistadd(size=self.size, ed2k=self.ed2k, state=status) except Exception, e : self.log(u"exception msg: " + str(e)) else:
class Episode(aniDBabstractObject): def __init__(self, aniDB, number=None, epid=None, filePath=None, fid=None, epno=None, paramsA=None, paramsF=None, load=False, calculate=False): self.maper = AniDBMaper() self.epid = epid self.filePath = filePath self.fid = fid self.epno = epno if calculate: (self.ed2k, self.size) = self._calculate_file_stuff(self.filePath) if not paramsA: self.bitCodeA = "C000F0C0" self.paramsA = self.maper.getFileCodesA(self.bitCodeA) else: self.paramsA = paramsA self.bitCodeA = self.maper.getFileBitsA(self.paramsA) if not paramsF: self.bitCodeF = "7FF8FEF8" self.paramsF = self.maper.getFileCodesF(self.bitCodeF) else: self.paramsF = paramsF self.bitCodeF = self.maper.getFileBitsF(self.paramsF) super(Episode, self).__init__(aniDB, load) def load_data(self): """load the data from anidb""" if self.filePath and not (self.ed2k or self.size): (self.ed2k, self.size) = self._calculate_file_stuff(self.filePath) self.rawData = self.aniDB.file(fid=self.fid, size=self.size, ed2k=self.ed2k, aid=self.aid, aname=None, gid=None, gname=None, epno=self.epno, fmask=self.bitCodeF, amask=self.bitCodeA) self._fill(self.rawData.datalines[0]) self._build_names() self.laoded = True def add_to_mylist(self, status=None): """ status: 0 unknown - state is unknown or the user doesn't want to provide this information (default) 1 on hdd - the file is stored on hdd 2 on cd - the file is stored on cd 3 deleted - the file has been deleted or is not available for other reasons (i.e. reencoded) """ if self.filePath and not (self.ed2k or self.size): (self.ed2k, self.size) = self._calculate_file_stuff(self.filePath) try: self.aniDB.mylistadd(size=self.size, ed2k=self.ed2k, state=status) except Exception, e: self.log(u"exception msg: " + str(e)) else:
def __init__(self, cmd, restag, rescode, resstr, rawlines): self.req = cmd self.restag = restag self.rescode = rescode self.resstr = resstr self.rawlines = rawlines self.maper = AniDBMaper()
def __init__(self, aniDB, aid=None, part=0, load=False): if not aniDB and not aid: return None self.maper = AniDBMaper() self.part = part self.aid = aid aniDBabstractObject.__init__(self, aniDB, load)
def __init__(self, aniDB, epid=None, aid=None, epno=None, load=False): if not aniDB and not epid and not (aid and epno): return None self.maper = AniDBMaper() self.epid = epid self.epno = epno self.aid = aid aniDBabstractObject.__init__(self, aniDB, load)
class Anime(aniDBabstractObject): def __init__(self, aniDB, name=None, aid=None, tvdbid=None, paramsA=None, autoCorrectName=False, load=False): self.maper = AniDBMaper() self.tvDBMap = TvDBMap() self.allAnimeXML = None self.name = name self.aid = aid self.tvdb_id = tvdbid if self.tvdb_id and not self.aid: self.aid = self.tvDBMap.get_anidb_for_tvdb(self.tvdb_id) if not (self.name or self.aid): raise AniDBIncorrectParameterError("No aid or name available") if not self.aid: self.aid = self._get_aid_from_xml(self.name) if not self.name or autoCorrectName: self.name = self._get_name_from_xml(self.aid) if not (self.name or self.aid): raise ValueError if not self.tvdb_id: self.tvdb_id = self.tvDBMap.get_tvdb_for_anidb(self.aid) if not paramsA: self.bitCode = "b2f0e0fc000000" self.params = self.maper.getAnimeCodesA(self.bitCode) else: self.paramsA = paramsA self.bitCode = self.maper.getAnimeBitsA(self.paramsA) super(Anime, self).__init__(aniDB, load) def load_data(self): """load the data from anidb""" if not (self.name or self.aid): raise ValueError self.rawData = self.aniDB.anime(aid=self.aid, aname=self.name, amask=self.bitCode) if self.rawData.datalines: self._fill(self.rawData.datalines[0]) self._builPreSequal() self.laoded = True def get_groups(self): if not self.aid: return [] self.rawData = self.aniDB.groupstatus(aid=self.aid) self.release_groups = [] for line in self.rawData.datalines: self.release_groups.append({"name":unicode(line["name"], "utf-8"), "rating":line["rating"], "range":line["episode_range"] }) return self.release_groups #TODO: refactor and use the new functions in anidbFileinfo def _get_aid_from_xml(self, name): if not self.allAnimeXML: self.allAnimeXML = self._read_animetitels_xml() regex = re.compile('( \(\d{4}\))|[%s]' % re.escape(string.punctuation)) # remove any punctuation and e.g. ' (2011)' #regex = re.compile('[%s]' % re.escape(string.punctuation)) # remove any punctuation and e.g. ' (2011)' name = regex.sub('', name.lower()) lastAid = 0 for element in self.allAnimeXML.getiterator(): if element.get("aid", False): lastAid = int(element.get("aid")) if element.text: testname = regex.sub('', element.text.lower()) if testname == name: return lastAid return 0 #TODO: refactor and use the new functions in anidbFileinfo def _get_name_from_xml(self, aid, onlyMain=True): if not self.allAnimeXML: self.allAnimeXML = self._read_animetitels_xml() for anime in self.allAnimeXML.findall("anime"): if int(anime.get("aid", False)) == aid: for title in anime.getiterator(): currentLang = title.get("{http://www.w3.org/XML/1998/namespace}lang", False) currentType = title.get("type", False) if (currentLang == "en" and not onlyMain) or currentType == "main": return title.text return "" def _read_animetitels_xml(self, path=None): if not path: path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "animetitles.xml") f = open(path, "r") allAnimeXML = etree.ElementTree(file=f) return allAnimeXML def _builPreSequal(self): if self.related_aid_list and self.related_aid_type: try: for i in range(len(self.related_aid_list)): if self.related_aid_type[i] == 2: self.__dict__["prequal"] = self.related_aid_list[i] elif self.related_aid_type[i] == 1: self.__dict__["sequal"] = self.related_aid_list[i] except: if self.related_aid_type == 2: self.__dict__["prequal"] = self.related_aid_list elif self.str_related_aid_type == 1: self.__dict__["sequal"] = self.related_aid_list
class Anime(aniDBabstractObject): def __init__(self, aniDB, name=None, aid=None, paramsA=None, autoCorrectName=False, load=False): self.maper = AniDBMaper() self.allAnimeXML = None self.name = name self.aid = aid if not (self.name or self.aid): raise AniDBIncorrectParameterError("No aid or name available") if not (self.name or self.aid): raise ValueError if not paramsA: self.bitCode = "b2f0e0fc000000" self.params = self.maper.getAnimeCodesA(self.bitCode) else: self.paramsA = paramsA self.bitCode = self.maper.getAnimeBitsA(self.paramsA) aniDBabstractObject.__init__(self, aniDB, load) def load_data(self): """load the data from anidb""" if not (self.name or self.aid): raise ValueError self.rawData = self.aniDB.anime(aid=self.aid, aname=self.name, amask=self.bitCode) if self.rawData.datalines: self.fill(self.rawData.datalines[0]) self.builPreSequal() self.loaded = True def get_groups(self): if not self.aid: return [] self.rawData = self.aniDB.groupstatus(aid=self.aid) self.release_groups = [] for line in self.rawData.datalines: self.release_groups.append({ "name": unicode(line["name"], "utf-8"), "rating": line["rating"], "range": line["episode_range"] }) return self.release_groups def builPreSequal(self): if self.dataDict.has_key('related_aid_list') and self.dataDict.has_key( 'related_aid_type'): try: for i in range(len(self.related_aid_list)): if self.related_aid_type[i] == 2: self.dataDict["prequal"] = self.dataDict[ 'related_aid_list'][i] elif self.related_aid_type[i] == 1: self.dataDict["sequal"] = self.dataDict[ 'related_aid_list'][i] except: if self.related_aid_type == 2: self.dataDict["prequal"] = self.dataDict[ 'related_aid_list'] elif self.str_related_aid_type == 1: self.dataDict["sequal"] = self.dataDict['related_aid_list']
class Anime(aniDBabstractObject): def __init__(self, aniDB, name=None, aid=None, paramsA=None, autoCorrectName=False, load=False): self.maper = AniDBMaper() self.allAnimeXML = None self.name = name self.aid = aid if not (self.name or self.aid): raise AniDBIncorrectParameterError("No aid or name available") if not (self.name or self.aid): raise ValueError if not paramsA: self.bitCode = "b2f0e0fc000000" self.params = self.maper.getAnimeCodesA(self.bitCode) else: self.paramsA = paramsA self.bitCode = self.maper.getAnimeBitsA(self.paramsA) aniDBabstractObject.__init__(self, aniDB, load) def load_data(self): """load the data from anidb""" if not (self.name or self.aid): raise ValueError self.rawData = self.aniDB.anime(aid=self.aid, aname=self.name, amask=self.bitCode) if self.rawData.datalines: self.fill(self.rawData.datalines[0]) self.builPreSequal() self.loaded = True def get_groups(self): if not self.aid: return [] self.rawData = self.aniDB.groupstatus(aid=self.aid) self.release_groups = [] for line in self.rawData.datalines: self.release_groups.append({"name":unicode(line["name"], "utf-8"), "rating":line["rating"], "range":line["episode_range"] }) return self.release_groups def builPreSequal(self): if self.dataDict.has_key('related_aid_list') and self.dataDict.has_key('related_aid_type'): try: for i in range(len(self.related_aid_list)): if self.related_aid_type[i] == 2: self.dataDict["prequal"] = self.dataDict['related_aid_list'][i] elif self.related_aid_type[i] == 1: self.dataDict["sequal"] = self.dataDict['related_aid_list'][i] except: if self.related_aid_type == 2: self.dataDict["prequal"] = self.dataDict['related_aid_list'] elif self.str_related_aid_type == 1: self.dataDict["sequal"] = self.dataDict['related_aid_list']
class Anime(aniDBabstractObject): def __init__(self, aniDB, name=None, aid=None, tvdbid=None, paramsA=None, autoCorrectName=False, load=False): self.maper = AniDBMaper() self.tvDBMap = TvDBMap() self.allAnimeXML = None self.name = name self.aid = aid self.tvdb_id = tvdbid if self.tvdb_id and not self.aid: self.aid = self.tvDBMap.get_anidb_for_tvdb(self.tvdb_id) if not (self.name or self.aid): raise AniDBIncorrectParameterError("No aid or name available") if not self.aid: self.aid = self._get_aid_from_xml(self.name) if not self.name or autoCorrectName: self.name = self._get_name_from_xml(self.aid) if not (self.name or self.aid): raise ValueError if not self.tvdb_id: self.tvdb_id = self.tvDBMap.get_tvdb_for_anidb(self.aid) if not paramsA: self.bitCode = "b2f0e0fc000000" self.params = self.maper.getAnimeCodesA(self.bitCode) else: self.paramsA = paramsA self.bitCode = self.maper.getAnimeBitsA(self.paramsA) super(Anime, self).__init__(aniDB, load) def load_data(self): """load the data from anidb""" if not (self.name or self.aid): raise ValueError self.rawData = self.aniDB.anime(aid=self.aid, aname=self.name, amask=self.bitCode) if self.rawData.datalines: self._fill(self.rawData.datalines[0]) self._builPreSequal() self.laoded = True def get_groups(self): if not self.aid: return [] self.rawData = self.aniDB.groupstatus(aid=self.aid) self.release_groups = [] for line in self.rawData.datalines: self.release_groups.append({"name": unicode(line["name"], "utf-8"), "rating": line["rating"], "range": line["episode_range"] }) return self.release_groups # TODO: refactor and use the new functions in anidbFileinfo def _get_aid_from_xml(self, name): if not self.allAnimeXML: self.allAnimeXML = read_anidb_xml() regex = re.compile( '( \(\d{4}\))|[%s]' % re.escape(string.punctuation)) # remove any punctuation and e.g. ' (2011)' #regex = re.compile('[%s]' % re.escape(string.punctuation)) # remove any punctuation and e.g. ' (2011)' name = regex.sub('', name.lower()) lastAid = 0 for element in self.allAnimeXML.iter(): if element.get("aid", False): lastAid = int(element.get("aid")) if element.text: testname = regex.sub('', element.text.lower()) if testname == name: return lastAid return 0 #TODO: refactor and use the new functions in anidbFileinfo def _get_name_from_xml(self, aid, onlyMain=True): if not self.allAnimeXML: self.allAnimeXML = read_anidb_xml() for anime in self.allAnimeXML.findall("anime"): if int(anime.get("aid", False)) == aid: for title in anime.iter(): currentLang = title.get("{http://www.w3.org/XML/1998/namespace}lang", False) currentType = title.get("type", False) if (currentLang == "en" and not onlyMain) or currentType == "main": return title.text return "" def _builPreSequal(self): if self.related_aid_list and self.related_aid_type: try: for i in range(len(self.related_aid_list)): if self.related_aid_type[i] == 2: self.__dict__["prequal"] = self.related_aid_list[i] elif self.related_aid_type[i] == 1: self.__dict__["sequal"] = self.related_aid_list[i] except: if self.related_aid_type == 2: self.__dict__["prequal"] = self.related_aid_list elif self.str_related_aid_type == 1: self.__dict__["sequal"] = self.related_aid_list