Task.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import time
  2. from collections import UserDict
  3. from common.databases import int2long
  4. class Task(UserDict):
  5. """
  6. # >>> import json
  7. # >>> task = Task(name='剑鱼')
  8. # >>> task_str = json.dumps(task, default=lambda obj: obj.__dict__['data'], ensure_ascii=False)
  9. # >>> task_obj = json.loads(task_str, object_hook=lambda d: Task(**d))
  10. """
  11. def __init__(
  12. self,
  13. name='',
  14. url='',
  15. domain='',
  16. base_url='',
  17. search='',
  18. classify='',
  19. groups='',
  20. origin='',
  21. weight=1,
  22. depth=None,
  23. status_code=None,
  24. err_reason='',
  25. create_at=int2long(int(time.time())),
  26. update_at=int2long(int(time.time())),
  27. ):
  28. super(Task, self).__init__(
  29. name=name,
  30. url=url,
  31. domain=domain,
  32. base_url=base_url,
  33. search=search,
  34. classify=classify,
  35. groups=groups,
  36. origin=origin,
  37. weight=weight,
  38. status_code=status_code,
  39. depth=depth,
  40. err_reason=err_reason,
  41. create_at=create_at,
  42. update_at=update_at,
  43. )
  44. def _update_at(self):
  45. super(Task, self).__setitem__('update_at', int2long(int(time.time())))
  46. def __setitem__(self, key, value):
  47. self._update_at()
  48. super(Task, self).__setitem__(str(key), value)
  49. def __getitem__(self, item):
  50. self._update_at()
  51. return super(Task, self).__getitem__(item)
  52. @property
  53. def retrieve_task_to_dict(self):
  54. item = {
  55. 'name': self.data['name'],
  56. 'url': self.data['url'],
  57. 'domain': self.data['domain'],
  58. 'origin': self.data['origin'],
  59. 'groups': self.data['groups'],
  60. 'create_at': self.data['create_at'],
  61. 'update_at': self.data['update_at'],
  62. }
  63. return item
  64. @property
  65. def excavate_task_to_dict(self):
  66. item = {
  67. 'name': self.data['name'],
  68. 'url': self.data['url'],
  69. 'domain': self.data['domain'],
  70. 'depth': self.data['depth'],
  71. 'origin': self.data['origin'],
  72. 'groups': self.data['groups'],
  73. 'create_at': self.data['create_at'],
  74. 'update_at': self.data['update_at'],
  75. }
  76. return item
  77. @property
  78. def validate_task_to_dict(self):
  79. item = {
  80. 'domain': self.data['domain'],
  81. 'origin': self.data['origin'],
  82. 'create_at': self.data['update_at'],
  83. }
  84. return item