import os import re from xml.etree.ElementTree import Element, SubElement, ElementTree from server import process_pb2 import pymysql import yaml yamlPath = os.path.join(os.path.split(os.path.realpath(__file__))[0], '../config/application.yaml') f = open(yamlPath, 'r', encoding='utf-8') x = yaml.load(f, Loader=yaml.FullLoader) match_info = {} teamHost = {} hostPlayerSpam = [] teamGuest = {} guestPlayerSpam = [] teamHost['Players'] = 0 teamGuest['Players'] = 0 filename = "Stats1.xml" text_eq1 = 'Beijing Guoan' text_eq2 = 'Guangzhou Evergrande' text_journee = '1' text_competition = 'Chinese Friendly matches' attrib1_competition = '01/01/2015' attrib2_competition = '31/12/2015' text_date = '27/03/2015' text_stade = 'Beijing Fengtai Stadium' text_heure = '19:35' text_couleq1 = '#FFFFFF' text_couleq2 = '#FFC0CB' attrib1_codematch = '20207242' text_codematch = 'BEIJI-LUNEN-270315-1' text_tempsDeJeu = '23:45' text_tempsEffectif = '12:34' text_statut = 'pas commence' int_scoreA_match = 2 int_scoreB_match = 3 int_equipeA_rapportForce5Min_attrib = 50 text_equipeA_rapportForce5Min = 'Beijing Guoan' text_equipeA_tempsPossession = '30:00' int_equipeB_rapportForce5Min_attrib = 50 text_equipeB_rapportForce5Min = 'Guangzhou Evergrande' text_equipeB_tempsPossession = '00:00' int_equipeA_pctPossession = 0 int_equipeA_ballonJoue = 11 int_equipeA_ballonGagne = 22 int_equipeA_ballonPerdu = 33 int_equipeA_passe = 44 int_equipeA_passeReussie = 45 int_equipeA_pctPasseReussie = 0 int_equipeA_occasion = 0 int_equipeA_tir = 0 int_equipeA_tirCadre = 0 int_equipeA_tirNonCadre = 0 int_equipeA_pctTirsCadres = 0 int_equipeA_but = 0 int_equipeA_butSurPenalty = 0 int_equipeA_butContreSonCamp = 0 int_equipeA_horsJeu = 0 int_equipeA_cornerEffectue = 0 int_equipeA_toucheEffectuee = 0 int_equipeA_centreEffectue = 0 int_equipeA_coupFrancEffectue = 0 int_equipeA_sortieDeButEffectuee = 0 int_equipeA_penalty = 0 int_equipeA_fauteSubie = 0 int_equipeA_fauteCommise = 0 int_equipeA_tacle = 0 int_equipeA_cartonJaune = 0 int_equipeA_cartonRouge = 0 text_equipeA_entraineur = '' int_equipeB_pctPossession = 0 int_equipeB_ballonJoue = 3 int_equipeB_ballonGagne = 6 int_equipeB_ballonPerdu = 9 int_equipeB_passe = 12 int_equipeB_passeReussie = 0 int_equipeB_pctPasseReussie = 0 int_equipeB_occasion = 0 int_equipeB_tir = 11 int_equipeB_tirCadre = 8 int_equipeB_tirNonCadre = 10 int_equipeB_pctTirsCadres = 0 int_equipeB_but = 7 int_equipeB_butSurPenalty = 0 int_equipeB_butContreSonCamp = 0 int_equipeB_horsJeu = 0 int_equipeB_cornerEffectue = 0 int_equipeB_toucheEffectuee = 0 int_equipeB_centreEffectue = 0 int_equipeB_coupFrancEffectue = 0 int_equipeB_sortieDeButEffectuee = 0 int_equipeB_penalty = 0 int_equipeB_fauteSubie = 0 int_equipeB_fauteCommise = 0 int_equipeB_tacle = 0 int_equipeB_cartonJaune = 0 int_equipeB_cartonRouge = 0 text_equipeB_entraineur = '' class CreateXml: def __init__(self, match_id): self.match_id = match_id def run_create_xml(self): db = pymysql.connect(host=x.get('databases').get('url') + '', user=x.get('databases').get('name'), password=x.get('databases').get('password'), database=x.get('databases').get('database')) # db = pymysql.connect(x.get('databases').get('url'), # x.get('databases').get('name'), # x.get('databases').get('password'), # x.get('databases').get('database') # ) self.fetch_data_from_database(self.match_id, db) tree = self.create_xml() self.update_xml(tree) tree.write(x.get('file').get('path') + filename, encoding='utf-8', xml_declaration=True, short_empty_elements=False) self.clean_list() return process_pb2.XmlResult( status="1" ) def GetTimeString(self, time_in_mil_secs): time_in_secs = int(time_in_mil_secs / 1000) n_min = int(time_in_secs / 60) n_sec = int(time_in_secs - n_min * 60) if n_min == 0 or n_sec == 0: return "" return str(n_min) + ':' + str(n_sec).rjust(2, '0') def pretty_xml(self, element, indent, newline, level=0): # elemnt为传进来的Elment类,参数indent用于缩进,newline用于换行 if element: # 判断element是否有子元素 if (element.text is None) or element.text.isspace(): # 如果element的text没有内容 element.text = newline + indent * (level + 1) else: element.text = newline + indent * (level + 1) + element.text.strip() + newline + indent * (level + 1) # else: # 此处两行如果把注释去掉,Element的text也会另起一行 # element.text = newline + indent * (level + 1) + element.text.strip() + newline + indent * level temp = list(element) # 将element转成list for subelement in temp: if temp.index(subelement) < (len(temp) - 1): # 如果不是list的最后一个元素,说明下一个行是同级别元素的起始,缩进应一致 subelement.tail = newline + indent * (level + 1) else: # 如果是list的最后一个元素, 说明下一行是母元素的结束,缩进应该少一个 subelement.tail = newline + indent * level self.pretty_xml(subelement, indent, newline, level=level + 1) # 对子元素进行递归操作 def create_xml(self): global teamHost, teamGuest element_list = [] tree = ElementTree() statistiques = Element('statistiques') tree._setroot(statistiques) identite = SubElement(statistiques, 'identite') identite_sub_element = ['eq1', 'eq2', 'journee', 'competition', 'date', 'stade', 'heure', 'arbitre', 'arbitre1', 'arbitre2', 'arbitre3', 'source', 'couleq1', 'couleq2', 'codematch'] for i in range(len(identite_sub_element)): element_list.append(SubElement(identite, identite_sub_element[i])) match = SubElement(statistiques, 'match') match_sub_element = ['tempsDeJeu', 'tempsEffectif', 'statut', 'scoreA', 'scoreB', 'remplacement', 'buteur'] for i in range(len(match_sub_element)): element_list.append(SubElement(match, match_sub_element[i])) score_ab = ['scoreA', 'scoreB'] score_ab_sub_element = ['miTemps', 'match'] for i in range(len(score_ab)): for j in range(len(score_ab_sub_element)): element_list.append(SubElement(next(tree.iter(score_ab[i])), score_ab_sub_element[j])) remplace_ab_sub_element = ['remplaceEquipeA', 'remplaceEquipeB'] for i in range(len(remplace_ab_sub_element)): element_list.append(SubElement(next(tree.iter('remplacement')), remplace_ab_sub_element[i])) buteur_ab_sub_element = ['equipeA', 'equipeB'] for i in range(len(buteur_ab_sub_element)): element_list.append(SubElement(next(tree.iter('buteur')), buteur_ab_sub_element[i])) equipes = SubElement(statistiques, 'equipes') equipes_sub_element = ['equipeA', 'equipeB'] for i in range(len(equipes_sub_element)): element_list.append(SubElement(equipes, equipes_sub_element[i])) equipe_ab_sub_element = ['collective', 'individuelle'] for j in range(len(equipe_ab_sub_element)): elementloc = './equipes/' + equipes_sub_element[i] element_list.append(SubElement(tree.find(elementloc), equipe_ab_sub_element[j])) collective_sub_element = ['nomEquipe', 'tempsPossession', 'pctPossession', 'ballonJoue', 'ballonGagne', 'ballonPerdu', 'passe', 'passeReussie', 'pctPasseReussie', 'occasion', 'tir', 'tirCadre', 'tirNonCadre', 'pctTirsCadres', 'but', 'butSurPenalty', 'butContreSonCamp', 'horsJeu', 'cornerEffectue', 'toucheEffectuee', 'centreEffectue', 'coupFrancEffectue', 'sortieDeButEffectuee', 'penalty', 'fauteSubie', 'fauteCommise', 'tacle', 'cartonJaune', 'cartonRouge', 'entraineur', 'possessionZone', 'possessionTemps', 'tirZone', 'attaqueZone', 'nbPassesParAttaque', 'vitesseAttaque', 'attaquesEtTirs', 'zoneRecuperation', 'vitesseRecuperation', 'zoneRecuperationRapide', 'zoneRecuperationEnJeu', 'zoneRecuperationAvecAttaqueRapide', 'zoneFauteSubie', 'zoneFauteCommise', 'directionPasse', 'centre', 'longueurPasse'] for collective_i in range(len(collective_sub_element)): elementloc = './equipes/' + equipes_sub_element[i] + '/' + 'collective' element_list.append(SubElement(tree.find(elementloc), collective_sub_element[collective_i])) individuelleSUbElement = ['nom', 'prenom', 'numeroMaillot', 'nomUsuel', 'capitaine', 'lequipe', 'poste', 'bloc', 'tempsJoue', 'tempsDePossession', 'ballonJoue', 'ballonGagne', 'ballonPerdu', 'passe', 'passeReussie', 'pctPasseReussie', 'passeDecisive', 'occasion', 'tir', 'tirPiedGauche', 'tirPiedDroit', 'tirTete', 'tirCadre', 'tirNonCadre', 'pctTirCadre', 'butMarque', 'butSurPenalty', 'butContreSonCamp', 'horsJeu', 'cornerEffectue', 'toucheEffectuee', 'centreEffectue', 'coupFrancEffectue', 'sortieDeButEffectuee', 'penaltyEffectue', 'fauteSubie', 'fauteCommise', 'tacle', 'uneTouche', 'gardienArret', 'gardienDetournement', 'gardienArretTotal', 'cartonJaune1', 'cartonJaune2', 'cartonRouge', 'tirZone', 'directionPasse', 'positionMoyenne', 'possessionInd', 'zoneFauteSubie', 'zoneFauteCommise', 'zoneTacle', 'circuitPref'] if teamHost['Players'] != 0: for _ in hostPlayerSpam: elementloc = './equipes/' + equipes_sub_element[i] + '/' + 'individuelle' element_list.append(SubElement(tree.find(elementloc), 'joueur')) children = [ Element(str(ele)) for ele in individuelleSUbElement ] element_list[-1].extend(children) # possessionZone possession_zone_sub_element = ['A1', 'A2', 'A3', 'A4', 'B1', 'B2', 'B3', 'B4', 'C1', 'C2', 'C3', 'C4', 'D1', 'D2', 'D3', 'D4', 'A1A4', 'B1C4', 'D1D4', 'A1D1', 'A2D2', 'A3D3', 'A4D4', 'A1B4', 'C1D4'] for possessionZone_i in range(len(possession_zone_sub_element)): elementloc = './equipes/' + equipes_sub_element[i] + '/' + 'collective' + '/' + 'possessionZone' element_list.append(SubElement(tree.find(elementloc), possession_zone_sub_element[possessionZone_i])) possession_zone_a1_d4_sub_element = ['pct', 'temps'] elementloc += '/' elementloc += possession_zone_sub_element[possessionZone_i] for possessionZone_A1D4_i in range(len(possession_zone_a1_d4_sub_element)): element_list.append( SubElement(tree.find(elementloc), possession_zone_a1_d4_sub_element[possessionZone_A1D4_i])) if possession_zone_a1_d4_sub_element[possessionZone_A1D4_i] == 'temps': element_list[-1].text = '00:00' # possessionTemps possession_temps_sub_element = ['tps_0_15', 'tps_15_30', 'tps_30_45', 'tps_45plus', 'tps_45_60', 'tps_60_75', 'tps_75_90', 'tps_90plus', 'tps_0_90plus'] for possessionTemps_i in range(len(possession_temps_sub_element)): elementloc = './equipes/' + equipes_sub_element[i] + '/' + 'collective' + '/' + 'possessionTemps' element_list.append(SubElement(tree.find(elementloc), possession_temps_sub_element[possessionTemps_i])) temps_sub_element = ['pct', 'temps'] elementloc += '/' elementloc += possession_temps_sub_element[possessionTemps_i] for TempsSubElement_i in range(len(temps_sub_element)): element_list.append(SubElement(tree.find(elementloc), temps_sub_element[TempsSubElement_i])) # tirZone tir_zone_sub_element = ['zone1', 'zone2', 'zone3', 'zone4', 'zone5', 'zone6', 'zone1_5'] for tirZoneTemps_i in range(len(tir_zone_sub_element)): elementloc = './equipes/' + equipes_sub_element[i] + '/' + 'collective' + '/' + 'tirZone' element_list.append(SubElement(tree.find(elementloc), tir_zone_sub_element[tirZoneTemps_i])) element_list[-1].text = str(0) # attaqueZone attaque_zone_sub_element = ['nbGauche', 'nbMilieu', 'nbDroite', 'pctGauche', 'pctMilieu', 'pctDroite'] for attaqueZone_i in range(len(attaque_zone_sub_element)): elementloc = './equipes/' + equipes_sub_element[i] + '/' + 'collective' + '/' + 'attaqueZone' element_list.append(SubElement(tree.find(elementloc), attaque_zone_sub_element[attaqueZone_i])) if attaque_zone_sub_element[attaqueZone_i] == 'nbGauche' or attaque_zone_sub_element[ attaqueZone_i] == 'nbMilieu' or attaque_zone_sub_element[attaqueZone_i] == 'nbDroite': element_list[-1].text = str(0) # nbPassesParAttaque nbPassesParAttaqueSubElement = ['haut', 'moyen', 'bas', 'pctHaut'] for nbPassesParAttaque_i in range(len(nbPassesParAttaqueSubElement)): elementloc = './equipes/' + equipes_sub_element[i] + '/' + 'collective' + '/' + 'nbPassesParAttaque' element_list.append( SubElement(tree.find(elementloc), nbPassesParAttaqueSubElement[nbPassesParAttaque_i])) if nbPassesParAttaqueSubElement[nbPassesParAttaque_i] != 'pctHaut': element_list[-1].text = str(0) # vitesseAttaque vitesseAttaqueSubElement = ['haut', 'moyen', 'bas', 'pctHautParRapportAuxBallonsGagnes'] for vitesseAttaque_i in range(len(vitesseAttaqueSubElement)): elementloc = './equipes/' + equipes_sub_element[i] + '/' + 'collective' + '/' + 'vitesseAttaque' element_list.append(SubElement(tree.find(elementloc), vitesseAttaqueSubElement[vitesseAttaque_i])) if vitesseAttaqueSubElement[vitesseAttaque_i] != 'pctHautParRapportAuxBallonsGagnes': element_list[-1].text = str(0) # attaquesEtTirs attaquesEtTirsSubElement = ['nbAttaque', 'nbAttaqueAvecTirCentre', 'nbAttaqueAvecTirSansCentre', 'nbTirEnJeu', 'nbTirRemiseEnJeu'] for attaquesEtTirs_i in range(len(attaquesEtTirsSubElement)): elementloc = './equipes/' + equipes_sub_element[i] + '/' + 'collective' + '/' + 'attaquesEtTirs' element_list.append(SubElement(tree.find(elementloc), attaquesEtTirsSubElement[attaquesEtTirs_i])) element_list[-1].text = str(0) # zoneRecuperation zoneRecuperationSubElement = ['A1', 'A2', 'B1', 'B2', 'C1', 'C2', 'ligneRecuperation'] for zoneRecuperation_i in range(len(zoneRecuperationSubElement)): elementloc = './equipes/' + equipes_sub_element[i] + '/' + 'collective' + '/' + 'zoneRecuperation' element_list.append(SubElement(tree.find(elementloc), zoneRecuperationSubElement[zoneRecuperation_i])) element_list[-1].text = str(0) # vitesseRecuperation vitesseRecuperationSubElement = ['nbBallonRecupereRapide', 'nbBallonRecupereMoyen', 'nbBallonRecupereBas', 'pctBallonRapide', 'nbBallonRecupereRapideMenantAUneAttaqueRapide'] for vitesseRecuperation_i in range(len(vitesseRecuperationSubElement)): elementloc = './equipes/' + equipes_sub_element[i] + '/' + 'collective' + '/' + 'vitesseRecuperation' element_list.append( SubElement(tree.find(elementloc), vitesseRecuperationSubElement[vitesseRecuperation_i])) if vitesseRecuperationSubElement[vitesseRecuperation_i] != 'pctBallonRapide': element_list[-1].text = str(0) # zoneRecuperationRapide # zoneRecuperationEnJeu # zoneRecuperationAvecAttaqueRapide zoneRecuperationA1C2SubElement = ['A1', 'A2', 'B1', 'B2', 'C1', 'C2'] for zoneRecuperationA1C2_i in range(len(zoneRecuperationA1C2SubElement)): elementloc = './equipes/' + equipes_sub_element[i] + '/' + 'collective' + '/' + 'zoneRecuperationRapide' element_list.append( SubElement(tree.find(elementloc), zoneRecuperationA1C2SubElement[zoneRecuperationA1C2_i])) element_list[-1].text = str(0) elementloc = './equipes/' + equipes_sub_element[i] + '/' + 'collective' + '/' + 'zoneRecuperationEnJeu' element_list.append( SubElement(tree.find(elementloc), zoneRecuperationA1C2SubElement[zoneRecuperationA1C2_i])) element_list[-1].text = str(0) elementloc = './equipes/' + equipes_sub_element[ i] + '/' + 'collective' + '/' + 'zoneRecuperationAvecAttaqueRapide' element_list.append( SubElement(tree.find(elementloc), zoneRecuperationA1C2SubElement[zoneRecuperationA1C2_i])) element_list[-1].text = str(0) # zoneFauteSubie # zoneFauteCommise zoneFauteSubElement = ['A1', 'A2', 'A3', 'A4', 'B1', 'B2', 'B3', 'B4', 'C1', 'C2', 'C3', 'C4', 'D1', 'D2', 'D3', 'D4'] for zoneFaute_i in range(len(zoneFauteSubElement)): elementloc = './equipes/' + equipes_sub_element[i] + '/' + 'collective' + '/' + 'zoneFauteSubie' element_list.append(SubElement(tree.find(elementloc), zoneFauteSubElement[zoneFaute_i])) element_list[-1].text = str(0) elementloc = './equipes/' + equipes_sub_element[i] + '/' + 'collective' + '/' + 'zoneFauteCommise' element_list.append(SubElement(tree.find(elementloc), zoneFauteSubElement[zoneFaute_i])) element_list[-1].text = str(0) # directionPasse directionPasseSubElement = ['nbVersAvant', 'nbLaterale', 'nbVersArriere', 'pctVersAvant', 'pctLaterale', 'pctVersArriere', 'pctVersAvantReussi', 'pctLateraleReussi', 'pctVersArriereReussi'] for directionPasse_i in range(len(directionPasseSubElement)): elementloc = './equipes/' + equipes_sub_element[i] + '/' + 'collective' + '/' + 'directionPasse' element_list.append(SubElement(tree.find(elementloc), directionPasseSubElement[directionPasse_i])) if directionPasseSubElement[directionPasse_i] == 'nbVersAvant' or \ directionPasseSubElement[directionPasse_i] == 'nbLaterale' or \ directionPasseSubElement[directionPasse_i] == 'nbVersArriere': element_list[-1].text = str(0) # centre centreSubElement = ['nbGauche', 'nbDroite', 'pctGaucheReussi', 'pctDroiteReussi'] for centre_i in range(len(centreSubElement)): elementloc = './equipes/' + equipes_sub_element[i] + '/' + 'collective' + '/' + 'centre' element_list.append(SubElement(tree.find(elementloc), centreSubElement[centre_i])) if centreSubElement[centre_i] == 'nbGauche' or centreSubElement[centre_i] == 'nbDroite': element_list[-1].text = str(0) # longueurPasse longueurPasseSubElement = ['pctLong', 'pctMoyen', 'pctCourt'] for longueurPasse_i in range(len(longueurPasseSubElement)): elementloc = './equipes/' + equipes_sub_element[i] + '/' + 'collective' + '/' + 'longueurPasse' element_list.append(SubElement(tree.find(elementloc), longueurPasseSubElement[longueurPasse_i])) PlayerLocRoot = ['./equipes/equipeA/individuelle/joueur', './equipes/equipeB/individuelle/joueur'] individuelleTirzone = ['zone1', 'zone2', 'zone3', 'zone4', 'zone5', 'zone6', 'zone1_5'] individuelleDirectionPasse = ['nbVersAvant', 'nbLaterale', 'nbVersArriere', 'pctVersAvant', 'pctLaterale', 'pctVersArriere', 'pctVersAvantReussi', 'pctLateraleReussi', 'pctVersArriereReussi'] individuellePossessionInd = ['A1', 'A2', 'A3', 'A4', 'B1', 'B2', 'B3', 'B4', 'C1', 'C2', 'C3', 'C4', 'D1', 'D2', 'D3', 'D4'] for PlayerLoc in PlayerLocRoot: player_list = tree.findall(PlayerLoc) for player_i in range(len(player_list)): children = [ Element(str(ele)) for ele in individuelleTirzone ] player_list[player_i].find('tirZone').extend(children) children = [ Element(str(ele)) for ele in individuelleDirectionPasse ] player_list[player_i].find('directionPasse').extend(children) children = [ Element(str(ele)) for ele in individuellePossessionInd ] player_list[player_i].find('possessionInd').extend(children) children = [ Element(str(ele)) for ele in individuellePossessionInd ] player_list[player_i].find('zoneFauteSubie').extend(children) children = [ Element(str(ele)) for ele in individuellePossessionInd ] player_list[player_i].find('zoneFauteCommise').extend(children) children = [ Element(str(ele)) for ele in individuellePossessionInd ] player_list[player_i].find('zoneTacle').extend(children) # if teamHost.get('Players') != 0 : # if teamGuest.get('Players') != 0 : self.pretty_xml(statistiques, '\t', '\n') return tree def update_xml(self, tree): next(tree.iter('eq1')).text = text_eq1 next(tree.iter('eq2')).text = text_eq2 next(tree.iter('journee')).text = text_journee next(tree.iter('competition')).text = text_competition next(tree.iter('competition')).set('dateDebut', attrib1_competition) next(tree.iter('competition')).set('dateFin', attrib2_competition) next(tree.iter('date')).text = text_date next(tree.iter('stade')).text = text_stade next(tree.iter('heure')).text = text_heure next(tree.iter('couleq1')).text = text_couleq1 next(tree.iter('couleq2')).text = text_couleq2 next(tree.iter('codematch')).text = text_codematch next(tree.iter('codematch')).set('id', attrib1_codematch) next(tree.iter('tempsDeJeu')).text = text_tempsDeJeu next(tree.iter('tempsEffectif')).text = text_tempsEffectif next(tree.iter('statut')).text = text_statut # tree.find('./match/scoreA/miTemps').text = str(int_scoreA_miTemps) tree.find('./match/scoreA/match').text = str(int_scoreA_match) # tree.find('./match/scoreB/miTemps').text = str(int_scoreB_miTemps) tree.find('./match/scoreB/match').text = str(int_scoreB_match) tree.find('./equipes/equipeA/collective/nomEquipe').set('rapportForce5Min', str(int_equipeA_rapportForce5Min_attrib)) tree.find('./equipes/equipeA/collective/nomEquipe').text = text_equipeA_rapportForce5Min tree.find('./equipes/equipeA/collective/tempsPossession').text = text_equipeA_tempsPossession tree.find('./equipes/equipeA/collective/pctPossession').text = str(int_equipeA_pctPossession) tree.find('./equipes/equipeA/collective/ballonJoue').text = str(int_equipeA_ballonJoue) tree.find('./equipes/equipeA/collective/ballonGagne').text = str(int_equipeA_ballonGagne) tree.find('./equipes/equipeA/collective/ballonPerdu').text = str(int_equipeA_ballonPerdu) tree.find('./equipes/equipeA/collective/passe').text = str(int_equipeA_passe) tree.find('./equipes/equipeA/collective/passeReussie').text = str(int_equipeA_passeReussie) tree.find('./equipes/equipeA/collective/pctPasseReussie').text = str(int_equipeA_pctPasseReussie) tree.find('./equipes/equipeA/collective/occasion').text = str(int_equipeA_occasion) tree.find('./equipes/equipeA/collective/tir').text = str(int_equipeA_tir) tree.find('./equipes/equipeA/collective/tirCadre').text = str(int_equipeA_tirCadre) tree.find('./equipes/equipeA/collective/tirNonCadre').text = str(int_equipeA_tirNonCadre) tree.find('./equipes/equipeA/collective/pctTirsCadres').text = str(int_equipeA_pctTirsCadres) tree.find('./equipes/equipeA/collective/but').text = str(int_equipeA_but) tree.find('./equipes/equipeA/collective/butSurPenalty').text = str(int_equipeA_butSurPenalty) tree.find('./equipes/equipeA/collective/butContreSonCamp').text = str(int_equipeA_butContreSonCamp) tree.find('./equipes/equipeA/collective/horsJeu').text = str(int_equipeA_horsJeu) tree.find('./equipes/equipeA/collective/cornerEffectue').text = str(int_equipeA_cornerEffectue) tree.find('./equipes/equipeA/collective/toucheEffectuee').text = str(int_equipeA_toucheEffectuee) tree.find('./equipes/equipeA/collective/centreEffectue').text = str(int_equipeA_centreEffectue) tree.find('./equipes/equipeA/collective/coupFrancEffectue').text = str(int_equipeA_coupFrancEffectue) tree.find('./equipes/equipeA/collective/sortieDeButEffectuee').text = str(int_equipeA_sortieDeButEffectuee) tree.find('./equipes/equipeA/collective/penalty').text = str(int_equipeA_penalty) tree.find('./equipes/equipeA/collective/fauteSubie').text = str(int_equipeA_fauteSubie) tree.find('./equipes/equipeA/collective/fauteCommise').text = str(int_equipeA_fauteCommise) tree.find('./equipes/equipeA/collective/tacle').text = str(int_equipeA_tacle) tree.find('./equipes/equipeA/collective/cartonJaune').text = str(int_equipeA_cartonJaune) tree.find('./equipes/equipeA/collective/cartonRouge').text = str(int_equipeA_cartonRouge) tree.find('./equipes/equipeA/collective/entraineur').text = text_equipeA_entraineur tree.find('./equipes/equipeA/collective/possessionTemps/tps_0_15/pct').text = str(teamHost.get('0_15_pct')) tree.find('./equipes/equipeA/collective/possessionTemps/tps_15_30/pct').text = str(teamHost.get('15_30_pct')) tree.find('./equipes/equipeA/collective/possessionTemps/tps_30_45/pct').text = str(teamHost.get('30_45_pct')) tree.find('./equipes/equipeA/collective/possessionTemps/tps_45_60/pct').text = str(teamHost.get('45_60_pct')) tree.find('./equipes/equipeA/collective/possessionTemps/tps_60_75/pct').text = str(teamHost.get('60_75_pct')) tree.find('./equipes/equipeA/collective/possessionTemps/tps_75_90/pct').text = str(teamHost.get('75_90_pct')) tree.find('./equipes/equipeA/collective/tirZone/zone1').text = str(teamHost.get('shots_area_one')) tree.find('./equipes/equipeA/collective/tirZone/zone2').text = str(teamHost.get('shots_area_two')) tree.find('./equipes/equipeA/collective/tirZone/zone3').text = str(teamHost.get('shots_area_three')) tree.find('./equipes/equipeA/collective/tirZone/zone4').text = str(teamHost.get('shots_area_four')) tree.find('./equipes/equipeA/collective/tirZone/zone5').text = str(teamHost.get('shots_area_five')) tree.find('./equipes/equipeA/collective/tirZone/zone6').text = str(teamHost.get('shots_area_six')) tree.find('./equipes/equipeA/collective/attaqueZone/nbGauche').text = str(teamHost.get('nbGauche')) tree.find('./equipes/equipeA/collective/attaqueZone/nbMilieu').text = str(teamHost.get('nbMilieu')) tree.find('./equipes/equipeA/collective/attaqueZone/nbDroite').text = str(teamHost.get('nbDroite')) tree.find('./equipes/equipeA/collective/attaqueZone/pctGauche').text = str(teamHost.get('pctGauche')) tree.find('./equipes/equipeA/collective/attaqueZone/pctMilieu').text = str(teamHost.get('pctMilieu')) tree.find('./equipes/equipeA/collective/attaqueZone/pctDroite').text = str(teamHost.get('pctDroite')) tree.find('./equipes/equipeA/collective/directionPasse/nbVersAvant').text = str(teamHost.get('nbVersAvant')) tree.find('./equipes/equipeA/collective/directionPasse/nbLaterale').text = str(teamHost.get('nbLaterale')) tree.find('./equipes/equipeA/collective/directionPasse/nbVersArriere').text = str(teamHost.get('nbVersArriere')) tree.find('./equipes/equipeA/collective/directionPasse/pctVersAvant').text = str(teamHost.get('pctVersAvant')) tree.find('./equipes/equipeA/collective/directionPasse/pctLaterale').text = str(teamHost.get('pctLaterale')) tree.find('./equipes/equipeA/collective/directionPasse/pctVersArriere').text = str( teamHost.get('pctVersArriere')) tree.find('./equipes/equipeA/collective/longueurPasse/pctLong').text = str(teamHost.get('pctLong')) tree.find('./equipes/equipeA/collective/longueurPasse/pctMoyen').text = str(teamHost.get('pctMoyen')) tree.find('./equipes/equipeA/collective/longueurPasse/pctCourt').text = str(teamHost.get('pctCourt')) tree.find('./equipes/equipeB/collective/nomEquipe').set('rapportForce5Min', str(int_equipeB_rapportForce5Min_attrib)) tree.find('./equipes/equipeB/collective/nomEquipe').text = text_equipeB_rapportForce5Min tree.find('./equipes/equipeB/collective/tempsPossession').text = text_equipeB_tempsPossession tree.find('./equipes/equipeB/collective/pctPossession').text = str(int_equipeB_pctPossession) tree.find('./equipes/equipeB/collective/ballonJoue').text = str(int_equipeB_ballonJoue) tree.find('./equipes/equipeB/collective/ballonGagne').text = str(int_equipeB_ballonGagne) tree.find('./equipes/equipeB/collective/ballonPerdu').text = str(int_equipeB_ballonPerdu) tree.find('./equipes/equipeB/collective/passe').text = str(int_equipeB_passe) tree.find('./equipes/equipeB/collective/passeReussie').text = str(int_equipeB_passeReussie) tree.find('./equipes/equipeB/collective/pctPasseReussie').text = str(int_equipeB_pctPasseReussie) tree.find('./equipes/equipeB/collective/occasion').text = str(int_equipeB_occasion) tree.find('./equipes/equipeB/collective/tir').text = str(int_equipeB_tir) tree.find('./equipes/equipeB/collective/tirCadre').text = str(int_equipeB_tirCadre) tree.find('./equipes/equipeB/collective/tirNonCadre').text = str(int_equipeB_tirNonCadre) tree.find('./equipes/equipeB/collective/pctTirsCadres').text = str(int_equipeB_pctTirsCadres) tree.find('./equipes/equipeB/collective/but').text = str(int_equipeB_but) tree.find('./equipes/equipeB/collective/butSurPenalty').text = str(int_equipeB_butSurPenalty) tree.find('./equipes/equipeB/collective/butContreSonCamp').text = str(int_equipeB_butContreSonCamp) tree.find('./equipes/equipeB/collective/horsJeu').text = str(int_equipeB_horsJeu) tree.find('./equipes/equipeB/collective/cornerEffectue').text = str(int_equipeB_cornerEffectue) tree.find('./equipes/equipeB/collective/toucheEffectuee').text = str(int_equipeB_toucheEffectuee) tree.find('./equipes/equipeB/collective/centreEffectue').text = str(int_equipeB_centreEffectue) tree.find('./equipes/equipeB/collective/coupFrancEffectue').text = str(int_equipeB_coupFrancEffectue) tree.find('./equipes/equipeB/collective/sortieDeButEffectuee').text = str(int_equipeB_sortieDeButEffectuee) tree.find('./equipes/equipeB/collective/penalty').text = str(int_equipeB_penalty) tree.find('./equipes/equipeB/collective/fauteSubie').text = str(int_equipeB_fauteSubie) tree.find('./equipes/equipeB/collective/fauteCommise').text = str(int_equipeB_fauteCommise) tree.find('./equipes/equipeB/collective/tacle').text = str(int_equipeB_tacle) tree.find('./equipes/equipeB/collective/cartonJaune').text = str(int_equipeB_cartonJaune) tree.find('./equipes/equipeB/collective/cartonRouge').text = str(int_equipeB_cartonRouge) tree.find('./equipes/equipeB/collective/entraineur').text = text_equipeB_entraineur tree.find('./equipes/equipeB/collective/possessionTemps/tps_0_15/pct').text = str(teamGuest.get('0_15_pct')) tree.find('./equipes/equipeB/collective/possessionTemps/tps_15_30/pct').text = str(teamGuest.get('15_30_pct')) tree.find('./equipes/equipeB/collective/possessionTemps/tps_30_45/pct').text = str(teamGuest.get('30_45_pct')) tree.find('./equipes/equipeB/collective/possessionTemps/tps_45_60/pct').text = str(teamGuest.get('45_60_pct')) tree.find('./equipes/equipeB/collective/possessionTemps/tps_60_75/pct').text = str(teamGuest.get('60_75_pct')) tree.find('./equipes/equipeB/collective/possessionTemps/tps_75_90/pct').text = str(teamGuest.get('75_90_pct')) tree.find('./equipes/equipeB/collective/tirZone/zone1').text = str(teamGuest.get('shots_area_one')) tree.find('./equipes/equipeB/collective/tirZone/zone2').text = str(teamGuest.get('shots_area_two')) tree.find('./equipes/equipeB/collective/tirZone/zone3').text = str(teamGuest.get('shots_area_three')) tree.find('./equipes/equipeB/collective/tirZone/zone4').text = str(teamGuest.get('shots_area_four')) tree.find('./equipes/equipeB/collective/tirZone/zone5').text = str(teamGuest.get('shots_area_five')) tree.find('./equipes/equipeB/collective/tirZone/zone6').text = str(teamGuest.get('shots_area_six')) tree.find('./equipes/equipeB/collective/attaqueZone/nbGauche').text = str(teamGuest.get('nbGauche')) tree.find('./equipes/equipeB/collective/attaqueZone/nbMilieu').text = str(teamGuest.get('nbMilieu')) tree.find('./equipes/equipeB/collective/attaqueZone/nbDroite').text = str(teamGuest.get('nbDroite')) tree.find('./equipes/equipeB/collective/attaqueZone/pctGauche').text = str(teamGuest.get('pctGauche')) tree.find('./equipes/equipeB/collective/attaqueZone/pctMilieu').text = str(teamGuest.get('pctMilieu')) tree.find('./equipes/equipeB/collective/attaqueZone/pctDroite').text = str(teamGuest.get('pctDroite')) tree.find('./equipes/equipeB/collective/directionPasse/nbVersAvant').text = str(teamGuest.get('nbVersAvant')) tree.find('./equipes/equipeB/collective/directionPasse/nbLaterale').text = str(teamGuest.get('nbLaterale')) tree.find('./equipes/equipeB/collective/directionPasse/nbVersArriere').text = str( teamGuest.get('nbVersArriere')) tree.find('./equipes/equipeB/collective/directionPasse/pctVersAvant').text = str(teamGuest.get('pctVersAvant')) tree.find('./equipes/equipeB/collective/directionPasse/pctLaterale').text = str(teamGuest.get('pctLaterale')) tree.find('./equipes/equipeB/collective/directionPasse/pctVersArriere').text = str( teamGuest.get('pctVersArriere')) tree.find('./equipes/equipeB/collective/longueurPasse/pctLong').text = str(teamGuest.get('pctLong')) tree.find('./equipes/equipeB/collective/longueurPasse/pctMoyen').text = str(teamGuest.get('pctMoyen')) tree.find('./equipes/equipeB/collective/longueurPasse/pctCourt').text = str(teamGuest.get('pctCourt')) player_loc_root = ['./equipes/equipeA/individuelle/joueur', './equipes/equipeB/individuelle/joueur'] for PlayerLoc in player_loc_root: player_list = tree.findall(PlayerLoc) if PlayerLoc == player_loc_root[0]: player_team = hostPlayerSpam else: player_team = guestPlayerSpam for player_i in range(len(player_list)): if player_i >= len(player_team): continue player_list[player_i].find('nom').text = player_team[player_i].get('player_name') player_list[player_i].find('nom').set('id', str(player_team[player_i].get('id_player'))) player_list[player_i].find('tempsDePossession').text = player_team[player_i].get('possession_time') player_list[player_i].find('numeroMaillot').text = player_team[player_i].get('football_number') spam_position = ['coach', 'Gardien', 'Defenseur', 'Milieu', 'Attaquant'] player_list[player_i].find('poste').text = spam_position[ player_team[player_i].get('football_position') - 1] player_list[player_i].find('bloc').text = spam_position[ player_team[player_i].get('football_position') - 1] player_list[player_i].find('ballonJoue').text = str(player_team[player_i].get('balls_played')) player_list[player_i].find('ballonGagne').text = str(player_team[player_i].get('possessions_gained')) player_list[player_i].find('ballonPerdu').text = str(player_team[player_i].get('possessions_lost')) player_list[player_i].find('passe').text = str(player_team[player_i].get('passes')) player_list[player_i].find('passeReussie').text = str(player_team[player_i].get('successful_passes')) player_list[player_i].find('pctPasseReussie').text = str( player_team[player_i].get('successful_passes_p')) player_list[player_i].find('occasion').text = str(player_team[player_i].get('chances')) player_list[player_i].find('tir').text = str(player_team[player_i].get('shots')) player_list[player_i].find('tirCadre').text = str(player_team[player_i].get('shots_on_target')) player_list[player_i].find('tirNonCadre').text = str(player_team[player_i].get('shot_off_target')) player_list[player_i].find('pctTirCadre').text = str(player_team[player_i].get('shots_on_target_p')) player_list[player_i].find('butMarque').text = str(player_team[player_i].get('goal_normal')) player_list[player_i].find('butSurPenalty').text = str(player_team[player_i].get('goal_penalty')) player_list[player_i].find('butContreSonCamp').text = str(player_team[player_i].get('own_goal')) player_list[player_i].find('horsJeu').text = str(player_team[player_i].get('offside')) player_list[player_i].find('cornerEffectue').text = str(player_team[player_i].get('corner')) player_list[player_i].find('toucheEffectuee').text = str(player_team[player_i].get('throw_in')) player_list[player_i].find('centreEffectue').text = str(player_team[player_i].get('crosses')) player_list[player_i].find('fauteSubie').text = str(player_team[player_i].get('fouls_received')) player_list[player_i].find('fauteCommise').text = str(player_team[player_i].get('fouls_commited')) player_list[player_i].find('cartonJaune1').text = str(player_team[player_i].get('yellow_card1st')) player_list[player_i].find('cartonJaune2').text = str(player_team[player_i].get('yellow_card2nd')) player_list[player_i].find('cartonRouge').text = str(player_team[player_i].get('red_card_time')) tir_zone_root = player_list[player_i].find('tirZone') tir_zone_root.find('zone1').text = str(player_team[player_i].get('tirZone_zone1')) tir_zone_root.find('zone2').text = str(player_team[player_i].get('tirZone_zone2')) tir_zone_root.find('zone3').text = str(player_team[player_i].get('tirZone_zone3')) tir_zone_root.find('zone4').text = str(player_team[player_i].get('tirZone_zone4')) tir_zone_root.find('zone5').text = str(player_team[player_i].get('tirZone_zone5')) tir_zone_root.find('zone6').text = str(player_team[player_i].get('tirZone_zone6')) direction_passe_root = player_list[player_i].find('directionPasse') direction_passe_root.find('nbVersAvant').text = str( player_team[player_i].get('directionPasses_nbVersAvant')) direction_passe_root.find('nbLaterale').text = str( player_team[player_i].get('directionPasses_nbLaterale')) direction_passe_root.find('nbVersArriere').text = str( player_team[player_i].get('directionPasses_nbVersArriere')) direction_passe_root.find('pctVersAvant').text = str( player_team[player_i].get('directionPasses_pctVersAvant')) direction_passe_root.find('pctLaterale').text = str( player_team[player_i].get('directionPasses_pctLaterale')) direction_passe_root.find('pctVersArriere').text = str( player_team[player_i].get('directionPasses_pctVersArriere')) possession_ind_root = player_list[player_i].find('possessionInd') possession_ind_root.find('A1').text = str(player_team[player_i].get('possessionInd_A1')) possession_ind_root.find('A2').text = str(player_team[player_i].get('possessionInd_A2')) possession_ind_root.find('A3').text = str(player_team[player_i].get('possessionInd_A3')) possession_ind_root.find('A4').text = str(player_team[player_i].get('possessionInd_A4')) possession_ind_root.find('B1').text = str(player_team[player_i].get('possessionInd_B1')) possession_ind_root.find('B2').text = str(player_team[player_i].get('possessionInd_B2')) possession_ind_root.find('B3').text = str(player_team[player_i].get('possessionInd_B3')) possession_ind_root.find('B4').text = str(player_team[player_i].get('possessionInd_B4')) possession_ind_root.find('C1').text = str(player_team[player_i].get('possessionInd_C1')) possession_ind_root.find('C2').text = str(player_team[player_i].get('possessionInd_C2')) possession_ind_root.find('C3').text = str(player_team[player_i].get('possessionInd_C3')) possession_ind_root.find('C4').text = str(player_team[player_i].get('possessionInd_C4')) possession_ind_root.find('D1').text = str(player_team[player_i].get('possessionInd_D1')) possession_ind_root.find('D2').text = str(player_team[player_i].get('possessionInd_D2')) possession_ind_root.find('D3').text = str(player_team[player_i].get('possessionInd_D3')) possession_ind_root.find('D4').text = str(player_team[player_i].get('possessionInd_D4')) def fetch_data_from_database(self, match_id, db): global match_info, teamHost, hostPlayerSpam, teamGuest, guestPlayerSpam cursor = db.cursor(cursor=pymysql.cursors.DictCursor) # t_match match_sql = """SELECT competitionId, start_time, home_background, visiting_background, matchId, home_team, homeScore, guestScore FROM t_match WHERE id_match=%s;""" # t_competition competition_sql = """SELECT zhName FROM t_competition WHERE id=%s;""" # d_team_statistics match_statistic_sql = """SELECT * FROM d_team_statistics WHERE match_id=%s;""" # t_team_base team_base_sql = """SELECT letter_code, teamName, home, head_coach FROM t_team_base WHERE teamid=%s;""" # t_match_segment current_segment_sql = """SELECT COUNT(*) FROM t_match_segment WHERE start_position is not NULL and id_match=%s;""" # t_match_segment current_segment_id_sql = """SELECT id_match_segment FROM t_match_segment WHERE start_position is not NULL and id_match=%s order by id_match_segment desc limit 1;""" # t_match_event current_segment_time_sql = """SELECT time_point FROM t_match_event WHERE id_match_segment = %s order by time_point desc limit 1;""" # t_match_lineup match_player_sql = """SELECT id_player, player_name, football_number, football_position FROM t_match_lineup where id_match=%s and team=%s and match_progress=1;""" # d_player_statistics player_statistics_sql = """SELECT * FROM d_player_statistics where match_id=%s and player_id=%s;""" sql = current_segment_sql % (str(match_id)) cursor.execute(sql) result = cursor.fetchall() match_info['segment'] = result[0].get('COUNT(*)') sql = current_segment_id_sql % (str(match_id)) cursor.execute(sql) result = cursor.fetchall() match_info['segment_id'] = result[0].get('id_match_segment') sql = current_segment_time_sql % (str(match_info['segment_id'])) cursor.execute(sql) result = cursor.fetchall() seg_sec = int(result[0].get('time_point')) / 1000 seg_min = int(seg_sec / 60) seg_sec = int(seg_sec - seg_min * 60) if match_info['segment'] == 4: seg_min = seg_min + 90 + 15 elif match_info['segment'] == 3: seg_min = seg_min + 90 elif match_info['segment'] == 2: seg_min = seg_min + 45 match_info['match_time'] = str(seg_min) + ':' + str(seg_sec).rjust(2, '0') sql = match_sql % (str(match_id)) cursor.execute(sql) result = cursor.fetchall() homt_team_id = result[0].get('home_team') match_info['match_id'] = result[0].get('matchId') competition_Id = int(result[0].get('competitionId')) matchObj = re.match(r'(.*)-(.*)-(.*) (.*):(.*):.*', str(result[0].get('start_time'))) match_info['date'] = matchObj.group(3) + '/' + matchObj.group(2) + '/' + matchObj.group(1) match_info['heure'] = matchObj.group(4) + ':' + matchObj.group(5) teamHost['background'] = result[0].get('home_background') teamGuest['background'] = result[0].get('visiting_background') teamHost['goal'] = result[0].get('homeScore') teamGuest['goal'] = result[0].get('guestScore') if teamHost.get('background'): teamHost['background'] = '#' + str(hex(int(teamHost.get('background')) & 0xFFFFFFFF)).lstrip('0x').upper() if teamGuest.get('background'): teamGuest['background'] = '#' + str(hex(int(teamGuest.get('background')) & 0xFFFFFFFF)).lstrip('0x').upper() sql = competition_sql % (str(competition_Id)) cursor.execute(sql) result = cursor.fetchall() match_info['competition_name'] = result[0].get('zhName') sql = match_statistic_sql % (str(match_id)) cursor.execute(sql) result = cursor.fetchall() # d_team_statistic 中是按照teamid大小排序,不是主队在前,需要识别一下 if result[0].get('team_id') == homt_team_id: spam_team = [teamHost, teamGuest] else: spam_team = [teamGuest, teamHost] match_info['net_game_time'] = self.GetTimeString(result[0].get('net_game_time')) for i in range(len(result)): field = result[i] spam_team[i]['team_id'] = int(field.get('team_id')) possession_sec = int(field.get('possession_time')) / 1000 spam_team[i]['possession_seconds'] = possession_sec possession_min = int(possession_sec / 60) possession_sec = int(possession_sec - possession_min * 60) spam_team[i]['possession_duration'] = str(possession_min) + ':' + str(possession_sec) spam_team[i]['possession'] = int(field.get('possession') * 100) spam_team[i]['balls_played'] = int(field.get('balls_played')) spam_team[i]['possessions_gained'] = int(field.get('possessions_gained')) spam_team[i]['possessions_lost'] = int(field.get('possessions_lost')) spam_team[i]['passes'] = int(field.get('passes')) spam_team[i]['successful_passes'] = int(field.get('successful_passes')) spam_team[i]['successful_passes_p'] = int(100 * field.get('successful_passes_p')) spam_team[i]['chances'] = int(field.get('chances')) spam_team[i]['shots'] = int(field.get('shots')) spam_team[i]['shots_on_target'] = int(field.get('shots_on_target')) spam_team[i]['shot_off_target'] = int(field.get('shot_off_target')) spam_team[i]['shots_on_target_p'] = int(100 * field.get('shots_on_target_p')) spam_team[i]['goal_normal'] = int(field.get('goal_normal')) spam_team[i]['goal_penalty'] = int(field.get('goal_penalty')) spam_team[i]['goal_sur_penalty'] = int(field.get('goal_sur_penalty')) spam_team[i]['own_goal'] = int(field.get('own_goal')) spam_team[i]['offside'] = int(field.get('offside')) spam_team[i]['corner'] = int(field.get('corner')) spam_team[i]['throw_in'] = int(field.get('throw_in')) spam_team[i]['fouls_received'] = int(field.get('fouls_received')) spam_team[i]['fouls_commited'] = int(field.get('fouls_commited')) spam_team[i]['yellow_cards'] = int(field.get('yellow_cards')) spam_team[i]['red_cards'] = int(field.get('red_cards')) spam_team[i]['crosses'] = int(field.get('crosses')) spam_team[i]['0_15_pct'] = int(field.get('possession_first_quarter') * 100) spam_team[i]['15_30_pct'] = int(field.get('possession_secend_quarter') * 100) spam_team[i]['30_45_pct'] = int(field.get('possession_third_quarter') * 100) spam_team[i]['45_60_pct'] = int(field.get('possession_fourth_quarter') * 100) spam_team[i]['60_75_pct'] = int(field.get('possession_fifth_quarter') * 100) spam_team[i]['75_90_pct'] = int(field.get('possession_sixth_quarter') * 100) spam_team[i]['shots_area_one'] = int(field.get('shots_area_one')) spam_team[i]['shots_area_two'] = int(field.get('shots_area_two')) spam_team[i]['shots_area_three'] = int(field.get('shots_area_three')) spam_team[i]['shots_area_four'] = int(field.get('shots_area_four')) spam_team[i]['shots_area_five'] = int(field.get('shots_area_five')) spam_team[i]['shots_area_six'] = int(field.get('shots_area_six')) spam_team[i]['nbGauche'] = int(field.get('final_third_entries_left')) spam_team[i]['nbMilieu'] = int(field.get('final_third_entries_medium')) spam_team[i]['nbDroite'] = int(field.get('final_third_entries_right')) spam_team[i]['pctGauche'] = int(field.get('final_third_entries_left_p') * 100) spam_team[i]['pctMilieu'] = int(field.get('final_third_entries_medium_p') * 100) spam_team[i]['pctDroite'] = int(field.get('final_third_entries_right_p') * 100) spam_team[i]['nbVersAvant'] = int(field.get('forward_passes')) spam_team[i]['nbLaterale'] = int(field.get('sideways_passes')) spam_team[i]['nbVersArriere'] = int(field.get('backward_passes')) spam_team[i]['pctVersAvant'] = int(field.get('forward_passes_p') * 100) spam_team[i]['pctLaterale'] = int(field.get('sideways_passes_p') * 100) spam_team[i]['pctVersArriere'] = int(field.get('backward_passes_p') * 100) spam_team[i]['long_passes'] = int(field.get('long_passes')) spam_team[i]['medium_passes'] = int(field.get('medium_passes')) spam_team[i]['short_passes'] = int(field.get('short_passes')) if spam_team[i]['passes'] != 0: spam_team[i]['pctLong'] = int(spam_team[i]['long_passes'] / spam_team[i]['passes'] * 100) spam_team[i]['pctMoyen'] = int(spam_team[i]['medium_passes'] / spam_team[i]['passes'] * 100) spam_team[i]['pctCourt'] = int(spam_team[i]['short_passes'] / spam_team[i]['passes'] * 100) for i in range(len(spam_team)): sql = team_base_sql % (str(spam_team[i]['team_id'])) cursor.execute(sql) result = cursor.fetchall() for field in result: spam_team[i]['letter_code'] = field.get('letter_code') spam_team[i]['team_name'] = field.get('teamName') spam_team[i]['stade'] = field.get('home') spam_team[i]['head_coach'] = field.get('head_coach') for HostGuest_letter in ['1', '2']: sql = match_player_sql % (str(match_id), HostGuest_letter) cursor.execute(sql) result = cursor.fetchall() for field in result: individual = {'id_player': int(field.get('id_player')), 'player_name': str(field.get('player_name')), 'football_number': str(field.get('football_number')), 'football_position': int(field.get('football_position'))} sql = player_statistics_sql % (str(match_id), str(individual['id_player'])) cursor.execute(sql) result = cursor.fetchall() if result: seg_sec = int(result[0].get('possession_time')) / 1000 seg_min = int(seg_sec / 60) seg_sec = int(seg_sec - seg_min * 60) individual['possession_time'] = str(seg_min) + ':' + str(seg_sec).rjust(2, '0') individual['balls_played'] = int(result[0].get('balls_played')) individual['possessions_gained'] = int(result[0].get('possessions_gained')) individual['possessions_lost'] = int(result[0].get('possessions_lost')) individual['passes'] = int(result[0].get('passes')) individual['successful_passes'] = int(result[0].get('successful_passes')) individual['successful_passes_p'] = int(result[0].get('successful_passes_p') * 100) individual['chances'] = int(result[0].get('chances')) individual['shots'] = int(result[0].get('shots')) individual['shots_on_target'] = int(result[0].get('shots_on_target')) individual['shot_off_target'] = int(result[0].get('shot_off_target')) individual['shots_on_target_p'] = int(result[0].get('shots_on_target_p') * 100) individual['goal_normal'] = int(result[0].get('goal_normal')) individual['goal_penalty'] = int(result[0].get('goal_penalty')) individual['own_goal'] = int(result[0].get('own_goal')) individual['offside'] = int(result[0].get('offside')) individual['corner'] = int(result[0].get('corner')) individual['throw_in'] = int(result[0].get('throw_in')) individual['crosses'] = int(result[0].get('crosses')) individual['fouls_received'] = int(result[0].get('fouls_received')) individual['fouls_commited'] = int(result[0].get('fouls_commited')) individual['yellow_card1st'] = self.GetTimeString(int(result[0].get('yellow_card1st'))) individual['yellow_card2nd'] = self.GetTimeString(int(result[0].get('yellow_card2nd'))) individual['red_card_time'] = self.GetTimeString(int(result[0].get('red_card_time'))) individual['tirZone_zone1'] = int(result[0].get('shots_area_one')) individual['tirZone_zone2'] = int(result[0].get('shots_area_two')) individual['tirZone_zone3'] = int(result[0].get('shots_area_three')) individual['tirZone_zone4'] = int(result[0].get('shots_area_four')) individual['tirZone_zone5'] = int(result[0].get('shots_area_five')) individual['tirZone_zone6'] = int(result[0].get('shots_area_six')) individual['directionPasses_nbVersAvant'] = int(result[0].get('forward_passes')) individual['directionPasses_nbLaterale'] = int(result[0].get('sideways_passes')) individual['directionPasses_nbVersArriere'] = int(result[0].get('backward_passes')) individual['directionPasses_pctVersAvant'] = int(result[0].get('forward_passes_p') * 100) individual['directionPasses_pctLaterale'] = int(result[0].get('sideways_passes_p') * 100) individual['directionPasses_pctVersArriere'] = int(result[0].get('backward_passes_p') * 100) individual['possessionInd_A1'] = int(result[0].get('possessions_area_a1')) individual['possessionInd_A2'] = int(result[0].get('possessions_area_a2')) individual['possessionInd_A3'] = int(result[0].get('possessions_area_a3')) individual['possessionInd_A4'] = int(result[0].get('possessions_area_a4')) individual['possessionInd_B1'] = int(result[0].get('possessions_area_b1')) individual['possessionInd_B2'] = int(result[0].get('possessions_area_b2')) individual['possessionInd_B3'] = int(result[0].get('possessions_area_b3')) individual['possessionInd_B4'] = int(result[0].get('possessions_area_b4')) individual['possessionInd_C1'] = int(result[0].get('possessions_area_c1')) individual['possessionInd_C2'] = int(result[0].get('possessions_area_c2')) individual['possessionInd_C3'] = int(result[0].get('possessions_area_c3')) individual['possessionInd_C4'] = int(result[0].get('possessions_area_c4')) individual['possessionInd_D1'] = int(result[0].get('possessions_area_d1')) individual['possessionInd_D2'] = int(result[0].get('possessions_area_d2')) individual['possessionInd_D3'] = int(result[0].get('possessions_area_d3')) individual['possessionInd_D4'] = int(result[0].get('possessions_area_d4')) if HostGuest_letter == '1': hostPlayerSpam.append(individual) else: guestPlayerSpam.append(individual) # 主队球员 teamHost['Players'] = len(hostPlayerSpam) # print('HostPlayers:%d\n'%(len(HostplayerSpam)),HostplayerSpam,'\n') # 客队球员 teamGuest['Players'] = len(guestPlayerSpam) # print('GuestPlayers:%d\n'%(len(GuestplayerSpam)),GuestplayerSpam,'\n') db.close() # print('match_id: ', match_id) # print(match_info) # print('Host:', teamHost) # print('Guest:', teamGuest) global text_eq1, text_eq2, text_competition, attrib1_competition, attrib2_competition, text_date, text_stade, \ text_heure, text_couleq1, text_couleq2, attrib1_codematch, text_codematch, text_tempsDeJeu, text_tempsEffectif, \ int_scoreA_match, int_scoreB_match, text_equipeA_rapportForce5Min, text_equipeA_tempsPossession, \ text_equipeB_rapportForce5Min, text_equipeB_tempsPossession, int_equipeA_pctPossession, int_equipeB_pctPossession, \ int_equipeA_ballonJoue, int_equipeA_ballonGagne, int_equipeA_ballonPerdu, int_equipeB_ballonJoue, \ int_equipeB_ballonGagne, int_equipeB_ballonPerdu, int_equipeA_passe, int_equipeA_passeReussie, \ int_equipeA_pctPasseReussie, int_equipeB_passe, int_equipeB_passeReussie, int_equipeB_pctPasseReussie, \ int_equipeA_occasion, int_equipeB_occasion, int_equipeA_tir, int_equipeA_tirCadre, int_equipeA_tirNonCadre, \ int_equipeA_pctTirsCadres, int_equipeB_tir, int_equipeB_tirCadre, int_equipeB_tirNonCadre, int_equipeB_pctTirsCadres, \ int_equipeA_but, int_equipeA_butSurPenalty, int_equipeA_butContreSonCamp, int_equipeB_but, int_equipeB_butSurPenalty, \ int_equipeB_butContreSonCamp, int_equipeA_horsJeu, int_equipeB_horsJeu, int_equipeA_cornerEffectue, \ int_equipeB_cornerEffectue, int_equipeA_toucheEffectuee, int_equipeB_toucheEffectuee, int_equipeA_penalty, \ int_equipeB_penalty, int_equipeA_fauteSubie, int_equipeA_fauteCommise, int_equipeB_fauteSubie, \ int_equipeB_fauteCommise, int_equipeA_cartonJaune, int_equipeA_cartonRouge, int_equipeB_cartonJaune, \ int_equipeB_cartonRouge, text_equipeA_entraineur, text_equipeB_entraineur, int_equipeA_centreEffectue, \ int_equipeB_centreEffectue text_eq1 = teamHost.get('team_name') text_eq2 = teamGuest.get('team_name') if teamHost.get('head_coach'): text_equipeA_entraineur = teamHost.get('head_coach') if teamGuest.get('head_coach'): text_equipeB_entraineur = teamGuest.get('head_coach') text_competition = match_info.get('competition_name') attrib1_competition = '01/01/2020' attrib2_competition = '31/12/2020' text_date = match_info.get('date') text_stade = teamHost.get('stade') text_heure = match_info['heure'] text_couleq1 = teamHost.get('background') text_couleq2 = teamGuest.get('background') attrib1_codematch = str(match_info['match_id']) text_codematch = teamHost.get('letter_code') + '-' + teamGuest.get('letter_code') + \ '-' if teamHost.get('letter_code') is not None and teamGuest.get('letter_code') is not None else '' + matchObj.group(3) + matchObj.group(2) + str(int(matchObj.group(1)) - 2000) + '-' + str( match_info['segment']) text_tempsDeJeu = match_info['match_time'] text_tempsEffectif = match_info['net_game_time'] int_scoreA_match = teamHost.get('goal') int_scoreB_match = teamGuest.get('goal') text_equipeA_rapportForce5Min = teamHost.get('team_name') text_equipeA_tempsPossession = teamHost.get('possession_duration') text_equipeB_rapportForce5Min = teamGuest.get('team_name') text_equipeB_tempsPossession = teamGuest.get('possession_duration') int_equipeA_pctPossession = teamHost.get('possession') int_equipeB_pctPossession = teamGuest.get('possession') int_equipeA_ballonJoue = teamHost.get('balls_played') int_equipeA_ballonGagne = teamHost.get('possessions_gained') int_equipeA_ballonPerdu = teamHost.get('possessions_lost') int_equipeB_ballonJoue = teamGuest.get('balls_played') int_equipeB_ballonGagne = teamGuest.get('possessions_gained') int_equipeB_ballonPerdu = teamGuest.get('possessions_lost') int_equipeA_passe = teamHost.get('passes') int_equipeA_passeReussie = teamHost.get('successful_passes') int_equipeA_pctPasseReussie = teamHost.get('successful_passes_p') int_equipeB_passe = teamGuest.get('passes') int_equipeB_passeReussie = teamGuest.get('successful_passes') int_equipeB_pctPasseReussie = teamGuest.get('successful_passes_p') int_equipeA_occasion = teamHost.get('chances') int_equipeB_occasion = teamGuest.get('chances') int_equipeA_tir = teamHost.get('shots') int_equipeA_tirCadre = teamHost.get('shots_on_target') int_equipeA_tirNonCadre = teamHost.get('shot_off_target') int_equipeA_pctTirsCadres = teamHost.get('shots_on_target_p') int_equipeB_tir = teamGuest.get('shots') int_equipeB_tirCadre = teamGuest.get('shots_on_target') int_equipeB_tirNonCadre = teamGuest.get('shot_off_target') int_equipeB_pctTirsCadres = teamGuest.get('shots_on_target_p') int_equipeA_but = teamHost.get('goal_normal') int_equipeA_butSurPenalty = teamHost.get('goal_sur_penalty') int_equipeA_butContreSonCamp = teamHost.get('own_goal') int_equipeB_but = teamGuest.get('goal_normal') int_equipeB_butSurPenalty = teamGuest.get('goal_sur_penalty') int_equipeB_butContreSonCamp = teamGuest.get('own_goal') int_equipeA_horsJeu = teamHost.get('offside') int_equipeB_horsJeu = teamGuest.get('offside') int_equipeA_cornerEffectue = teamHost.get('corner') int_equipeB_cornerEffectue = teamGuest.get('corner') int_equipeA_toucheEffectuee = teamHost.get('throw_in') int_equipeB_toucheEffectuee = teamGuest.get('throw_in') int_equipeA_penalty = teamHost.get('goal_penalty') int_equipeB_penalty = teamGuest.get('goal_penalty') int_equipeA_fauteSubie = teamHost.get('fouls_received') int_equipeA_fauteCommise = teamHost.get('fouls_commited') int_equipeB_fauteSubie = teamGuest.get('fouls_received') int_equipeB_fauteCommise = teamGuest.get('fouls_commited') int_equipeA_cartonJaune = teamHost.get('yellow_cards') int_equipeA_cartonRouge = teamHost.get('red_cards') int_equipeB_cartonJaune = teamGuest.get('yellow_cards') int_equipeB_cartonRouge = teamGuest.get('red_cards') int_equipeA_centreEffectue = teamHost.get('crosses') int_equipeB_centreEffectue = teamGuest.get('crosses') def clean_list(self): match_info.clear() teamHost.clear() hostPlayerSpam.clear() teamGuest.clear() guestPlayerSpam.clear() teamHost['Players'] = 0 teamGuest['Players'] = 0