agora-python-server-sdk 2.3.3__tar.gz → 2.3.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. {agora_python_server_sdk-2.3.3/agora_python_server_sdk.egg-info → agora_python_server_sdk-2.3.4}/PKG-INFO +1 -1
  2. agora_python_server_sdk-2.3.4/agora/__init__.py +202 -0
  3. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/__init__.py +1 -1
  4. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtm/__init__.py +1 -0
  5. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4/agora_python_server_sdk.egg-info}/PKG-INFO +1 -1
  6. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora_python_server_sdk.egg-info/SOURCES.txt +1 -0
  7. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/setup.py +2 -2
  8. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/MANIFEST.in +0 -0
  9. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/README.md +0 -0
  10. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/_ctypes_handle/_audio_frame_observer.py +0 -0
  11. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/_ctypes_handle/_ctypes_data.py +0 -0
  12. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/_ctypes_handle/_local_user_observer.py +0 -0
  13. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/_ctypes_handle/_rtc_connection_observer.py +0 -0
  14. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/_ctypes_handle/_video_encoded_frame_observer.py +0 -0
  15. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/_ctypes_handle/_video_frame_observer.py +0 -0
  16. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/_utils/globals.py +0 -0
  17. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/agora_base.py +0 -0
  18. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/agora_parameter.py +0 -0
  19. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/agora_service.py +0 -0
  20. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/audio_encoded_frame_sender.py +0 -0
  21. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/audio_frame_observer.py +0 -0
  22. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/audio_pcm_data_sender.py +0 -0
  23. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/audio_sessionctrl.py +0 -0
  24. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/audio_vad_manager.py +0 -0
  25. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/local_audio_track.py +0 -0
  26. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/local_user.py +0 -0
  27. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/local_user_observer.py +0 -0
  28. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/local_video_track.py +0 -0
  29. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/media_node_factory.py +0 -0
  30. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/remote_audio_track.py +0 -0
  31. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/remote_video_track.py +0 -0
  32. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/rtc_connection.py +0 -0
  33. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/rtc_connection_observer.py +0 -0
  34. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/utils/audio_consumer.py +0 -0
  35. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/utils/vad_dump.py +0 -0
  36. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/video_encoded_frame_observer.py +0 -0
  37. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/video_encoded_image_sender.py +0 -0
  38. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/video_frame_observer.py +0 -0
  39. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/video_frame_sender.py +0 -0
  40. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtc/voice_detection.py +0 -0
  41. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtm/_ctypes_handle/_ctypes_data.py +0 -0
  42. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtm/rtm_base.py +0 -0
  43. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtm/rtm_client.py +0 -0
  44. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora/rtm/rtm_event_handler.py +0 -0
  45. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora_python_server_sdk.egg-info/dependency_links.txt +0 -0
  46. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/agora_python_server_sdk.egg-info/top_level.txt +0 -0
  47. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/pyproject.toml +0 -0
  48. {agora_python_server_sdk-2.3.3 → agora_python_server_sdk-2.3.4}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: agora_python_server_sdk
3
- Version: 2.3.3
3
+ Version: 2.3.4
4
4
  Summary: A Python SDK for Agora Server
5
5
  Home-page: https://github.com/AgoraIO-Extensions/Agora-Python-Server-SDK
6
6
  Classifier: Intended Audience :: Developers
@@ -0,0 +1,202 @@
1
+ #!/usr/bin/env python
2
+
3
+ import hashlib
4
+ import ssl
5
+ import zipfile
6
+ import site
7
+ from urllib import request
8
+ import ctypes
9
+ import os
10
+ import sys
11
+ import platform
12
+ import logging
13
+ logger = logging.getLogger(__name__)
14
+ ssl._create_default_https_context = ssl._create_unverified_context
15
+
16
+ '''
17
+ # this is the global init for agora python server sdk, include rtc and rtm
18
+ # it will check the sdk version and download the latest sdk if needed
19
+ path dir structure is:
20
+ /home/xxx/agora/
21
+ agora_sdk
22
+ include
23
+ *.so/*.dylib
24
+ rtc
25
+ __init__.py
26
+ rtc*.py
27
+ rtm
28
+ __init__.py
29
+ rtm*.py
30
+ __init__.py
31
+ setup.py
32
+ README.md
33
+ LICENSE
34
+ CHANGELOG.md
35
+ CONTRIBUTING.md
36
+ CODE_OF_CONDUCT.md
37
+ SECURITY.md
38
+ CONTRIBUTORS.md
39
+ '''
40
+ '''
41
+ # requirement for package zip file:
42
+ no root dir, only so/dylib file in the root dir
43
+ '''
44
+
45
+
46
+
47
+
48
+ def get_file_md5(file_path):
49
+ hash_md5 = hashlib.md5()
50
+ try:
51
+ with open(file_path, "rb") as f:
52
+ for chunk in iter(lambda: f.read(4096), b""):
53
+ hash_md5.update(chunk)
54
+ return hash_md5.hexdigest()
55
+ except Exception as e:
56
+ logger.error(f"get_file_md5 error: {e}")
57
+ return ""
58
+
59
+
60
+ #get agora root path, like: /home/xxx/agora
61
+ def get_sdk_root_path():
62
+ agora_path = os.path.dirname(os.path.abspath(__file__))
63
+ return agora_path
64
+ #get agora 's library path, like: /home/xxx/agora/agora_sdk/
65
+ def get_sdk_library_path():
66
+ agora_path = get_sdk_root_path()
67
+ library_path = os.path.join(agora_path, "agora_sdk")
68
+
69
+ return library_path
70
+ def get_sdk_rtc_path():
71
+ agora_path = get_sdk_root_path()
72
+ rtc_path = os.path.join(agora_path, "rtc")
73
+ return rtc_path
74
+ def get_sdk_rtm_path():
75
+ agora_path = get_sdk_root_path()
76
+ rtm_path = os.path.join(agora_path, "rtm")
77
+ return rtm_path
78
+
79
+
80
+ #helper function to download file from ur
81
+ def report_progress(blocknum, blocksize, totalsize):
82
+ """
83
+ 下载进度回调函数
84
+ """
85
+ if totalsize > 0:
86
+ # calculate download progress percentage
87
+ percent = min(100, (blocknum * blocksize) / totalsize * 100)
88
+ # use carriage return to overwrite current line, to update progress in place
89
+ print(f"\rDownloading: ----{percent:.2f}%-----", end='', flush=True)
90
+ # when download is complete (or calculated value exceeds 100%)
91
+ if percent >= 100:
92
+ print("Downloading: ----100.00%-----\n")
93
+ else:
94
+ # if cannot get file total size, show downloaded bytes
95
+ downloaded = blocknum * blocksize
96
+ print(f"\rDownloading: ----{downloaded} bytes-----", end='', flush=True)
97
+
98
+
99
+ def _check_download_and_extract_sdk():
100
+ agora_service_path = os.path.dirname(os.path.abspath(__file__))
101
+ # change from dir like: /home/xxx/agora_rtc/agora/rtc/agora_sdk to
102
+ # /home/xxx/agora_rtc/agora/agora_sdk
103
+ # /home/xxx/agora_rtc/agora/rtc
104
+ # /home/xxx/agora_rtc/agora/rtm
105
+ global sdk_library_dir, sdk_root_dir
106
+
107
+ zip_path = os.path.join(sdk_root_dir, "agora_rtc_sdk.zip")
108
+ logger.error(f"sdk_library_dir: {sdk_library_dir}")
109
+ logger.error(f"zip_path: {zip_path}")
110
+
111
+ # for diff os and arch
112
+ arch = platform.machine()
113
+ os_type = platform.system()
114
+
115
+
116
+
117
+ #url = "https://download.agora.io/sdk/release/agora_rtc_sdk-x86_64-linux-gnu-v4.4.30-20241024_101940-398537.zip"
118
+ # version 2.2.0 for linux
119
+ #url = "https://download.agora.io/sdk/release/agora_rtc_sdk-x86_64-linux-gnu-v4.4.31-20241223_111509-491956.zip"
120
+ #url = "https://download.agora.io/sdk/release/agora_rtc_sdk-x86_64-linux-gnu-v4.4.32-20250715_161625-791246.zip"
121
+ #url = "https://download.agora.io/sdk/release/agora_rtc_sdk-x86_64-linux-gnu-v4.4.32-20250829_160340-860733.zip"
122
+ #fusion version: 20251023
123
+
124
+ url = "https://download.agora.io/sdk/release/agora_rtc_sdk-x86_64-linux-gnu-v4.4.32-20250829_160340-860733-aed_20251107_1642.zip"
125
+
126
+
127
+ rtc_libfile_path = os.path.join(sdk_library_dir, "libagora_rtc_sdk.so")
128
+ #rtc_md5 = "7031dd10d1681cd88fd89d68c5b54282"
129
+ rtc_md5 = "7eb8042e43246f95f188549d8711d1bf"
130
+ if sys.platform == 'darwin':
131
+ #url = "https://download.agora.io/sdk/release/agora_rtc_sdk_mac_rel.v4.4.30_22472_FULL_20241024_1224_398653.zip"
132
+ # version 2.2.0 for mac
133
+ #url = "https://download.agora.io/sdk/release/agora_sdk_mac_v4.4.31_23136_FULL_20241223_1245_492039.zip"
134
+ #url = "https://download.agora.io/sdk/release/agora_sdk_mac_v4.4.32_24915_FULL_20250715_1710_791284.zip"
135
+ #url = "https://download.agora.io/sdk/release/agora_sdk_mac_v4.4.32_25418_FULL_20250829_1647_860754.zip"
136
+ #20251023 Fusion version: one sdk package include rtc and rtm
137
+ url = "https://download.agora.io/sdk/release/agora_sdk_mac_v4.4.32_25418_FULL_20250829_1647_860754-aed_20251107_1639.zip"
138
+
139
+
140
+
141
+ rtc_libfile_path = os.path.join(sdk_library_dir, "libAgoraRtcKit.dylib")
142
+ #rtc_md5 = "ca3ca14f9e2b7d97eb2594d1f32dab9f"
143
+ rtc_md5 = "df0ec3b5073d17dee76cc4d97c13699a"
144
+ if arch == "aarch64" and sys.platform == 'linux':
145
+ #url = "https://download.agora.io/sdk/release/Agora-RTC-aarch64-linux-gnu-v4.4.31-20250307_175457-603878.zip"
146
+ #url = "https://download.agora.io/sdk/release/Agora-RTC-aarch64-linux-gnu-v4.4.32-20250425_150503-675674.zip"
147
+ #url = "https://download.agora.io/sdk/release/Agora-RTC-aarch64-linux-gnu-v4.4.32-20251009_145437-921455.zip"
148
+ url = "https://download.agora.io/sdk/release/Agora-RTC-aarch64-linux-gnu-v4.4.32-20251009_145437-921455_20251023_1538.zip"
149
+ rtc_md5 = "5c002f25d2b381e353082da4f835b4f2"
150
+
151
+ is_file_exist = os.path.exists(rtc_libfile_path)
152
+ if is_file_exist:
153
+ md5_value = get_file_md5(rtc_libfile_path)
154
+ else:
155
+ md5_value = ""
156
+ if md5_value == rtc_md5:
157
+ return
158
+
159
+ logger.error(f"missing agora sdk, now download it, please wait for a while...: {rtc_libfile_path} {md5_value} {rtc_md5} {is_file_exist}")
160
+ if os.path.exists(sdk_library_dir):
161
+ os.system(f"rm -rf {sdk_library_dir}")
162
+ os.makedirs(sdk_library_dir, exist_ok=True)
163
+ if os.path.exists(zip_path):
164
+ os.remove(zip_path)
165
+
166
+ logger.error(f"sdk_library_dir: {sdk_library_dir}")
167
+ logger.error(f"Downloading {url}...")
168
+ #download_file_with_progress(url, zip_path)
169
+ request.urlretrieve(url, zip_path,reporthook=report_progress)
170
+
171
+
172
+ logger.error(f"Extracting {zip_path}...")
173
+
174
+ with zipfile.ZipFile(zip_path, 'r') as zip_ref:
175
+ zip_ref.extractall(sdk_root_dir)
176
+
177
+ if os.path.exists(zip_path):
178
+ os.remove(zip_path)
179
+ logger.error("download done, continue...")
180
+
181
+
182
+
183
+ sdk_root_dir = get_sdk_root_path()
184
+ sdk_rtc_dir = get_sdk_rtc_path()
185
+ sdk_rtm_dir = get_sdk_rtm_path()
186
+ sdk_library_dir = get_sdk_library_path()
187
+
188
+ _check_download_and_extract_sdk()
189
+
190
+
191
+ if sys.platform == 'darwin':
192
+ rtc_libfile_path = os.path.join(sdk_library_dir, 'libAgoraRtcKit.dylib')
193
+ else:
194
+ rtc_libfile_path = os.path.join(sdk_library_dir, 'libagora_rtc_sdk.so')
195
+ ctypes.CDLL(os.path.join(sdk_library_dir, 'libaosl.so'))
196
+
197
+ #check if the library exists
198
+ if not os.path.exists(rtc_libfile_path):
199
+ logger.error(f"library {rtc_libfile_path} not found")
200
+ sys.exit(1)
201
+ # import these variables to the sub modules
202
+ __all__ = ['sdk_library_dir', 'sdk_rtc_dir', 'sdk_rtm_dir', 'sdk_root_dir']
@@ -25,7 +25,7 @@ try:
25
25
 
26
26
  elif sys.platform == 'linux':
27
27
  lib_agora_rtc_path = os.path.join(lib_dir, 'libagora_rtc_sdk.so')
28
- #ctypes.CDLL(os.path.join(lib_dir, 'libagora-fdkaac.so'))
28
+ ctypes.CDLL(os.path.join(lib_dir, 'libagora-fdkaac.so'))
29
29
  agora_lib = ctypes.CDLL(lib_agora_rtc_path)
30
30
  except OSError as e:
31
31
  logger.error(f"Error loading the library: {e}")
@@ -30,6 +30,7 @@ try:
30
30
  elif sys.platform == 'linux':
31
31
  lib_agora_rtm_path = os.path.join(sdk_library_dir, 'libagora_rtm_sdk_c.so')
32
32
  rtm_lib = ctypes.CDLL(lib_agora_rtm_path)
33
+ ctypes.CDLL(os.path.join(sdk_library_dir, 'libagora_rtm_sdk.so'))
33
34
  except OSError as e:
34
35
  logger.error(f"Error loading the library: {e}")
35
36
  logger.error(f"Attempted to load from: {lib_agora_rtm_path}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: agora_python_server_sdk
3
- Version: 2.3.3
3
+ Version: 2.3.4
4
4
  Summary: A Python SDK for Agora Server
5
5
  Home-page: https://github.com/AgoraIO-Extensions/Agora-Python-Server-SDK
6
6
  Classifier: Intended Audience :: Developers
@@ -2,6 +2,7 @@ MANIFEST.in
2
2
  README.md
3
3
  pyproject.toml
4
4
  setup.py
5
+ agora/__init__.py
5
6
  agora/rtc/__init__.py
6
7
  agora/rtc/agora_base.py
7
8
  agora/rtc/agora_parameter.py
@@ -107,12 +107,12 @@ class CustomInstallCommand(install):
107
107
 
108
108
  setup(
109
109
  name='agora_python_server_sdk',
110
- version='2.3.3',
110
+ version='2.3.4',
111
111
  description='A Python SDK for Agora Server',
112
112
  long_description=open('README.md').read(),
113
113
  long_description_content_type='text/markdown',
114
114
  url='https://github.com/AgoraIO-Extensions/Agora-Python-Server-SDK',
115
- packages=["agora.rtc", "agora.rtc._ctypes_handle", "agora.rtc._utils","agora.rtc.utils","agora.rtm","agora.rtm._ctypes_handle"],
115
+ packages=["agora", "agora.rtc", "agora.rtc._ctypes_handle", "agora.rtc._utils","agora.rtc.utils","agora.rtm","agora.rtm._ctypes_handle"],
116
116
  classifiers=[
117
117
  "Intended Audience :: Developers",
118
118
  'License :: OSI Approved :: MIT License',