city.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. # -*- coding: utf-8 -*-
  2. """
  3. :copyright: ©2018 by IPIP.net
  4. """
  5. from .database import Reader
  6. class CityInfo:
  7. country_name = ""
  8. region_name = ""
  9. city_name = ""
  10. owner_domain = ""
  11. isp_domain = ""
  12. latitude = ""
  13. longitude = ""
  14. timezone = ""
  15. utc_offset = ""
  16. china_admin_code = ""
  17. idd_code = ""
  18. country_code = ""
  19. continent_code = ""
  20. idc = ""
  21. base_station = ""
  22. country_code3 = ""
  23. european_union = ""
  24. currency_code = ""
  25. currency_name = ""
  26. anycast = ""
  27. def __init__(self, **kwargs):
  28. self._map = kwargs
  29. for key in self._map:
  30. self.__dict__[key] = self._map[key]
  31. class City:
  32. db = None
  33. def __init__(self, name):
  34. self.db = Reader(name)
  35. def reload(self, name):
  36. try:
  37. db = Reader(name)
  38. self.db = db
  39. return True
  40. except:
  41. return False
  42. def find(self, addr, language):
  43. return self.db.find(addr, language)
  44. def find_map(self, addr, language):
  45. return self.db.find_map(addr, language)
  46. def find_info(self, addr, language):
  47. m = self.db.find_map(addr, language)
  48. if m is None:
  49. return None
  50. return CityInfo(**m)
  51. def is_ipv4(self):
  52. return self.db.is_support_ipv4()
  53. def is_ipv6(self):
  54. return self.db.is_support_ipv6()
  55. def languages(self):
  56. return self.db.support_languages()
  57. def fields(self):
  58. return self.db.support_fields()
  59. def build_time(self):
  60. return self.db.build_utc_time()