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

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

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

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

      תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • 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
                              • פוסט ראשון
                                פוסט אחרון