@צדיק-תמים אמר בהעברת - העתקת קובץ כחדש ביותר לא עובד ב 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 על המבנה הבסיסי של שאילתת רשת ללא כל ספריה חיצונית 😊
כל הערה/הארה יתקבלו בשמחה!
Spoiler
כפונקציה:
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)