warp-beacon 2.6.83__tar.gz → 2.6.85__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 (69) hide show
  1. {warp_beacon-2.6.83/warp_beacon.egg-info → warp_beacon-2.6.85}/PKG-INFO +1 -1
  2. warp_beacon-2.6.85/warp_beacon/__version__.py +2 -0
  3. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/scheduler/scheduler.py +7 -8
  4. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/scraper/instagram/instagram.py +1 -1
  5. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/scraper/instagram/wb_instagrapi.py +16 -4
  6. {warp_beacon-2.6.83 → warp_beacon-2.6.85/warp_beacon.egg-info}/PKG-INFO +1 -1
  7. warp_beacon-2.6.83/warp_beacon/__version__.py +0 -2
  8. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/LICENSE +0 -0
  9. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/MANIFEST.in +0 -0
  10. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/README.md +0 -0
  11. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/assets/placeholder.gif +0 -0
  12. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/etc/.gitignore +0 -0
  13. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/etc/accounts.json +0 -0
  14. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/etc/proxies.json +0 -0
  15. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/etc/warp_beacon.conf +0 -0
  16. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/etc/warp_beacon.service +0 -0
  17. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/pyproject.toml +0 -0
  18. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/setup.cfg +0 -0
  19. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/setup.py +0 -0
  20. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/__init__.py +0 -0
  21. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/compress/__init__.py +0 -0
  22. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/compress/video.py +0 -0
  23. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/jobs/__init__.py +0 -0
  24. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/jobs/abstract.py +0 -0
  25. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/jobs/download_job.py +0 -0
  26. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/jobs/types.py +0 -0
  27. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/jobs/upload_job.py +0 -0
  28. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/mediainfo/__init__.py +0 -0
  29. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/mediainfo/abstract.py +0 -0
  30. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/mediainfo/audio.py +0 -0
  31. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/mediainfo/silencer.py +0 -0
  32. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/mediainfo/video.py +0 -0
  33. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/scheduler/__init__.py +0 -0
  34. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/scheduler/instagram_human.py +0 -0
  35. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/scraper/__init__.py +0 -0
  36. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/scraper/abstract.py +0 -0
  37. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/scraper/account_selector.py +0 -0
  38. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/scraper/exceptions.py +0 -0
  39. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/scraper/fail_handler.py +0 -0
  40. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/scraper/instagram/__init__.py +0 -0
  41. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/scraper/instagram/captcha.py +0 -0
  42. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/scraper/link_resolver.py +0 -0
  43. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/scraper/utils.py +0 -0
  44. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/scraper/youtube/__init__.py +0 -0
  45. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/scraper/youtube/abstract.py +0 -0
  46. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/scraper/youtube/music.py +0 -0
  47. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/scraper/youtube/shorts.py +0 -0
  48. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/scraper/youtube/youtube.py +0 -0
  49. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/storage/__init__.py +0 -0
  50. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/storage/mongo.py +0 -0
  51. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/telegram/__init__.py +0 -0
  52. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/telegram/bot.py +0 -0
  53. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/telegram/caption_shortener.py +0 -0
  54. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/telegram/download_status.py +0 -0
  55. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/telegram/edit_message.py +0 -0
  56. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/telegram/handlers.py +0 -0
  57. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/telegram/placeholder_message.py +0 -0
  58. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/telegram/progress_bar.py +0 -0
  59. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/telegram/progress_file_reader.py +0 -0
  60. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/telegram/types.py +0 -0
  61. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/telegram/utils.py +0 -0
  62. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/uploader/__init__.py +0 -0
  63. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/warp_beacon.py +0 -0
  64. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon/yt_auth.py +0 -0
  65. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon.egg-info/SOURCES.txt +0 -0
  66. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon.egg-info/dependency_links.txt +0 -0
  67. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon.egg-info/entry_points.txt +0 -0
  68. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon.egg-info/requires.txt +0 -0
  69. {warp_beacon-2.6.83 → warp_beacon-2.6.85}/warp_beacon.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: warp_beacon
3
- Version: 2.6.83
3
+ Version: 2.6.85
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
@@ -0,0 +1,2 @@
1
+ __version__ = "2.6.85"
2
+
@@ -13,13 +13,13 @@ import warp_beacon
13
13
  class IGScheduler(object):
14
14
  state_file = "/var/warp_beacon/scheduler_state.json"
15
15
  yt_sessions_dir = "/var/warp_beacon"
16
- downloader = None
17
- running = True
18
- thread = None
19
- event = None
20
- state = {"remaining": randrange(8400, 26200), "yt_sess_exp": []}
21
16
 
22
17
  def __init__(self, downloader: warp_beacon.scraper.AsyncDownloader) -> None:
18
+ self.downloader = None
19
+ self.running = True
20
+ self.thread = None
21
+ self.event = None
22
+ self.state = {"remaining": randrange(8400, 26200), "yt_sess_exp": []}
23
23
  self.downloader = downloader
24
24
  self.event = threading.Event()
25
25
  self.handle_time_planning()
@@ -37,9 +37,7 @@ class IGScheduler(object):
37
37
 
38
38
  def load_yt_sessions(self) -> None:
39
39
  try:
40
- # old versions migration
41
- if not "yt_sess_exp" in self.state:
42
- self.state["yt_sess_exp"] = []
40
+ self.state["yt_sess_exp"] = []
43
41
 
44
42
  for f in os.listdir(self.yt_sessions_dir):
45
43
  if f.startswith("yt_session") and f.endswith(".json"):
@@ -134,6 +132,7 @@ class IGScheduler(object):
134
132
  self.load_state()
135
133
  while self.running:
136
134
  try:
135
+ self.load_yt_sessions()
137
136
  yt_expires = self.yt_nearest_expire()
138
137
  ig_sched = self.state["remaining"]
139
138
  min_val = min(yt_expires, ig_sched)
@@ -341,7 +341,7 @@ class InstagramScraper(ScraperAbstract):
341
341
  #})
342
342
  media_info = self.download_hndlr(self.cl.media_info_v1, media_id)
343
343
  logging.info("media_type is '%d', product_type is '%s'", media_info.media_type, media_info.product_type)
344
- if media_info.media_type == 2 and media_info.product_type == "clips": # Reels
344
+ if media_info.media_type == 2 and media_info.product_type in ("clips", "ad"): # Reels
345
345
  res.append(self.download_video(url=media_info.video_url, media_info=media_info))
346
346
  elif media_info.media_type == 1: # Photo
347
347
  res.append(self.download_photo(url=media_info.thumbnail_url, media_info=media_info))
@@ -43,7 +43,19 @@ class WBClient(Client):
43
43
  raise TypeError("Progress callback must be callable")
44
44
  self.progress_callback = callback
45
45
 
46
+ def adaptive_chunk_size(self, content_length: int) -> int:
47
+ if content_length < 100_000:
48
+ return 2048
49
+ elif content_length < 5_000_000:
50
+ return 8192
51
+ elif content_length < 100_000_000:
52
+ return 32768
53
+ else:
54
+ return 65536
55
+
46
56
  def sanitize_instagram_url(self, url: str) -> str:
57
+ if "oh=" in url: # signed url, do not touch
58
+ return url
47
59
  parsed = urlparse(url)
48
60
  query = parse_qs(parsed.query)
49
61
  filtered_query = {k: v for k, v in query.items() if k in self.essential_params}
@@ -51,7 +63,7 @@ class WBClient(Client):
51
63
  return urlunparse(parsed._replace(query=new_query))
52
64
 
53
65
  def video_download_by_url(self, url: str, filename: str = "", folder: Path = "") -> Path:
54
- #url = self.sanitize_instagram_url(url)
66
+ url = self.sanitize_instagram_url(url)
55
67
  fname = urlparse(url).path.rsplit("/", 1)[1]
56
68
  filename = f"{filename}.{fname.rsplit('.', 1)[1]}" if filename else fname
57
69
  path = Path(folder or Path.cwd()) / filename
@@ -78,7 +90,7 @@ class WBClient(Client):
78
90
 
79
91
  downloaded = 0
80
92
  with open(path, "wb") as f:
81
- for chunk in response.iter_content(chunk_size=8192):
93
+ for chunk in response.iter_content(chunk_size=self.adaptive_chunk_size(content_length)):
82
94
  if chunk:
83
95
  f.write(chunk)
84
96
  downloaded += len(chunk)
@@ -103,7 +115,7 @@ class WBClient(Client):
103
115
  def photo_download_by_url(
104
116
  self, url: str, filename: str = "", folder: Path = ""
105
117
  ) -> Path:
106
- #url = self.sanitize_instagram_url(url)
118
+ url = self.sanitize_instagram_url(url)
107
119
  fname = urlparse(url).path.rsplit("/", 1)[1]
108
120
  filename = f"{filename}.{(filename, fname.rsplit('.', 1)[1]) if filename else fname}"
109
121
  path = Path(folder) / filename
@@ -136,7 +148,7 @@ class WBClient(Client):
136
148
  downloaded = 0
137
149
  with open(path, "wb") as f:
138
150
  response.raw.decode_content = True
139
- for chunk in response.iter_content(chunk_size=4096):
151
+ for chunk in response.iter_content(chunk_size=self.adaptive_chunk_size(content_length)):
140
152
  if chunk:
141
153
  f.write(chunk)
142
154
  downloaded += len(chunk)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: warp_beacon
3
- Version: 2.6.83
3
+ Version: 2.6.85
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
@@ -1,2 +0,0 @@
1
- __version__ = "2.6.83"
2
-
File without changes
File without changes
File without changes
File without changes
File without changes