You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1023 lines
66 KiB
Python

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