• הרשמה
    • התחברות
    • חיפוש
    • דף הבית
    • אינדקס קישורים
    • פוסטים אחרונים
    • קבלת התראות מהדפדפן
    • משתמשים
    • חיפוש בהגדרות המתקדמות
    • חיפוש גוגל בפורום
    • ניהול המערכת
    • ניהול המערכת - שרת private

    בקשה לעזרה בקוד פייתון לפעולה במערכת

    פורום מפתחים API
    3
    8
    177
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • צ
      צבי ד"צ מומחה נערך לאחרונה על ידי צבי ד"צ

      מישהו מוכן לעשות לי טובה ולעבור על קוד בפייתון לא ארוך מידי שבניתי עם AI, הוא נתקע באיזשהו חלק.
      אשמח שמי שמוכן יכתוב פה איך לפנות אליו או שאני יכתוב את המייל שלי

      תודה רבה רבה!!

      נ.ב. זה לצורך מצוה

      עריכה:
      הבאתי את הקוד המלא בהמשך השרשור

      תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • M
        MGM IVR נערך לאחרונה על ידי MGM IVR

        https://dontasktoask.com/he/

        למה למישהו להתחייב אליך לענות לך?
        תעלה את הקוד כאן / גיטהאב / לינק לGPT שכתב לך את זה, ותשאל

        צ תגובה 1 תגובה אחרונה תגובה ציטוט 2
        • צ
          צבי ד"צ מומחה @MGM IVR נערך לאחרונה על ידי צבי ד"צ

          @MGM-IVR צודק, רק אם אני יעלה את זה לפה, אני יצטרך קודם למחוק את כל המספרים וכו',
          אם יש מישהו שמוכן שאני ישלח לו באופן פרטי, וכמובן הוא לא צריך להתחייב, עדיף. אם לא, כנראה שכך אעשה...

          עכ"פ אני יכתוב מה אמור לעשות הקוד ואולי כך זה יתן קצת כיוון,
          הקוד לוקח את המספרים מרשימת תפוצה מסויימת, מוריד לכל מספר את הדוח שלו מתוך מודל שעון נוכחות, בודק מה השורות שמהיום הנוכחי ומסכם את הזמן מהיום הנוכחי, ומעלה קובץ TTS לשלוחה ייעודית "סך השעות ליום... תאריך (עברי) וכו'"
          נראה שהוא בעיקר מסתבך עם הכנת הקובץ (הוא מעלה קובץ TTS ריק לשלוחה)
          בעיה נוספת, שהוא גם צריך לפתוח שלוחה במקרה של שגיאה שאין שלוחה כזו ולנסות שוב להעלות את הקובץ, לגבי זזה הבינה טוען שיש בעיה שהוא מקבל שגיאה מהשרת ואף על פי כן מתייחס כאילו זה הצליח.

          תודה רבה!!

          M תגובה 1 תגובה אחרונה תגובה ציטוט 0
          • M
            MGM IVR @צבי ד"צ נערך לאחרונה על ידי

            @צבי-ד-צ כתב במישהו מוכן לעבור על קוד בפייתון?:

            @MGM-IVR צודק, רק אם אני יעלה את זה לפה, אני יצטרך קודם למחוק את כל המספרים וכו',
            אם יש מישהו שמוכן שאני ישלח לו באופן פרטי, וכמובן הוא לא צריך להתחייב, עדיף. אם לא, כנראה שכך אעשה...

            עכ"פ אני יכתוב מה אמור לעשות הקוד ואולי כך זה יתן קצת כיוון,
            הקוד לוקח את המספרים מרששימת תפוצה מסויימת, מוריד לכל מספר את הדוח שלו מתוך מודל שעון נוכחות, בודק מה השורות שמהיום הנוכחי ומסכם את הזמן מהיום הנוכחי, ומעלה קובץ TTS לשלוחה ייעודית "סך השעות ליום... תאריך (עברי) וכו'"
            נראה שהוא בעיקר מסתבך עם הכנת הקובץ (הוא מעלה קובץ TTS ריק לשלוחה)

            תודה רבה!!

            אם הוא כותב לך בטרמינל את הכל, רק לא מעלה את הTTS, זה בעיה אחרת.. אם הוא לא יודע לפלטר בכלל זה בעיה אחרת..
            בכל מקרה, אין דרך רשמית מימות המשיח להציג את השעון נוכחות היומי?

            צ 2 תגובות תגובה אחרונה תגובה ציטוט 1
            • צ
              צבי ד"צ מומחה @MGM IVR נערך לאחרונה על ידי צבי ד"צ

              @MGM-IVR הוא כנראה רק לא מכין את הקובץ, כי הוא מעלה קובץ ריק מצויין, את הפילטר אני לא צריך שהוא יעשה.
              אגב נזכרתי עוד בעיה, שהוא גם צריך לפתוח שלוחה במקרה של שגיאה שאין שלוחה כזו ולנסות שוב להעלות את הקובץ, לגבי זזה הבינה טוען שיש בעיה שהוא מקבל שגיאה מהשרת ואף על פי כן מתייחס כאילו זה הצליח. מחילה על התוספת, אערוך למעלה.

              @MGM-IVR כתב במישהו מוכן לעבור על קוד בפייתון?:

              אין דרך רשמית מימות המשיח להציג את השעון נוכחות היומי?

              עד כמה שידוע לי, וניסיתי לבדוק, לא.

              תודה רבה!!

              תגובה 1 תגובה אחרונה תגובה ציטוט 0
              • צ
                צבי ד"צ מומחה @MGM IVR נערך לאחרונה על ידי צבי ד"צ

                @MGM-IVR הנה הקוד המלא (אם תראה שם פרטים שצריך להסתיר ולא הסתרתי תגיד לי), כמו שכתבתי הקוד לוקח את המספרים מרשימת תפוצה מסויימת, מוריד לכל מספר את הדוח שלו מתוך מודל שעון נוכחות, בודק מה השורות שמהיום הנוכחי ומסכם את הזמן מהיום הנוכחי, ומעלה קובץ TTS לשלוחה ייעודית "סך השעות ליום... תאריך (עברי) וכו'" לכל מספר את הדוח שלו
                נראה שהוא בעיקר מסתבך עם הכנת הקובץ (הוא מעלה קובץ TTS ריק לשלוחה)
                בעיה נוספת, שהוא גם צריך לפתוח שלוחה במקרה של שגיאה שאין שלוחה כזו ולנסות שוב להעלות את הקובץ, לגבי זה הבינה טוען שיש בעיה שהוא מקבל שגיאה מהשרת ואף על פי כן מתייחס כאילו זה הצליח

                import requests
                import csv
                import io
                import logging
                import sys
                import os
                import traceback
                from datetime import datetime, timedelta
                from typing import List, Dict, Tuple
                
                # הגדרת לוגינג
                log_dir = os.path.join(os.path.dirname(__file__), 'logs')
                os.makedirs(log_dir, exist_ok=True)
                log_file = os.path.join(log_dir, 'time_utilization.log')
                
                logging.basicConfig(
                    level=logging.DEBUG,  # שינוי לרמת דיבאג מלאה
                    format='%(asctime)s - %(levelname)s - %(message)s',
                    handlers=[
                        logging.FileHandler(log_file, encoding='utf-8', mode='w'),  # מחיקת קובץ לוג קודם
                        logging.StreamHandler(sys.stdout)
                    ]
                )
                
                # קבועים
                TOKEN = "079607777:123456"
                BASE_URL = "https://www.call2all.co.il/ym/api"
                
                def convert_hours_to_hebrew_format(total_hours: float) -> str:
                    """המרת שעות לפורמט של שעות ודקות בעברית"""
                    hours = int(total_hours)
                    minutes = int((total_hours - hours) * 60)
                    return f"{hours} שעות ו{minutes} דקות"
                
                def get_hebrew_day_name(date: datetime) -> str:
                    """החזרת שם יום בעברית"""
                    hebrew_days = {
                        0: "ראשון", 1: "שני", 2: "שלישי", 3: "רביעי", 
                        4: "חמישי", 5: "שישי", 6: "שבת"
                    }
                    return hebrew_days[date.weekday()]
                
                def get_template_entries() -> List[str]:
                    """קבלת רשימת מספרי פלאפון של לומדים"""
                    url = f"{BASE_URL}/GetTemplateEntries"
                    params = {"token": TOKEN, "templateId": 153193}
                    
                    try:
                        logging.debug(f"שולח בקשה לקבלת רשימת לומדים: {url}")
                        logging.debug(f"פרמטרים: {params}")
                        
                        response = requests.get(url, params=params, timeout=10)
                        response.raise_for_status()
                        
                        logging.debug(f"תגובת השרת: {response.text}")
                        
                        data = response.json()
                        if data["responseStatus"] != "OK":
                            logging.error(f"שגיאה בקבלת רשימת לומדים: {data}")
                            return []
                        
                        phones = [entry["phone"] for entry in data.get("entries", []) if not entry.get("blocked", False)]
                        logging.info(f"נמצאו {len(phones)} מספרי פלאפון")
                        return phones
                    
                    except requests.exceptions.RequestException as e:
                        logging.error(f"שגיאת רשת בקבלת רשימת לומדים: {e}")
                        logging.error(traceback.format_exc())
                        return []
                
                def download_ymgr_file(phone: str) -> bytes:
                    """הורדת קובץ YMGR עבור מספר פלאפון"""
                    url = f"{BASE_URL}/RenderYMGRFile"
                    params = {
                        "token": TOKEN,
                        "wath": f"ivr2:/4/PrivateReports/TimeKeeperTotal.{phone}.ymgr",
                        "convertType": "csv",
                        "notLoadLang": 0
                    }
                    
                    try:
                        logging.debug(f"שולח בקשה להורדת קובץ YMGR עבור {phone}: {url}")
                        logging.debug(f"פרמטרים: {params}")
                        
                        response = requests.get(url, params=params, timeout=10)
                        response.raise_for_status()
                        
                        logging.debug(f"גודל קובץ שהתקבל: {len(response.content)} בתים")
                        
                        with open(os.path.join(log_dir, f'{phone}_ymgr.csv'), 'wb') as f:
                            f.write(response.content)
                        
                        logging.info(f"הורדת קובץ YMGR עבור {phone} בוצעה בהצלחה")
                        return response.content
                    except requests.exceptions.RequestException as e:
                        logging.error(f"שגיאה בהורדת קובץ YMGR עבור {phone}: {e}")
                        logging.error(traceback.format_exc())
                        raise
                
                def process_csv_data(csv_content: bytes, today: datetime) -> float:
                    """עיבוד נתוני CSV והחזרת סך השעות עבור היום הנוכחי"""
                    try:
                        logging.debug("מתחיל לעבד קובץ CSV")
                        csv_text = csv_content.decode('utf-8-sig')
                        
                        with open(os.path.join(log_dir, 'debug_csv.csv'), 'w', encoding='utf-8') as f:
                            f.write(csv_text)
                        
                        reader = csv.DictReader(io.StringIO(csv_text))
                        
                        total_hours = 0.0
                        for row in reader:
                            logging.debug(f"עיבוד שורה: {row}")
                            
                            # בדיקת תאריך בעמודה I
                            entry_date_str = row['תאריך כניסה']
                            entry_date = datetime.strptime(entry_date_str, '%d/%m/%Y')
                            
                            # בדיקה אם התאריך תואם את היום הנוכחי
                            if entry_date.date() == today.date():
                                # המרת סך השעות מעמודה M
                                hours_str = row['סך הזמן במשמרת']
                                
                                # פיצול השעות לשעות ודקות
                                time_parts = hours_str.split(':')
                                if len(time_parts) == 3:
                                    hours, minutes, _ = map(int, time_parts)
                                elif len(time_parts) == 2:
                                    hours, minutes = map(int, time_parts)
                                else:
                                    logging.warning(f"פורמט זמן לא תקין: {hours_str}")
                                    continue
                                total_hours += hours + (minutes / 60)
                        
                        logging.info(f"סך השעות שחושבו: {total_hours} שעות")
                        return total_hours
                    except Exception as e:
                        logging.error(f"שגיאה בעיבוד נתוני CSV: {e}")
                        logging.error(traceback.format_exc())
                        return 0.0
                
                def create_tts_file(total_hours: float, today: datetime) -> str:
                    """יצירת קובץ TTS עם סיכום השעות"""
                    try:
                        hebrew_day = get_hebrew_day_name(today)
                        hebrew_date = today.strftime("כ %d %B תשפ״ה")
                        hours_text = convert_hours_to_hebrew_format(total_hours)
                        
                        tts_content = f"סך השעות ליום {hebrew_day} {hebrew_date}: {hours_text}"
                        logging.info(f"נוצר קובץ TTS: {tts_content}")
                        return tts_content
                    except Exception as e:
                        logging.error(f"שגיאה ביצירת קובץ TTS: {e}")
                        logging.error(traceback.format_exc())
                        return ""
                
                def upload_tts_file(phone: str, tts_content: str):
                    """העלאת קובץ TTS לשרת"""
                    url = f"{BASE_URL}/UploadFile"
                    params = {
                        "token": TOKEN,
                        "path": f"ivr2:5/{phone}",
                        "convertAudio": 0,
                        "autoNumbering": "true",
                        "tts": 1
                    }
                    
                    try:
                        logging.debug(f"שולח בקשה להעלאת קובץ TTS עבור {phone}: {url}")
                        logging.debug(f"פרמטרים: {params}")
                        logging.debug(f"תוכן TTS: {tts_content}")
                        
                        response = requests.post(url, params=params, data={"file": tts_content}, timeout=10)
                        response.raise_for_status()
                        
                        logging.debug(f"תגובת השרת בהעלאת TTS: {response.text}")
                        logging.info(f"העלאת קובץ TTS עבור {phone} בוצעה בהצלחה")
                        return response
                    except requests.exceptions.RequestException as e:
                        logging.error(f"שגיאה בהעלאת קובץ TTS עבור {phone}: {e}")
                        logging.error(traceback.format_exc())
                        raise
                
                def update_extension(phone: str):
                    """עדכון הרחבה במקרה של שגיאה"""
                    url = f"{BASE_URL}/UpdateExtension"
                    params = {
                        "token": TOKEN,
                        "path": f"ivr2:5/{phone[:6]}",
                        "type": "playfile",
                        "playfile_end_goto": "/0000/999"
                    }
                    
                    try:
                        logging.debug(f"שולח בקשה לעדכון הרחבה עבור {phone}: {url}")
                        logging.debug(f"פרמטרים: {params}")
                        
                        response = requests.get(url, params=params, timeout=10)
                        response.raise_for_status()
                        
                        logging.debug(f"תגובת השרת בעדכון הרחבה: {response.text}")
                        logging.info(f"עדכון הרחבה עבור {phone} בוצע בהצלחה")
                        return response
                    except requests.exceptions.RequestException as e:
                        logging.error(f"שגיאה בעדכון הרחבה עבור {phone}: {e}")
                        logging.error(traceback.format_exc())
                        raise
                
                def main():
                    logging.info("התחלת הרצת סקריפט ניצול זמן")
                    today = datetime.now()
                    logging.debug(f"תאריך נוכחי: {today}")
                    
                    try:
                        phones = get_template_entries()
                        
                        if not phones:
                            logging.warning("לא נמצאו מספרי פלאפון")
                            return
                        
                        for phone in phones:
                            try:
                                # הורדת קובץ YMGR
                                ymgr_content = download_ymgr_file(phone)
                                
                                # חישוב סך השעות
                                total_hours = process_csv_data(ymgr_content, today)
                                
                                # אם אין שעות ביום הנוכחי, דלג על הלומד הזה
                                if total_hours == 0:
                                    logging.info(f"אין שעות ביום הנוכחי עבור {phone}")
                                    continue
                                
                                # יצירת קובץ TTS
                                tts_content = create_tts_file(total_hours, today)
                                
                                if not tts_content:
                                    logging.warning(f"לא ניתן ליצור קובץ TTS עבור {phone}")
                                    continue
                                
                                # העלאת קובץ TTS
                                upload_tts_file(phone, tts_content)
                                
                            except Exception as phone_error:
                                logging.error(f"שגיאה בטיפול בטלפון {phone}: {phone_error}")
                                logging.error(traceback.format_exc())
                                
                                # במקרה של שגיאה בהעלאה, נסה לעדכן את ההרחבה ואז העלה שוב
                                try:
                                    update_extension(phone)
                                    upload_tts_file(phone, tts_content)
                                except Exception as retry_error:
                                    logging.error(f"שגיאה בניסיון חוזר עבור {phone}: {retry_error}")
                                    logging.error(traceback.format_exc())
                    
                    except Exception as e:
                        logging.error(f"שגיאה כללית: {e}")
                        logging.error(traceback.format_exc())
                    
                    logging.info("סיום הרצת סקריפט ניצול זמן")
                
                if __name__ == "__main__":
                    main()
                
                
                ה תגובה 1 תגובה אחרונה תגובה ציטוט 0
                • ה
                  האדם החושב @צבי ד"צ נערך לאחרונה על ידי

                  @צבי-ד-צ

                  def upload_tts_file(phone: str, tts_content: str):
                      """העלאת קובץ TTS לשרת"""
                      url = f"{BASE_URL}/UploadTextFile"
                      params = {
                          "token": TOKEN,
                          "what": f"ivr2:5/{phone}.tts",
                          "contents": tts_content
                      }
                      
                      try:
                          logging.debug(f"שולח בקשה להעלאת קובץ TTS עבור {phone}: {url}")
                          logging.debug(f"פרמטרים: {params}")
                          logging.debug(f"תוכן TTS: {tts_content}")
                          
                          response = requests.get(url, params=params)
                          response.raise_for_status()
                          
                          logging.debug(f"תגובת השרת בהעלאת TTS: {response.text}")
                          logging.info(f"העלאת קובץ TTS עבור {phone} בוצעה בהצלחה")
                          return response
                      except requests.exceptions.RequestException as e:
                          logging.error(f"שגיאה בהעלאת קובץ TTS עבור {phone}: {e}")
                          logging.error(traceback.format_exc())
                          raise
                  
                  צ תגובה 1 תגובה אחרונה תגובה ציטוט 0
                  • צ
                    צבי ד"צ מומחה @האדם החושב נערך לאחרונה על ידי צבי ד"צ

                    @האדם-החושב מתנצל, אני לא כל כך מבין בזה, תוכל להסביר לי את כוונתך? שם יש טעות? להדביק את זה במקום אותם שורות בקוד ששהבאתי?
                    אם תוכל לומר לי בדיוק מה לשנות.
                    כרגע, לאחר שניסיתי לשנות את השורות שהבאת, כך נראה הקוד המלא

                    import requests
                    import csv
                    import io
                    import logging
                    import sys
                    import os
                    import traceback
                    from datetime import datetime, timedelta
                    from typing import List, Dict, Tuple
                    
                    # הגדרת לוגינג
                    log_dir = os.path.join(os.path.dirname(__file__), 'logs')
                    os.makedirs(log_dir, exist_ok=True)
                    log_file = os.path.join(log_dir, 'time_utilization.log')
                    
                    logging.basicConfig(
                        level=logging.DEBUG,  # שינוי לרמת דיבאג מלאה
                        format='%(asctime)s - %(levelname)s - %(message)s',
                        handlers=[
                            logging.FileHandler(log_file, encoding='utf-8', mode='w'),  # מחיקת קובץ לוג קודם
                            logging.StreamHandler(sys.stdout)
                        ]
                    )
                    
                    # קבועים
                    TOKEN = "079607777:123456"
                    BASE_URL = "https://www.call2all.co.il/ym/api"
                    
                    def convert_hours_to_hebrew_format(total_hours: float) -> str:
                        """המרת שעות לפורמט של שעות ודקות בעברית"""
                        hours = int(total_hours)
                        minutes = int((total_hours - hours) * 60)
                        return f"{hours} שעות ו{minutes} דקות"
                    
                    def get_hebrew_day_name(date: datetime) -> str:
                        """החזרת שם יום בעברית"""
                        hebrew_days = {
                            0: "ראשון", 1: "שני", 2: "שלישי", 3: "רביעי", 
                            4: "חמישי", 5: "שישי", 6: "שבת"
                        }
                        return hebrew_days[date.weekday()]
                    
                    def get_template_entries() -> List[str]:
                        """קבלת רשימת מספרי פלאפון של לומדים"""
                        url = f"{BASE_URL}/GetTemplateEntries"
                        params = {"token": TOKEN, "templateId": 153193}
                        
                        try:
                            logging.debug(f"שולח בקשה לקבלת רשימת לומדים: {url}")
                            logging.debug(f"פרמטרים: {params}")
                            
                            response = requests.get(url, params=params, timeout=10)
                            response.raise_for_status()
                            
                            logging.debug(f"תגובת השרת: {response.text}")
                            
                            data = response.json()
                            if data["responseStatus"] != "OK":
                                logging.error(f"שגיאה בקבלת רשימת לומדים: {data}")
                                return []
                            
                            phones = [entry["phone"] for entry in data.get("entries", []) if not entry.get("blocked", False)]
                            logging.info(f"נמצאו {len(phones)} מספרי פלאפון")
                            return phones
                        
                        except requests.exceptions.RequestException as e:
                            logging.error(f"שגיאת רשת בקבלת רשימת לומדים: {e}")
                            logging.error(traceback.format_exc())
                            return []
                    
                    def download_ymgr_file(phone: str) -> bytes:
                        """הורדת קובץ YMGR עבור מספר פלאפון"""
                        url = f"{BASE_URL}/RenderYMGRFile"
                        params = {
                            "token": TOKEN,
                            "wath": f"ivr2:/4/PrivateReports/TimeKeeperTotal.{phone}.ymgr",
                            "convertType": "csv",
                            "notLoadLang": 0
                        }
                        
                        try:
                            logging.debug(f"שולח בקשה להורדת קובץ YMGR עבור {phone}: {url}")
                            logging.debug(f"פרמטרים: {params}")
                            
                            response = requests.get(url, params=params, timeout=10)
                            response.raise_for_status()
                            
                            logging.debug(f"גודל קובץ שהתקבל: {len(response.content)} בתים")
                            
                            with open(os.path.join(log_dir, f'{phone}_ymgr.csv'), 'wb') as f:
                                f.write(response.content)
                            
                            logging.info(f"הורדת קובץ YMGR עבור {phone} בוצעה בהצלחה")
                            return response.content
                        except requests.exceptions.RequestException as e:
                            logging.error(f"שגיאה בהורדת קובץ YMGR עבור {phone}: {e}")
                            logging.error(traceback.format_exc())
                            raise
                    
                    def process_csv_data(csv_content: bytes, today: datetime) -> float:
                        """עיבוד נתוני CSV והחזרת סך השעות עבור היום הנוכחי"""
                        try:
                            logging.debug("מתחיל לעבד קובץ CSV")
                            csv_text = csv_content.decode('utf-8-sig')
                            
                            with open(os.path.join(log_dir, 'debug_csv.csv'), 'w', encoding='utf-8') as f:
                                f.write(csv_text)
                            
                            reader = csv.DictReader(io.StringIO(csv_text))
                            
                            total_hours = 0.0
                            for row in reader:
                                logging.debug(f"עיבוד שורה: {row}")
                                
                                # בדיקת תאריך בעמודה I
                                entry_date_str = row['תאריך כניסה']
                                entry_date = datetime.strptime(entry_date_str, '%d/%m/%Y')
                                
                                # בדיקה אם התאריך תואם את היום הנוכחי
                                if entry_date.date() == today.date():
                                    # המרת סך השעות מעמודה M
                                    hours_str = row['סך הזמן במשמרת']
                                    
                                    # פיצול השעות לשעות ודקות
                                    time_parts = hours_str.split(':')
                                    if len(time_parts) == 3:
                                        hours, minutes, _ = map(int, time_parts)
                                    elif len(time_parts) == 2:
                                        hours, minutes = map(int, time_parts)
                                    else:
                                        logging.warning(f"פורמט זמן לא תקין: {hours_str}")
                                        continue
                                    total_hours += hours + (minutes / 60)
                            
                            logging.info(f"סך השעות שחושבו: {total_hours} שעות")
                            return total_hours
                        except Exception as e:
                            logging.error(f"שגיאה בעיבוד נתוני CSV: {e}")
                            logging.error(traceback.format_exc())
                            return 0.0
                    
                    def create_tts_file(total_hours: float, today: datetime) -> str:
                        """יצירת קובץ TTS עם סיכום השעות"""
                        try:
                            hebrew_day = get_hebrew_day_name(today)
                            hebrew_date = today.strftime("כ %d %B תשפ״ה")
                            hours_text = convert_hours_to_hebrew_format(total_hours)
                            
                            tts_content = f"סך השעות ליום {hebrew_day} {hebrew_date}: {hours_text}"
                            logging.info(f"נוצר קובץ TTS: {tts_content}")
                            return tts_content
                        except Exception as e:
                            logging.error(f"שגיאה ביצירת קובץ TTS: {e}")
                            logging.error(traceback.format_exc())
                            return ""
                    
                    def upload_tts_file(phone: str, tts_content: str):
                        """העלאת קובץ TTS לשרת"""
                        url = f"{BASE_URL}/UploadTextFile"
                        params = {
                            "token": TOKEN,
                            "what": f"ivr2:5/{phone}.tts",
                            "contents": tts_content
                        }
                        
                        try:
                            logging.debug(f"שולח בקשה להעלאת קובץ TTS עבור {phone}: {url}")
                            logging.debug(f"פרמטרים: {params}")
                            logging.debug(f"תוכן TTS: {tts_content}")
                            
                            response = requests.get(url, params=params)
                            response.raise_for_status()
                            
                            logging.debug(f"תגובת השרת בהעלאת TTS: {response.text}")
                            logging.info(f"העלאת קובץ TTS עבור {phone} בוצעה בהצלחה")
                            return response
                        except requests.exceptions.RequestException as e:
                            logging.error(f"שגיאה בהעלאת קובץ TTS עבור {phone}: {e}")
                            logging.error(traceback.format_exc())
                            raise
                    
                    def update_extension(phone: str):
                        """עדכון הרחבה במקרה של שגיאה"""
                        url = f"{BASE_URL}/UpdateExtension"
                        params = {
                            "token": TOKEN,
                            "path": f"ivr2:5/{phone[:6]}",
                            "type": "playfile",
                            "playfile_end_goto": "/0000/999"
                        }
                        
                        try:
                            logging.debug(f"שולח בקשה לעדכון הרחבה עבור {phone}: {url}")
                            logging.debug(f"פרמטרים: {params}")
                            
                            response = requests.get(url, params=params, timeout=10)
                            response.raise_for_status()
                            
                            logging.debug(f"תגובת השרת בעדכון הרחבה: {response.text}")
                            logging.info(f"עדכון הרחבה עבור {phone} בוצע בהצלחה")
                            return response
                        except requests.exceptions.RequestException as e:
                            logging.error(f"שגיאה בעדכון הרחבה עבור {phone}: {e}")
                            logging.error(traceback.format_exc())
                            raise
                    
                    def main():
                        logging.info("התחלת הרצת סקריפט ניצול זמן")
                        today = datetime.now()
                        logging.debug(f"תאריך נוכחי: {today}")
                        
                        try:
                            phones = get_template_entries()
                            
                            if not phones:
                                logging.warning("לא נמצאו מספרי פלאפון")
                                return
                            
                            for phone in phones:
                                try:
                                    # הורדת קובץ YMGR
                                    ymgr_content = download_ymgr_file(phone)
                                    
                                    # חישוב סך השעות
                                    total_hours = process_csv_data(ymgr_content, today)
                                    
                                    # אם אין שעות ביום הנוכחי, דלג על הלומד הזה
                                    if total_hours == 0:
                                        logging.info(f"אין שעות ביום הנוכחי עבור {phone}")
                                        continue
                                    
                                    # יצירת קובץ TTS
                                    tts_content = create_tts_file(total_hours, today)
                                    
                                    if not tts_content:
                                        logging.warning(f"לא ניתן ליצור קובץ TTS עבור {phone}")
                                        continue
                                    
                                    # העלאת קובץ TTS
                                    upload_tts_file(phone, tts_content)
                                    
                                except Exception as phone_error:
                                    logging.error(f"שגיאה בטיפול בטלפון {phone}: {phone_error}")
                                    logging.error(traceback.format_exc())
                                    
                                    # במקרה של שגיאה בהעלאה, נסה לעדכן את ההרחבה ואז העלה שוב
                                    try:
                                        update_extension(phone)
                                        upload_tts_file(phone, tts_content)
                                    except Exception as retry_error:
                                        logging.error(f"שגיאה בניסיון חוזר עבור {phone}: {retry_error}")
                                        logging.error(traceback.format_exc())
                        
                        except Exception as e:
                            logging.error(f"שגיאה כללית: {e}")
                            logging.error(traceback.format_exc())
                        
                        logging.info("סיום הרצת סקריפט ניצול זמן")
                    
                    if __name__ == "__main__":
                        main()
                    
                    

                    וזה עובד פחות מהקוד הקודם, נראה לי שכלל לא עושה כלום.

                    ממש ממש תודה רבה לך!!! תזכה למצוות!

                    תגובה 1 תגובה אחרונה תגובה ציטוט 0
                    • פוסט ראשון
                      פוסט אחרון