في هذا البرنامج التعليمي ، سنغطي كيفية تنفيذ نهج غير متزامن لتحويل الصور. تحتاج فقط إلى إرسال صورة المصدر إلى SubmitWebPConversionTask أو أي طرق أخرى لواجهة برمجة تطبيقات الإرسال مثل SubmitBmpConversionTask، SubmitDicomConversionTask وما إلى ذلك لتلقي معرف المهمة كاستجابة.
بعد تلقي معرف المهمة ، تحتاج إلى التحقق من حالة المهمة عن طريق الاتصال بطريقة GetConversionTaskStatus. تحتاج إلى استدعاء نفس الطريقة بعد تأخير بضع ثوان طالما أن حالة المهمة تساوي “Waiting”. بمجرد تلقي “Completed” من طريقة GetConversionTaskStatus ، يمكنك الاتصال بطريقة DownloadResult لتنزيل الصورة النهائية. يمكنك استخدام تطبيق Python أدناه.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
| import requests
import time
def submit_webp_conversion_task(file_path_to_convert, rapid_api_key):
multipart_form_data = {
'file': (file_path_to_convert, open(file_path_to_convert, 'rb')),
'lossy': (None, 'true')
}
headers = {
'X-RapidAPI-Key': rapid_api_key
}
response = requests.post('https://image-converter4.p.rapidapi.com/submitWebPConversionTask',
files=multipart_form_data, headers=headers)
if response.status_code != 200:
raise Exception('Cannot create task')
return response.text
def get_conversion_task_status(task_id, rapid_api_key):
params = {
'taskId': task_id
}
headers = {
'X-RapidAPI-Key': rapid_api_key
}
response = requests.get('https://image-converter4.p.rapidapi.com/getConversionTaskStatus',
headers=headers, params=params)
if response.status_code != 200:
raise Exception("Cannot check task status")
return response.text
def download_result(task_id, rapid_api_key):
params = {
'taskId': task_id
}
headers = {
'X-RapidAPI-Key': rapid_api_key
}
response = requests.get('https://image-converter4.p.rapidapi.com/downloadResult', headers=headers,
params=params)
if response.status_code != 200:
raise Exception('Cannot download file')
return response.content
if __name__ == '__main__':
rapid_api_key = '<YOUR RAPIDAPI KEY HERE>'
file_path_to_convert = '<PATH OF SOURCE IMAGE TO CONVERT>'
task_id = submit_webp_conversion_task(file_path_to_convert, rapid_api_key)
retry_count = 0
while retry_count < 100:
retry_count += 1
time.sleep(5)
status = get_conversion_task_status(task_id, rapid_api_key)
if status == 'Completed':
file_bytes = download_result(task_id, rapid_api_key)
with open('final_image.webp', mode='wb') as binary_pdf:
binary_pdf.write(file_bytes)
break
elif status == 'Waiting':
continue
elif status == 'Failed':
raise Exception('Cannot convert file')
else:
raise Exception('Invalid status')
|