lalalic commited on
Commit
c77ba58
·
verified ·
1 Parent(s): 43a8712

Upload 3 files

Browse files
Files changed (4) hide show
  1. .gitattributes +1 -0
  2. ffmpeg +3 -0
  3. qili.py +128 -0
  4. sample.wav +0 -0
.gitattributes CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ ffmpeg filter=lfs diff=lfs merge=lfs -text
ffmpeg ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:51bbdd978250ff7239d213940ff2c92ea56e7d768e8db98d9cbc4079d82e42dc
3
+ size 78999296
qili.py ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import sys
3
+ import uuid
4
+ import json
5
+ import requests
6
+ import traceback
7
+
8
+ from importlib import import_module
9
+
10
+ sys.path.append(os.getcwd())
11
+
12
+ conf=None
13
+ def makeConfReady():
14
+ global conf
15
+ if conf is None:
16
+ conf=import_module("qili-conf").conf
17
+
18
+ def fetch(request, timeout=60000):
19
+ try:
20
+ makeConfReady()
21
+ with requests.Session() as session:
22
+ response = session.post(
23
+ conf["api"],
24
+ headers={
25
+ 'Content-Type': 'application/json',
26
+ 'x-application-id': conf["apiKey"],
27
+ "x-session-token":conf["token"]
28
+ },
29
+ data=request if isinstance(request, str) else json.dumps(request),
30
+ timeout=timeout / 1000
31
+ )
32
+ response.raise_for_status()
33
+
34
+ # Parse JSON response
35
+ response_data = response.json()
36
+
37
+ if 'data' not in response_data:
38
+ raise ValueError(response_data.get('message') or response_data.get('statusText') or 'Unknown error')
39
+
40
+ if 'errors' in response_data:
41
+ raise ValueError(response_data['errors'])
42
+
43
+ return response_data['data']
44
+
45
+ except requests.exceptions.Timeout:
46
+ raise TimeoutError('Timeout from qili service')
47
+
48
+
49
+ def upload_bytes(bytes, key=None, ext=".wav"):
50
+ makeConfReady()
51
+ try:
52
+ if key is None:
53
+ key=f"_temp_/1/{str(uuid.uuid4())}{ext}"
54
+ data = fetch({
55
+ "query": '''
56
+ query($key:String!){
57
+ file_upload_token(key:$key){
58
+ token
59
+ key
60
+ }
61
+ }
62
+ ''',
63
+ "variables": {
64
+ "key": key
65
+ }
66
+ })
67
+ data=data["file_upload_token"]
68
+ files={"file":(os.path.basename(key), bytes)}
69
+ response = requests.post(conf["api"], files=files, data=data)
70
+ if response.ok:
71
+ data = response.json()
72
+ return data.get("data", {}).get("file_create", {}).get("url")
73
+ else:
74
+ raise Exception(f"{response.status_code} - {response.reason}, {response.text}")
75
+ except Exception as e:
76
+ traceback.print_exc()
77
+ return str(e)
78
+
79
+
80
+ def upload(files, root_key=None):
81
+ makeConfReady()
82
+ if not isinstance(files, list):
83
+ shouldReturnString=True
84
+ files = [files]
85
+
86
+ if(root_key==None):
87
+ root_key="_temp_/1/" + str(uuid.uuid4())
88
+
89
+ try:
90
+ keys, queries, variables = [], [], {}
91
+
92
+ for i, file in enumerate(files):
93
+ k = f"key{i}"
94
+ keys.append(k)
95
+ queries.append(f"""
96
+ token{i}:file_upload_token(key:${k}){{
97
+ token
98
+ key
99
+ }}
100
+ """)
101
+ variables[k] = f"{root_key}{os.path.basename(file)}"
102
+
103
+ keys=','.join([f'${k}:String!' for k in keys])
104
+ queries='\n'.join(queries)
105
+
106
+ query = f"""query({ keys }){{ { queries } }}"""
107
+
108
+ data = fetch({"query": query, "variables": variables})
109
+
110
+ tokens = list(data.values())
111
+ urls = []
112
+
113
+ for i, file in enumerate(files):
114
+ form = {"file": open(file, "rb")}
115
+ response = requests.post(conf["api"], files=form, data=tokens[i])
116
+
117
+ if response.ok:
118
+ data = response.json()
119
+ urls.append(data.get("data", {}).get("file_create", {}).get("url"))
120
+ else:
121
+ raise Exception(f"{response.status_code} - {response.reason}, {response.text}")
122
+
123
+ if shouldReturnString:
124
+ urls[0]
125
+ return list(filter(None, urls))
126
+ except Exception as e:
127
+ traceback.print_exc()
128
+ return str(e)
sample.wav ADDED
Binary file (379 kB). View file