guanjun.py 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. # import datetime
  2. import pymongo
  3. import time
  4. import logging
  5. from ..utils.helper import Helper
  6. class Guanjunpipeline(object):
  7. def open_spider(self, spider):
  8. self.mongo = pymongo.MongoClient(host="192.168.2.200", username="kaiyou", password="kaiyou", port=27017)
  9. self.db = self.mongo['kaiyou']
  10. def process_item(self, item, spider):
  11. # gj_odds = []
  12. url = 'http://admin.5gogo.com/'
  13. logger = logging.getLogger(__name__)
  14. data_game = item['data_game'].replace('年', "-").replace('月', "-").replace('日', "")
  15. time_game = item['time_game']
  16. ctime = data_game + " " + time_game + ":00"
  17. uptime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
  18. league_name = item['league_name']
  19. tema_home = item['tema_home']
  20. league_id = item['league_id']
  21. match_id = item['game_id']
  22. new_league_name = item['new_league_name']
  23. # 冠军赔率
  24. champion_team = round(item['champion_team'], 2)
  25. # 冠军玩法
  26. new_champion = item['new_champion']
  27. # 构建唯一哈希索引
  28. time1 = time.mktime(time.strptime(ctime, '%Y-%m-%d %H:%M:%S')) + 43200
  29. time2 = time.localtime(time1)
  30. time3 = time.strftime('%Y-%m-%d %H:%M:%S', time2)
  31. ball = item['ball']
  32. if ball == '足球':
  33. game_code = 'zq'
  34. league_table = 'hg3535_zq_league'
  35. odds_table = "hg3535_zq_chain_odds"
  36. elif ball == '篮球':
  37. game_code = 'lq'
  38. league_table = 'hg3535_lq_league'
  39. odds_table = "hg3535_lq_chain_odds"
  40. elif ball == '网球':
  41. game_code = 'wq'
  42. league_table = "hg3535_wq_league"
  43. odds_table = "hg3535_wq_chain_odds"
  44. elif ball == '棒球':
  45. game_code = 'bq'
  46. league_table = "hg3535_bq_league"
  47. odds_table = "hg3535_bq_chain_odds"
  48. else:
  49. print(ball, "冠军数据球类错误")
  50. return
  51. league_list = []
  52. uuid = Helper.genearte_MD5(league_name + 'hg0088')
  53. payload_key = ['game_code', 'title', 'match_id', 'lg_id', 'source']
  54. payload_value = [game_code, 'league', match_id, league_id, 'hg3535']
  55. l_payload = dict(zip(payload_key, payload_value))
  56. league_key = ['name_chinese', 'kind', 'match_mode', 'if_stop', 'identity', 'belong', 'last_time',
  57. 'lg_id', 'source', 'uuid']
  58. league_value = [new_league_name, '0', '0', '0', uuid, '0', time3, league_id, 'hg3535', uuid]
  59. league_dict = dict(zip(league_key, league_value))
  60. if self.db[league_table].find({'uuid': uuid}).count() < 1:
  61. league_list.append(league_dict)
  62. l_payload['data'] = league_list
  63. try:
  64. print("冠军联赛数据不为空,数据提交")
  65. response_data = Helper.async_post(url + '/setLeague', l_payload)
  66. print(response_data)
  67. print('请求冠军联赛成功')
  68. logger.info('请求足球冠军联赛成功')
  69. except Exception as e:
  70. logger.warning('足球冠军联赛数据数据接口异常,提交失败')
  71. logger.warning(e)
  72. self.db[league_table].insert(league_list)
  73. else:
  74. print('冠军联赛数据已存在')
  75. payload_key1 = ['game_code', 'title', 'source']
  76. payload_value1 = [game_code, 'odds_ch', 'hg3535']
  77. only_list = []
  78. chain_dict = dict(zip(payload_key1, payload_value1))
  79. sole = Helper.genearte_MD5(new_champion + str(league_id) + league_name + new_league_name + tema_home)
  80. odds_only = Helper.genearte_MD5(new_champion + str(league_id) + league_name + new_league_name + str(champion_team) + tema_home + str(match_id))
  81. only_list.append(odds_only)
  82. data_key = ['match_id', 'lg_id', 'odds_code', 'status', 'sort', 'p_code', 'odds',
  83. 'condition', 'odds_only', 'sole', 'source', 'type', 'team', 'uuid']
  84. data_value = [match_id, league_id, new_champion, '0', '0', new_league_name, champion_team, '0', odds_only, sole, 'hg3535', '1', tema_home, uuid]
  85. chain_data = dict(zip(data_key, data_value))
  86. data_list = []
  87. if self.db[odds_table].find({'odds_only': odds_only}).count() < 1:
  88. data_list.append(chain_data)
  89. chain_dict['data'] = data_list
  90. chain_dict['odds_only'] = only_list
  91. try:
  92. response_data = Helper.async_post(url + '/setOddsCH', chain_dict)
  93. # logger.warning(response_data.text)
  94. print(odds_table, response_data)
  95. print(odds_table, '请求冠军赔率成功')
  96. except Exception as e:
  97. logger.warning('冠军赔率接口异常,提交失败')
  98. logger.warning(e)
  99. self.db[odds_table].insert(chain_data)
  100. else:
  101. print('足球冠军已经提交过了')
  102. logger.info('足球冠军已经提交过了')