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

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

    פורום מפתחים API
    5
    13
    448
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • 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
                          • פוסט ראשון
                            פוסט אחרון