sportslst.py 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. # -*- coding: utf-8 -*-
  2. # Define your item pipelines here
  3. #
  4. # Don't forget to add your pipeline to the ITEM_PIPELINES setting
  5. # See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html
  6. import json
  7. import datetime
  8. import re
  9. import pymongo
  10. import requests
  11. from collectSports.biz import getMongo
  12. from collectSports.utils.helper import Helper
  13. from pycomm.mongo import DBMongo
  14. class SportslstPipeline(object):
  15. # def open_spider(self, spider):
  16. # self.host = '192.168.2.200'
  17. # self.port = 27017
  18. # self.dbname = 'kaiyou' # 数据库名
  19. # self.client = pymongo.MongoClient(host=self.host, port=self.port)
  20. # self.tdb = self.client[self.dbname]
  21. # self.port = self.tdb['zq_league'] # 表名
  22. # # competition
  23. # self.port2 = self.tdb['zq_competition'] # 表名
  24. def process_item(self, item, spider):
  25. mongo = getMongo()
  26. print(mongo)
  27. csource = item['csource']
  28. url = 'http://admin.5gogo.com/setSports'
  29. if csource == 'zaopan':
  30. zq_leagues = set(item['zq_league'])
  31. zq_matchs = set(item['zq_match'])
  32. current_time = datetime.datetime.now()
  33. # 联赛
  34. for zq_league in zq_leagues:
  35. league_list = []
  36. payload_key = ['game_code', 'title']
  37. payload_value = ['zq', 'league']
  38. payload = Helper.get_zip_data(payload_key, payload_value)
  39. data_key = ['name_chinese', 'kind', 'match_mode', 'if_stop', 'belong', 'last_time', 'lg_id',
  40. 'source', 'uuid']
  41. data_value = ['name_chinese', '0', '0', '0', '0', current_time.strftime("%Y-%m-%d %H:%M:%S"),
  42. zq_league.get('league_id'), 'hg0088', str(zq_league.get('uuid'))]
  43. data = Helper.get_zip_data(data_key, data_value)
  44. payload['data'] = data
  45. league_list.append(payload)
  46. response_data = Helper.post(url, league_list)
  47. print(response_data.text)
  48. mongo.changeSet('zq_league').insert(dict(zq_league))
  49. # 赛事
  50. for zq_match in zq_matchs:
  51. match_list = []
  52. payload_key = ['game_code', 'title']
  53. payload_value = ['zq', 'competition']
  54. payload = Helper.get_zip_data(payload_key, payload_value)
  55. match_date = zq_match.get('mdate')
  56. match_time = re.search(r'(\d{1,2}):(\d{1,2})', zq_match.get('mtime'))
  57. # 日期时间地区差异转换
  58. if 0 <= int(match_time.group(1)) <= 12:
  59. if int(match_time.group(1)) == 12:
  60. r_match_time = '00:' + match_time.group(2)
  61. else:
  62. r_match_time = str(int(match_time.group(1)) + 12) + ':' + match_time.group(2)
  63. else:
  64. m_time = int(match_time.group(1)) + 12 - 24
  65. if m_time < 10:
  66. r_match_time = '0' + str(m_time) + ':' + match_time.group(2)
  67. else:
  68. r_match_time = str(m_time) + ':' + match_time.group(2)
  69. if int(match_time.group(1)) + 12 >= 24:
  70. match_date = (datetime.datetime.strptime(match_date, '%Y-%m-%d') + datetime.timedelta(
  71. days=1)).strftime('%Y-%m-%d')
  72. old_time = match_date + ' ' + match_time.group(0) + ':00'
  73. if current_time - datetime.datetime.strptime(old_time, "%Y-%m-%d %H:%M:%S") >= datetime.timedelta(
  74. hours=12):
  75. status = 1
  76. else:
  77. status = 0
  78. us_time = match_date + ' ' + r_match_time
  79. data_key = ['home_team', 'guest_team', 'lg_id', 'status', 'match_id', 'match_date', 'match_time',
  80. 'tag', 'source', 'is_rollball', 'is_today', 'is_morningplate', 'is_stringscene', 'us_time',
  81. 'uuid']
  82. data_value = [zq_match.get('host_name'), zq_match.get('guest_name'), zq_match.get('league_id'),
  83. status, zq_match.get('match_id'), match_date, r_match_time,
  84. '0', 'hg0088', zq_match.get('is_roll'), '0', '0', '0', us_time, str(zq_match.get('uuid'))]
  85. data = Helper.get_zip_data(data_key, data_value)
  86. payload['data'] = data
  87. match_list.append(payload)
  88. response_data = Helper.post(url, match_list)
  89. print(response_data.text)
  90. mongo.changeSet('zq_competition').insert(dict(zq_match))
  91. # 冠军
  92. elif csource == 'chain':
  93. zq_chains = set(item['zq_chain'])
  94. current_time = datetime.datetime.now()
  95. for zq_chain in zq_chains:
  96. chain_list = []
  97. payload_key = ['game_code', 'title']
  98. payload_value = ['zq', 'odds']
  99. payload = Helper.get_zip_data(payload_key, payload_value)
  100. data_key = ['match_id', 'lg_id', 'odds_code', 'status', 'sort', 'p_code', 'odds',
  101. 'condition', 'odds_only', 'sole', 'source', 'type', 'team']
  102. data_value = [zq_chain.get('league_id'), zq_chain.get('league_id'), zq_chain.get('league_subname'),
  103. zq_chain.get('enabled'), '0', zq_chain.get('game_type'), zq_chain.get('odds'),
  104. '0', '0', '0', 'c22123', '0', zq_chain.get('name')
  105. ]
  106. data = Helper.get_zip_data(data_key, data_value)
  107. payload['data'] = data
  108. chain_list.append(payload)
  109. response_data = Helper.post(url, chain_list)
  110. print(response_data.text)
  111. mongo.changeSet('zq_chain').insert(dict(zq_chain))
  112. return item
  113. # def close_spider(self, spider):
  114. # self.client.close()