@@ -160,10 +160,10 @@ def load_channel_info(self):
160160 def load_epg_data (self ):
161161 now = int (time .time ())
162162 two_hours = 2 * 60 * 60
163- twenty_four_hours = 24 * 60 * 60
163+ eighteen_hours = 18 * 60 * 60
164164 all_data = {}
165165 try :
166- for timestamp in range (now - two_hours , now + twenty_four_hours , 3600 ): # Ajout de pas d'une heure
166+ for timestamp in range (now - two_hours , now + eighteen_hours , 3600 ): # Ajout de pas d'une heure
167167 url = f"http://mafreebox.freebox.fr/api/v8/tv/epg/by_time/{ timestamp } "
168168 response = requests .get (url , timeout = 60 )
169169 response .raise_for_status ()
@@ -274,10 +274,7 @@ def initialize_rows(self):
274274 self .setColumnWidth (column , 450 )
275275 self .setColumnWidth (0 , 150 )
276276
277- def is_column_empty (self , col_index ):
278- # if col_index == 0:
279- # return False # Ne jamais supprimer la première colonne.
280-
277+ def is_column_empty (self , col_index ):
281278 for row in range (self .rowCount ()):
282279 item = self .item (row , col_index )
283280 if item and item .text ().strip ():
@@ -329,6 +326,24 @@ def calculate_column_index(self, epoch):
329326 hour = datetime .datetime .fromtimestamp (epoch ).hour
330327 return hour
331328
329+ def create_program_label (self , program_start , program ):
330+ # Utilisation du style 'display: inline-block;' pour mieux contrôler l'alignement
331+ icon_html = f"<div style='font-size: 15px; vertical-align: middle; display: inline-block;'><img src='{ program ['channel_icon' ]} ' height='35' width='35' style='height : 35px; vertical-align: middle; margin-right: 5px;'> { program ['title' ]} </div><br />"
332+ # Ajustement de 'margin-top' pour aligner le texte avec l'icône
333+ text = f"<span style='vertical-align: top; font-size: 12px; display: inline-block;'>{ program_start .strftime ('%H:%M' )} { program .get ('desc' , '' )} </span>"
334+ label = QLabel (f"{ icon_html } { text } " )
335+ label .setMargin (2 ) # Réduire la marge externe
336+ label .setWordWrap (True )
337+ label .setStyleSheet ("""
338+ QLabel {
339+ padding: 2px; /* Réduire l'espacement interne */
340+ text-align: left; /* Alignement du texte */
341+ line-height: 1; /* Ajustement de l'espacement entre les lignes */
342+ font-size: 12px; /* Ajustement de la taille de la police si nécessaire */
343+ }
344+ """ )
345+ return label
346+
332347 def populate_table_with_ordered_info (self , channel_data ):
333348 if not self .dataLoaded :
334349 now = datetime .datetime .now (pytz .timezone ('Europe/Paris' ))
@@ -342,7 +357,9 @@ def populate_table_with_ordered_info(self, channel_data):
342357 program_start = self .epoch_to_localtime_french (int (epoch_time ))
343358 if (program_start .hour >= start_hour or program_start .hour < start_hour - 1 ):
344359 col = (program_start .hour - start_hour ) % 24 + 1 # +1 pour les logos/noms
345- self .setItem (row , col , QtWidgets .QTableWidgetItem (self .format_program_info (program_start , program_details )))
360+ program_label = self .create_program_label (program_start , program_details )
361+ self .setCellWidget (row , col , program_label )
362+ # self.setItem(row, col, QtWidgets.QTableWidgetItem(self.format_program_info(program_start, program_details)))
346363 self .dataLoaded = True
347364 self .set_style_cells ()
348365
@@ -378,7 +395,8 @@ def seconds_to_duration(self, seconds):
378395 return f"{ hours } h{ minutes } "
379396
380397 def format_program_info (self , program_start , program ):
381- return f"{ program_start .strftime ('%H:%M' )} { program ['title' ]} { program .get ('desc' , '' )} "
398+ icon_html = f"<img src='{ program ['channel_icon' ]} ' height='20' width='20'>"
399+ return f"{ icon_html } { program_start .strftime ('%H:%M' )} { program ['title' ]} { program .get ('desc' , '' )} "
382400
383401 def find_or_create_row (self , channel_uuid , program_details ):
384402 # Vérifiez que toutes les clés nécessaires sont présentes
0 commit comments