warp-beacon 2.3.29__py3-none-any.whl → 2.3.31__py3-none-any.whl

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.
@@ -1,2 +1,2 @@
1
- __version__ = "2.3.29"
1
+ __version__ = "2.3.31"
2
2
 
@@ -85,8 +85,8 @@ class IGScheduler(object):
85
85
  now = datetime.datetime.now()
86
86
  if 4 <= now.hour < 7:
87
87
  logging.info("Scheduler is paused due to night hours (4:00 - 7:00)")
88
- self.event.wait(timeout=10800)
89
- continue
88
+ self.state["remaining"] = 10800
89
+ self.save_state()
90
90
 
91
91
  if self.state["remaining"] <= 0:
92
92
  self.state["remaining"] = randrange(8400, 26200)
@@ -170,6 +170,9 @@ class Bot(object):
170
170
  if is_group and not is_youtube and CaptionShortner.need_short(job.canonical_name):
171
171
  caption = f"{html.escape(CaptionShortner.smart_truncate_html(job.canonical_name))} ..."
172
172
  job.short_text = True
173
+ elif is_group:
174
+ # short enough
175
+ caption = html.escape(job.canonical_name)
173
176
  # Captions only for YouTube in groups; empty otherwise.
174
177
  # Might be too long for Telegram, so we skip them.
175
178
  if is_youtube and is_group:
@@ -1,15 +1,13 @@
1
1
  import os
2
- import threading
3
- import multiprocessing
4
- from warp_beacon.jobs.upload_job import UploadJob
5
2
  import logging
6
-
7
- import asyncio
8
-
9
3
  from typing import Callable
4
+ import asyncio
5
+ import threading
6
+ import multiprocessing
10
7
 
11
- from warp_beacon.storage import Storage
12
8
  from warp_beacon.jobs.types import JobType
9
+ from warp_beacon.jobs.upload_job import UploadJob
10
+ from warp_beacon.storage import Storage
13
11
 
14
12
  class AsyncUploader(object):
15
13
  __JOE_BIDEN_WAKEUP = None
@@ -40,10 +38,9 @@ class AsyncUploader(object):
40
38
  self.threads.append(thread)
41
39
 
42
40
  def add_callback(self, message_id: int, callback: Callable) -> None:
43
- def callback_wrap(*args, **kwargs) -> None:
44
- ret = callback(*args, **kwargs)
41
+ async def callback_wrap(*args, **kwargs) -> None:
42
+ await callback(*args, **kwargs)
45
43
  #self.remove_callback(message_id)
46
- return ret
47
44
  self.callbacks[message_id] = {"callback": callback_wrap}
48
45
 
49
46
  def remove_callback(self, message_id: int) -> None:
@@ -83,7 +80,11 @@ class AsyncUploader(object):
83
80
  if job is self.__JOE_BIDEN_WAKEUP:
84
81
  break
85
82
  if job.is_message_to_admin and job.message_text and self.admin_message_callback:
86
- asyncio.ensure_future(self.admin_message_callback(job.message_text, job.account_admins, job.yt_auth), loop=self.loop)
83
+ #asyncio.ensure_future(self.admin_message_callback(job.message_text, job.account_admins, job.yt_auth), loop=self.loop)
84
+ self.loop.call_soon_threadsafe(
85
+ asyncio.create_task,
86
+ self.admin_message_callback(job.message_text, job.account_admins, job.yt_auth)
87
+ )
87
88
  continue
88
89
 
89
90
  path = ""
@@ -106,20 +107,29 @@ class AsyncUploader(object):
106
107
  if job.job_failed:
107
108
  logging.info("URL '%s' download failed. Skipping upload job ...", job.url)
108
109
  if job.job_failed_msg: # we want to say something to user
109
- asyncio.ensure_future(self.callbacks[message_id]["callback"](job), loop=self.loop)
110
+ self.loop.call_soon_threadsafe(
111
+ asyncio.create_task,
112
+ self.callbacks[message_id]["callback"](job)
113
+ )
110
114
  self.process_done(uniq_id)
111
115
  self.remove_callback(message_id)
112
116
  continue
113
117
 
114
118
  if job.replay:
115
- asyncio.ensure_future(self.callbacks[message_id]["callback"](job), loop=self.loop)
119
+ self.loop.call_soon_threadsafe(
120
+ asyncio.create_task,
121
+ self.callbacks[message_id]["callback"](job)
122
+ )
116
123
  self.remove_callback(message_id)
117
124
  continue
118
125
 
119
126
  if job.job_warning:
120
127
  logging.info("Job warning occurred ...")
121
128
  if job.job_warning_msg:
122
- asyncio.ensure_future(self.callbacks[message_id]["callback"](job), loop=self.loop)
129
+ self.loop.call_soon_threadsafe(
130
+ asyncio.create_task,
131
+ self.callbacks[message_id]["callback"](job)
132
+ )
123
133
  continue
124
134
  if in_process:
125
135
  db_list_dicts = self.storage.db_lookup_id(uniq_id)
@@ -131,14 +141,22 @@ class AsyncUploader(object):
131
141
  job.media_type = JobType.COLLECTION
132
142
  elif dlds_len:
133
143
  job.tg_file_id = ",".join(tg_file_ids)
134
- job.media_type = JobType[db_list_dicts.pop()["media_type"].upper()]
135
- asyncio.ensure_future(self.callbacks[message_id]["callback"](job), loop=self.loop)
144
+ db_data = db_list_dicts.pop()
145
+ job.media_type = JobType[db_data["media_type"].upper()]
146
+ job.canonical_name = db_data.get("canonical_name", "")
147
+ self.loop.call_soon_threadsafe(
148
+ asyncio.create_task,
149
+ self.callbacks[message_id]["callback"](job)
150
+ )
136
151
  self.process_done(uniq_id)
137
152
  self.remove_callback(message_id)
138
153
  else:
139
154
  self.queue_task(job)
140
155
  else:
141
- asyncio.ensure_future(self.callbacks[message_id]["callback"](job), loop=self.loop)
156
+ self.loop.call_soon_threadsafe(
157
+ asyncio.create_task,
158
+ self.callbacks[message_id]["callback"](job)
159
+ )
142
160
  self.process_done(uniq_id)
143
161
  self.remove_callback(message_id)
144
162
  else:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: warp_beacon
3
- Version: 2.3.29
3
+ Version: 2.3.31
4
4
  Summary: Telegram bot for expanding external media links
5
5
  Home-page: https://github.com/sb0y/warp_beacon
6
6
  Author: Andrey Bagrintsev
@@ -4,7 +4,7 @@ var/warp_beacon/accounts.json,sha256=OsXdncs6h88xrF_AP6_WDCK1waGBn9SR-uYdIeK37GM
4
4
  var/warp_beacon/placeholder.gif,sha256=cE5CGJVaop4Sx21zx6j4AyoHU0ncmvQuS2o6hJfEH88,6064
5
5
  var/warp_beacon/proxies.json,sha256=VnjlQDXumOEq72ZFjbh6IqHS1TEHqn8HPYAZqWCeSIA,95
6
6
  warp_beacon/__init__.py,sha256=_rThNODmz0nDp_n4mWo_HKaNFE5jk1_7cRhHyYaencI,163
7
- warp_beacon/__version__.py,sha256=-QW5zAmOpUMiNxKC9uasXqo7vywFKRlp_1o42QGAO-I,24
7
+ warp_beacon/__version__.py,sha256=6WuiVqC37jmvlGi1GNaJkQDAVLgaOvkYIZwJr1WO5FM,24
8
8
  warp_beacon/warp_beacon.py,sha256=7KEtZDj-pdhtl6m-zFLsSojs1ZR4o7L0xbqtdmYPvfE,342
9
9
  warp_beacon/compress/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  warp_beacon/compress/video.py,sha256=_PDMVYCyzLYxHv1uZmmzGcG_8rjaZr7BTXsXTTy_oS4,2846
@@ -19,7 +19,7 @@ warp_beacon/mediainfo/audio.py,sha256=ous88kwQj4bDIChN5wnGil5LqTs0IQHH0d-nyrL0-Z
19
19
  warp_beacon/mediainfo/silencer.py,sha256=qxMuViOoVwUYb60uCVvqHiGrqByR1_4_rqMT-XdMkwc,1813
20
20
  warp_beacon/mediainfo/video.py,sha256=UBZrhTN5IDI-aYu6tsJEILo9nFkjHhkldGVFmvV7tEI,2480
21
21
  warp_beacon/scheduler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
- warp_beacon/scheduler/scheduler.py,sha256=gcV-e-9MjL8JEfu7T3Gy1imUrXz266ub9Ub4O27W5Hw,2786
22
+ warp_beacon/scheduler/scheduler.py,sha256=WFfV5flS4xtqNjalM95KW4jLMJ70PskRpP9e7cUQM2U,2796
23
23
  warp_beacon/scraper/__init__.py,sha256=V_C5SmAmRtjFfVBtTotOHCW3ILMQ8m_ulrBF6ry59_A,16944
24
24
  warp_beacon/scraper/abstract.py,sha256=6A6KuBUHZhu8VAyBwLgmnxMPHJcLpgwLapmULy8hpoA,2726
25
25
  warp_beacon/scraper/account_selector.py,sha256=zv5ci_Y7W-tzKeFklffpLts19a1wFg69fqefK-_i_pk,5122
@@ -36,15 +36,15 @@ warp_beacon/scraper/youtube/youtube.py,sha256=fGrbjBngvvNdpzhb1yZVedNW0_tCrLc31V
36
36
  warp_beacon/storage/__init__.py,sha256=0Vajd0oITKJfu2vmNx5uQSt3-L6vwIvUYWJo8HZCjco,3398
37
37
  warp_beacon/storage/mongo.py,sha256=qC4ZiO8XXvPnP0rJwz4CJx42pqFsyAjCiW10W5QdT6E,527
38
38
  warp_beacon/telegram/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
- warp_beacon/telegram/bot.py,sha256=rau3QoukQsp5MGb2X1QkUq00_Vv_gkjbIhgqfECgzaE,17040
39
+ warp_beacon/telegram/bot.py,sha256=T_5NUYFgPAuX6PVefYsdB_3ma3VHwSYhJnTZKNWEWY0,17123
40
40
  warp_beacon/telegram/caption_shortener.py,sha256=EnguNCF52ne7y4P-iJAbI6K3sqoJqJbND_dX5Fhwkv0,1549
41
41
  warp_beacon/telegram/handlers.py,sha256=XXIfdV_RCj7tyZMPXchuKmGoDdweOaR08ADDaBPWo_U,9426
42
42
  warp_beacon/telegram/placeholder_message.py,sha256=wN9-BRiyrtHG-EvXtZkGJHt2CX71munQ57ITttjt0mw,6400
43
43
  warp_beacon/telegram/utils.py,sha256=9uebX53G16mV7ER7WgfdWBLFHHw14S8HBt9URrIskg0,4440
44
- warp_beacon/uploader/__init__.py,sha256=5KRWsxPRGuQ56YhCEnJsXnb-yQp8dpvWEsPDf0dD-fw,4964
45
- warp_beacon-2.3.29.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
46
- warp_beacon-2.3.29.dist-info/METADATA,sha256=8XB7RwAZ5B2uNbFdyEmDqi85YftlA3cNBL9OCjyG04k,21723
47
- warp_beacon-2.3.29.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
48
- warp_beacon-2.3.29.dist-info/entry_points.txt,sha256=eSB61Rb89d56WY0O-vEIQwkn18J-4CMrJcLA_R_8h3g,119
49
- warp_beacon-2.3.29.dist-info/top_level.txt,sha256=2iKFlYwJ-meO9sCX4OGEP1hhQN17t2KFksQ5dXMhXUA,1103
50
- warp_beacon-2.3.29.dist-info/RECORD,,
44
+ warp_beacon/uploader/__init__.py,sha256=E9rlZIf7xlQz6MutMOwJ8S5Vm2uheR5nv23Kv8duRQg,5427
45
+ warp_beacon-2.3.31.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
46
+ warp_beacon-2.3.31.dist-info/METADATA,sha256=NJdQjwobTeXr3CfN4u7ojakyoLlIbPXXghSbVBHj3uc,21723
47
+ warp_beacon-2.3.31.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
48
+ warp_beacon-2.3.31.dist-info/entry_points.txt,sha256=eSB61Rb89d56WY0O-vEIQwkn18J-4CMrJcLA_R_8h3g,119
49
+ warp_beacon-2.3.31.dist-info/top_level.txt,sha256=2iKFlYwJ-meO9sCX4OGEP1hhQN17t2KFksQ5dXMhXUA,1103
50
+ warp_beacon-2.3.31.dist-info/RECORD,,