pyrocalls 2.2.8__tar.gz → 2.2.9__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 (131) hide show
  1. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/PKG-INFO +1 -1
  2. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pyrocalls.egg-info/PKG-INFO +1 -1
  3. pyrocalls-2.2.9/pytgcalls/__version__.py +1 -0
  4. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/stream/media_stream.py +48 -23
  5. pyrocalls-2.2.8/pytgcalls/__version__.py +0 -1
  6. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/LICENSE +0 -0
  7. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/README.md +0 -0
  8. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pyproject.toml +0 -0
  9. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pyrocalls.egg-info/SOURCES.txt +0 -0
  10. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pyrocalls.egg-info/dependency_links.txt +0 -0
  11. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pyrocalls.egg-info/not-zip-safe +0 -0
  12. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pyrocalls.egg-info/requires.txt +0 -0
  13. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pyrocalls.egg-info/top_level.txt +0 -0
  14. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/__init__.py +0 -0
  15. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/chat_lock.py +0 -0
  16. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/custom_api/__init__.py +0 -0
  17. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/custom_api/custom_api.py +0 -0
  18. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/environment.py +0 -0
  19. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/exceptions.py +0 -0
  20. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/ffmpeg.py +0 -0
  21. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/filters.py +0 -0
  22. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/handlers/__init__.py +0 -0
  23. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/handlers/handlers_holder.py +0 -0
  24. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/list_to_cmd.py +0 -0
  25. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/media_devices/__init__.py +0 -0
  26. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/media_devices/device_info.py +0 -0
  27. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/media_devices/input_device.py +0 -0
  28. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/media_devices/media_devices.py +0 -0
  29. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/media_devices/screen_device.py +0 -0
  30. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/media_devices/speaker_device.py +0 -0
  31. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/__init__.py +0 -0
  32. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/calls/__init__.py +0 -0
  33. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/calls/change_volume_call.py +0 -0
  34. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/calls/get_participants.py +0 -0
  35. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/calls/leave_call.py +0 -0
  36. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/decorators/__init__.py +0 -0
  37. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/decorators/on_update.py +0 -0
  38. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/internal/__init__.py +0 -0
  39. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/internal/clear_cache.py +0 -0
  40. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/internal/clear_call.py +0 -0
  41. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/internal/connect_call.py +0 -0
  42. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/internal/emit_sig_data.py +0 -0
  43. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/internal/handle_connection_changed.py +0 -0
  44. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/internal/handle_mtproto_updates.py +0 -0
  45. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/internal/handle_stream_ended.py +0 -0
  46. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/internal/handle_stream_frame.py +0 -0
  47. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/internal/join_presentation.py +0 -0
  48. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/internal/log_retries.py +0 -0
  49. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/internal/request_broadcast_part.py +0 -0
  50. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/internal/request_broadcast_timestamp.py +0 -0
  51. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/internal/switch_connection.py +0 -0
  52. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/internal/update_sources.py +0 -0
  53. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/internal/update_status.py +0 -0
  54. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/stream/__init__.py +0 -0
  55. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/stream/mute.py +0 -0
  56. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/stream/pause.py +0 -0
  57. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/stream/play.py +0 -0
  58. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/stream/record.py +0 -0
  59. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/stream/resume.py +0 -0
  60. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/stream/send_frame.py +0 -0
  61. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/stream/time.py +0 -0
  62. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/stream/unmute.py +0 -0
  63. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/utilities/__init__.py +0 -0
  64. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/utilities/cache_peer.py +0 -0
  65. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/utilities/call_holder.py +0 -0
  66. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/utilities/compose.py +0 -0
  67. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/utilities/cpu_usage.py +0 -0
  68. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/utilities/idle.py +0 -0
  69. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/utilities/ping.py +0 -0
  70. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/utilities/resolve_chat_id.py +0 -0
  71. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/utilities/run.py +0 -0
  72. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/utilities/start.py +0 -0
  73. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/methods/utilities/stream_params.py +0 -0
  74. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/mtproto/__init__.py +0 -0
  75. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/mtproto/bridged_client.py +0 -0
  76. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/mtproto/client_cache.py +0 -0
  77. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/mtproto/hydrogram_client.py +0 -0
  78. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/mtproto/mtproto_client.py +0 -0
  79. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/mtproto/pyrogram_client.py +0 -0
  80. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/mtproto/telethon_client.py +0 -0
  81. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/mtproto_required.py +0 -0
  82. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/mutex.py +0 -0
  83. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/pytgcalls.py +0 -0
  84. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/pytgcalls_session.py +0 -0
  85. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/scaffold.py +0 -0
  86. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/statictypes.py +0 -0
  87. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/sync.py +0 -0
  88. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/__init__.py +0 -0
  89. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/browsers.py +0 -0
  90. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/cache.py +0 -0
  91. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/calls/__init__.py +0 -0
  92. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/calls/call.py +0 -0
  93. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/calls/call_config.py +0 -0
  94. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/calls/call_data.py +0 -0
  95. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/calls/call_protocol.py +0 -0
  96. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/calls/call_sources.py +0 -0
  97. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/calls/group_call_config.py +0 -0
  98. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/calls/pending_connection.py +0 -0
  99. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/calls/raw_call_update.py +0 -0
  100. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/chats/__init__.py +0 -0
  101. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/chats/chat_update.py +0 -0
  102. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/chats/group_call_participant.py +0 -0
  103. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/chats/updated_group_call_participant.py +0 -0
  104. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/dict.py +0 -0
  105. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/flag.py +0 -0
  106. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/list.py +0 -0
  107. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/participant_list.py +0 -0
  108. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/py_object.py +0 -0
  109. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/raw/__init__.py +0 -0
  110. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/raw/audio_parameters.py +0 -0
  111. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/raw/audio_stream.py +0 -0
  112. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/raw/stream.py +0 -0
  113. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/raw/video_parameters.py +0 -0
  114. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/raw/video_stream.py +0 -0
  115. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/stream/__init__.py +0 -0
  116. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/stream/audio_quality.py +0 -0
  117. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/stream/device.py +0 -0
  118. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/stream/direction.py +0 -0
  119. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/stream/external_media.py +0 -0
  120. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/stream/frame.py +0 -0
  121. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/stream/record_stream.py +0 -0
  122. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/stream/stream_ended.py +0 -0
  123. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/stream/stream_frames.py +0 -0
  124. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/stream/video_quality.py +0 -0
  125. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/update.py +0 -0
  126. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/types/user_agent.py +0 -0
  127. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/version_manager.py +0 -0
  128. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/wait_counter_lock.py +0 -0
  129. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/pytgcalls/ytdlp.py +0 -0
  130. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/setup.cfg +0 -0
  131. {pyrocalls-2.2.8 → pyrocalls-2.2.9}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyrocalls
3
- Version: 2.2.8
3
+ Version: 2.2.9
4
4
  Summary: Async client API for the Telegram Calls.
5
5
  Author-email: Laky-64 <iraci.matteo@gmail.com>
6
6
  Project-URL: Homepage, https://pytgcalls.github.io/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyrocalls
3
- Version: 2.2.8
3
+ Version: 2.2.9
4
4
  Summary: Async client API for the Telegram Calls.
5
5
  Author-email: Laky-64 <iraci.matteo@gmail.com>
6
6
  Project-URL: Homepage, https://pytgcalls.github.io/
@@ -0,0 +1 @@
1
+ __version__ = '2.2.9'
@@ -1,3 +1,4 @@
1
+ import os
1
2
  import logging
2
3
  from enum import auto
3
4
  from pathlib import Path
@@ -200,37 +201,61 @@ class MediaStream(Stream):
200
201
  # 🔥 FAST PATH: local file + audio → NO CHECKS
201
202
  # =========================================================
202
203
  async def check_stream(self):
203
- import os
204
204
 
205
- # ✅ local file detected → direct audio pipe
206
- if (
207
- self._media_path
208
- and os.path.exists(self._media_path)
209
- and not (self._audio_flags & MediaStream.Flags.IGNORE)
210
- ):
211
- self._audio_path = self._audio_path or self._media_path
205
+ # =====================================================
206
+ # ⚡ FAST PATH: LOCAL FILE (AUDIO + VIDEO BOTH)
207
+ # =====================================================
208
+ if self._media_path and os.path.exists(self._media_path):
212
209
 
213
- if self.microphone:
214
- self.microphone.path = list_to_cmd(
215
- build_command(
216
- 'ffmpeg',
217
- self._ffmpeg_parameters,
218
- self._audio_path,
219
- self._audio_parameters,
220
- [],
221
- self._headers,
222
- True,
223
- ),
224
- )
210
+ # ---------------- AUDIO ----------------
211
+ if not (self._audio_flags & MediaStream.Flags.IGNORE):
212
+ self._audio_path = self._audio_path or self._media_path
225
213
 
226
- # ❌ video completely skip
227
- self.camera = None
214
+ if self.microphone:
215
+ self.microphone.path = list_to_cmd(
216
+ build_command(
217
+ 'ffmpeg',
218
+ self._ffmpeg_parameters,
219
+ self._audio_path,
220
+ self._audio_parameters,
221
+ [],
222
+ self._headers,
223
+ True, # treat as live / growing file
224
+ ),
225
+ )
226
+ else:
227
+ self.microphone = None
228
+
229
+ # ---------------- VIDEO ----------------
230
+ if not (self._video_flags & MediaStream.Flags.IGNORE):
231
+ video_ext = ('.mp4', '.mkv', '.webm', '.mov', '.avi')
232
+ is_video_file = self._media_path.lower().endswith(video_ext)
233
+
234
+ if is_video_file and self.camera:
235
+ self.camera.path = list_to_cmd(
236
+ build_command(
237
+ 'ffmpeg',
238
+ self._ffmpeg_parameters,
239
+ self._media_path,
240
+ self._video_parameters,
241
+ [],
242
+ self._headers,
243
+ True, # treat as live / growing file
244
+ ),
245
+ )
246
+ else:
247
+ self.camera = None
248
+ else:
249
+ self.camera = None
250
+
251
+ # Local file (audio OR video) fully handled here
228
252
  return
229
253
 
254
+
230
255
  # =====================================================
231
256
  # ⬇️ ORIGINAL pytgcalls LOGIC (UNCHANGED)
232
257
  # =====================================================
233
-
258
+
234
259
  if not self._video_flags & MediaStream.Flags.IGNORE and \
235
260
  not self._is_video_external:
236
261
  if self._is_media_device:
@@ -1 +0,0 @@
1
- __version__ = '2.2.8'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes