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

    העברת - העתקת קובץ כחדש ביותר לא עובד ב tts

    פורום מפתחים API
    5
    13
    448
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • 6
      613 נערך לאחרונה על ידי 613

      @avrham אמר בהעברת - העתקת קובץ כחדש ביותר לא עובד ב tts:

      שלום, אני מנסה ב api להעביר/ להעתיק קובץ tts וזה לא מעביר לי אותו כקובץ החדש ביותר, האם זה לא עובד בקבצי tts?

      לא עובד
      לפתרון עיין כאן

      A תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • A
        avrham ניהול @613 נערך לאחרונה על ידי

        @613 לא עוזר לי, אני עם פייתון, לא PHP, ו"לתרגם"את הקוד של @ערוץ-הסקרים לא הצלחתי...

        צ 2 תגובות תגובה אחרונה תגובה ציטוט 0
        • צ
          צדיק תמים מומחה @avrham נערך לאחרונה על ידי צדיק תמים

          @avrham אמר בהעברת - העתקת קובץ כחדש ביותר לא עובד ב tts:

          ו"לתרגם"את הקוד של @ערוץ-הסקרים לא הצלחתי...

          הלוגיקה של זה מאוד פשוטה. יש API של ימות לקבלת רשימת הקבצים בתקיה. הוא מחזיר items שזה מערך של קבצים, שמכיל בין השאר את שם כל קובץ.
          צריך לעבור עליהם, לסנן רק את הקבצים מסוג מסוים, ואז להחזיר את הקובץ הגבוה ביותר. המספר של הקובץ הזה + 1, יהיה המספר לקובץ החדש...
          בNode.js (הקוד הזה בדיוק יעבוד גם בסביבת דפדפן, רק שצריך לטעון את axios) פונקציה שעושה כזה דבר תיראה ככה בערך (השתמשתי לבקשת רשת במודול axios, אבל אפשר כמובן לממש את זה גם בלי):

          const axios = require('axios');
           
          axios.defaults.baseURL = 'https://www.call2all.co.il/ym/api/';
          axios.defaults.params = { token: '0773137770:123456' }
           
          /**
           * get max file id in folder
           * @param {String} extension - extension of the file
           * @param {String} path - path of the file in yemot system
           * @returns {Number|Boolean} max file id. false if no files found with requested extension
           * */
          async function getMaxFileId(extension, path) {
            const ymResponse = await axios.get('GetIvrTree', {
              params: {
                path
              }
            })
            if (!['ok', 'OK'].includes(ymResponse.data.responseStatus)) throw new Error(ymResponse.data.message);
          Error(ymResponse.data.message);
            let filesList = ymResponse.data.items.map(item => {
              return item.name
            })
            filesList = filesList.filter(item => {
              const regexFileName = new RegExp(`[0-9]+\.(?:${extension})$`)
              return regexFileName.test(item)
            })
            if (!filesList.length) return false;
            filesList = filesList.map(item => {
              return item.replace(`.${extension}`, '')
            })
            return Math.max(...filesList)
          }
           
          // get max file in 'tts' extension
          getMaxFileId('tts', 'ivr2:0/1').then(max => {
            if (!max) throw new Error('files not found in this folder')
            const padLength = 4;
            console.log('next file name:', `${String(max + 1).padStart(padLength, "0")}.tts`)
          })
          

          התרגום לפייתון/כל שפת תכנות אחרת אמור להיות פשוט ביותר.
          לדוגמה הפונקציה המקבילה ל()Math.max היא max.


          כדי לקבל את הקובץ הגבוה מכמה סיומות ביחד,
          בקריאה לפונקציה (שורה 35), במקום להעביר 'tts' יש להעביר 'tts|wav|mp3'

          תגובה 1 תגובה אחרונה תגובה ציטוט 2
          • צ
            צדיק תמים מומחה @avrham נערך לאחרונה על ידי צדיק תמים

            @avrham האמת שכבר כמה זמן רציתי לקפוץ למים של פייתון, אז... להלן סקריפט הפייתון הראשון שלי!! 🎉🎉
            ואולי יביא גם לך תועלת 🙂

            import http.client
            import json
            import re
            
            # variables
            extension = "wav";
            padLength = 4;
            token = "0773137770";
            path = "ivr2:0/1";
            
            conn = http.client.HTTPSConnection("www.call2all.co.il")
            payload = ''
            headers = {}
            conn.request("GET", f"/ym/api/GetIvrTree?token={token}&path={path}", payload, headers)
            res = conn.getresponse()
            data = res.read()
            data = data.decode("utf-8")
            data = json.loads(data)
            
            # if yemot return status error
            if data['responseStatus'] != 'OK' and data['responseStatus'] != 'ok':
                raise Exception(data['message'])
            
            items = data['items']
            
            def getNameFile(file):
                return file['name']
            
            # convert to list
            filesList = map(getNameFile, items)
            
            # filter only files in this extension
            filesList = filter(lambda filename: re.search(f'\d+\.{extension}$', filename), filesList)
            
            # if not found files in this extension
            if not len(items):
                raise Exception("No items found")
            
            # extract id only
            filesList = map(lambda filename: re.findall('\d+', filename)[0], filesList)
            
            
            maxFileId = max(filesList)
            
            nextFileId = int(maxFileId) + 1;
            
            # pad with zeros
            nextFileId = str(nextFileId).zfill(padLength)
            
            print(f'next file name: {nextFileId}.{extension}')
            

            קרדיטים לידידיי הוותיקים:

            • הרב גוגל שליט"א - ראש וראשון לכל דבר שבתכנות 🤠
            • Github Copilot 🤖

            וכן לתוכנת postman על המבנה הבסיסי של שאילתת רשת ללא כל ספריה חיצונית 😊
            כל הערה/הארה יתקבלו בשמחה!


            כפונקציה:

            import http.client
            import json
            import re
            
            # variables
            extension = "wav";
            padLength = 4;
            token = "0773137770";
            path = "ivr2:0/1";
            
            def getNextFileName(token, path, extension, padLength):
                conn = http.client.HTTPSConnection("www.call2all.co.il")
                payload = ''
                headers = {}
                conn.request(
                    "GET", f"/ym/api/GetIvrTree?token={token}&path={path}", payload, headers)
                res = conn.getresponse()
                data = res.read()
                data = data.decode("utf-8")
                data = json.loads(data)
            
                # if yemot return status error
                if data['responseStatus'] != 'OK' and data['responseStatus'] != 'ok':
                    raise Exception(data['message'])
            
                items = data['items']
            
                def getNameFile(file):
                    return file['name']
            
                # convert to list
                filesList = map(getNameFile, items)
            
                # filter only files in this extension
                filesList = filter(lambda filename: re.search(
                    f'\d+\.{extension}$', filename), filesList)
            
                # if not found files in this extension
                if not len(items):
                    raise Exception("No items found")
            
                # extract id only
                filesList = map(lambda filename: re.findall('\d+', filename)[0], filesList)
            
                maxFileId = max(filesList)
            
                nextFileId = int(maxFileId) + 1
            
                # pad with zeros
                nextFileId = str(nextFileId).zfill(padLength)
            
                return f'{nextFileId}.{extension}';
            
            # example usage
            newFileName = getNextFileName(token, path, extension, padLength);
            

            ת A M 3 תגובות תגובה אחרונה תגובה ציטוט 4
            • ת
              תן חיוך 1 @צדיק תמים נערך לאחרונה על ידי

              @צדיק-תמים
              יפה לך
              עלה והצלח
              אגב התעניינות גרידא על איזה שרת אתה מריץ פייתון?

              צ תגובה 1 תגובה אחרונה תגובה ציטוט 0
              • צ
                צדיק תמים מומחה @תן חיוך 1 נערך לאחרונה על ידי

                @תן-חיוך-1 למה נראה לך שאני מריץ פייתון?

                @צדיק-תמים אמר בהעברת - העתקת קובץ כחדש ביותר לא עובד ב tts:

                להלן סקריפט הפייתון הראשון שלי

                בכל מקרה אם כוונתך לשאול האם יש שרת חינמי שתומך בפייתון
                אז לכאורה התשובה היא heroku

                ת תגובה 1 תגובה אחרונה תגובה ציטוט 0
                • ת
                  תן חיוך 1 @צדיק תמים נערך לאחרונה על ידי

                  @צדיק-תמים
                  תודה
                  רציתי לתת לייק אבל גילתי שאין לי 15 מוניטין ואיני יכול לתת לך
                  אז בעתיד בעז''ה

                  תגובה 1 תגובה אחרונה תגובה ציטוט 1
                  • A
                    avrham ניהול @צדיק תמים נערך לאחרונה על ידי avrham

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

                    צ תגובה 1 תגובה אחרונה תגובה ציטוט 0
                    • צ
                      צדיק תמים מומחה @avrham נערך לאחרונה על ידי צדיק תמים

                      @avrham אמר בהעברת - העתקת קובץ כחדש ביותר לא עובד ב tts:

                      הערה: מומלץ שתוסיף הערות בקוד מה כל שורה עושה, זה יעזור. בפרט למתלמדים.

                      זה נכון אולי בשביל ספר ללימוד תכנות. כשכותבים קוד לא נהוג לכתוב הערות שמסבירים דברים שאפשר להבין מקריאה פשוטה של הקוד...
                      חוץ מזה שזה ייקח מלאא זמן 😋

                      A תגובה 1 תגובה אחרונה תגובה ציטוט 1
                      • A
                        avrham ניהול @צדיק תמים נערך לאחרונה על ידי

                        @צדיק-תמים צודק, אבל אני העברתי את הקוד לעוד כמה אנשים שחיפשו, ואחד מהם שאל אותי מה כתוב, הייתי צריך להסביר לו שעה.. בכל מקרה, ממש תודה רבה!

                        צ תגובה 1 תגובה אחרונה תגובה ציטוט 1
                        • צ
                          צדיק תמים מומחה @avrham נערך לאחרונה על ידי צדיק תמים

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

                          newFileName = getNextFileName(token, path, extension, padLength)
                          

                          שמות הארגומנטים די מסבירים את עצמם 🙂

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

                            @צדיק-תמים אמר בהעברת - העתקת קובץ כחדש ביותר לא עובד ב tts:

                            @avrham האמת שכבר כמה זמן רציתי לקפוץ למים של פייתון, אז... להלן סקריפט הפייתון הראשון שלי!! 🎉🎉
                            ואולי יביא גם לך תועלת 🙂

                            import http.client
                            import json
                            import re
                            
                            # variables
                            extension = "wav";
                            padLength = 4;
                            token = "0773137770";
                            path = "ivr2:0/1";
                            
                            conn = http.client.HTTPSConnection("www.call2all.co.il")
                            payload = ''
                            headers = {}
                            conn.request("GET", f"/ym/api/GetIvrTree?token={token}&path={path}", payload, headers)
                            res = conn.getresponse()
                            data = res.read()
                            data = data.decode("utf-8")
                            data = json.loads(data)
                            
                            # if yemot return status error
                            if data['responseStatus'] != 'OK' and data['responseStatus'] != 'ok':
                                raise Exception(data['message'])
                            
                            items = data['items']
                            
                            def getNameFile(file):
                                return file['name']
                            
                            # convert to list
                            filesList = map(getNameFile, items)
                            
                            # filter only files in this extension
                            filesList = filter(lambda filename: re.search(f'\d+\.{extension}$', filename), filesList)
                            
                            # if not found files in this extension
                            if not len(items):
                                raise Exception("No items found")
                            
                            # extract id only
                            filesList = map(lambda filename: re.findall('\d+', filename)[0], filesList)
                            
                            
                            maxFileId = max(filesList)
                            
                            nextFileId = int(maxFileId) + 1;
                            
                            # pad with zeros
                            nextFileId = str(nextFileId).zfill(padLength)
                            
                            print(f'next file name: {nextFileId}.{extension}')
                            

                            קרדיטים לידידיי הוותיקים:

                            • הרב גוגל שליט"א - ראש וראשון לכל דבר שבתכנות 🤠
                            • Github Copilot 🤖

                            וכן לתוכנת postman על המבנה הבסיסי של שאילתת רשת ללא כל ספריה חיצונית 😊
                            כל הערה/הארה יתקבלו בשמחה!


                            כפונקציה:

                            import http.client
                            import json
                            import re
                            
                            # variables
                            extension = "wav";
                            padLength = 4;
                            token = "0773137770";
                            path = "ivr2:0/1";
                            
                            def getNextFileName(token, path, extension, padLength):
                                conn = http.client.HTTPSConnection("www.call2all.co.il")
                                payload = ''
                                headers = {}
                                conn.request(
                                    "GET", f"/ym/api/GetIvrTree?token={token}&path={path}", payload, headers)
                                res = conn.getresponse()
                                data = res.read()
                                data = data.decode("utf-8")
                                data = json.loads(data)
                            
                                # if yemot return status error
                                if data['responseStatus'] != 'OK' and data['responseStatus'] != 'ok':
                                    raise Exception(data['message'])
                            
                                items = data['items']
                            
                                def getNameFile(file):
                                    return file['name']
                            
                                # convert to list
                                filesList = map(getNameFile, items)
                            
                                # filter only files in this extension
                                filesList = filter(lambda filename: re.search(
                                    f'\d+\.{extension}$', filename), filesList)
                            
                                # if not found files in this extension
                                if not len(items):
                                    raise Exception("No items found")
                            
                                # extract id only
                                filesList = map(lambda filename: re.findall('\d+', filename)[0], filesList)
                            
                                maxFileId = max(filesList)
                            
                                nextFileId = int(maxFileId) + 1
                            
                                # pad with zeros
                                nextFileId = str(nextFileId).zfill(padLength)
                            
                                return f'{nextFileId}.{extension}';
                            
                            # example usage
                            newFileName = getNextFileName(token, path, extension, padLength);
                            

                            לא מצאתי את שלך,
                            אז בניתי לעצמי על בסיס מה שערוץ הסקרים כתב בפורום (אני לא מוצא את המקור, הביאו אותו פה )פעם בPHP, תירגמתי לפייתון

                            from cmath import isnan
                            from contextlib import nullcontext
                            import requests
                            import json
                            import re
                            
                            username = "0799"
                            password = "1234"
                            
                            def get_token(username,password):
                                url = f"https://www.call2all.co.il/ym/api/Login?username={username}&password={password}"
                                r = requests.get(url)
                                return json.loads(r.text)["token"]
                            
                            def Logout(token):
                                url = f"https://www.call2all.co.il/ym/api/Logout?token={token}"
                                r = requests.get(url)
                                return True
                            
                            
                            def FileNameToUpload(server, token, path):
                                array = json.loads(requests.get(f"https://{server}.call2all.co.il/ym/api//GetIVR2Dir?token={token}&path={path}").text)
                                #print (array["files"])
                                if array["responseStatus"]=="OK":
                                    for i in array["files"]:
                                        if i["fileType"] == "AUDIO" or i["fileType"] == "TTS":
                                            split = re.split ("\." ,i["name"])
                                            isnum = split[0].isnumeric()
                                            if isnum:
                                                break
                                        try:
                                            if split[0] == None:
                                                NewFileName = "000"
                                            else : 
                                                NewFileName = int(split[0]) + 1
                                            if len(str(NewFileName)) == 1:
                                                NewFileName = "00" + str(NewFileName)
                                            elif len(str(NewFileName)) == 2:
                                                NewFileName = "0" + str(NewFileName)
                                            return NewFileName
                                        except:
                                            return "000"
                            token = get_token(username,password)
                            
                            print (FileNameToUpload("www",token,"ivr2:/2"))
                            
                            Logout(token)
                            
                            תגובה 1 תגובה אחרונה תגובה ציטוט 1
                            • פוסט ראשון
                              פוסט אחרון