warp-beacon 2.6.13__tar.gz → 2.6.14__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 (62) hide show
  1. {warp_beacon-2.6.13/warp_beacon.egg-info → warp_beacon-2.6.14}/PKG-INFO +1 -1
  2. warp_beacon-2.6.14/warp_beacon/__version__.py +2 -0
  3. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/scheduler/instagram_human.py +20 -0
  4. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/scraper/__init__.py +3 -1
  5. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/scraper/instagram/instagram.py +2 -1
  6. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/scraper/youtube/abstract.py +3 -1
  7. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/uploader/__init__.py +6 -3
  8. {warp_beacon-2.6.13 → warp_beacon-2.6.14/warp_beacon.egg-info}/PKG-INFO +1 -1
  9. warp_beacon-2.6.13/warp_beacon/__version__.py +0 -2
  10. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/LICENSE +0 -0
  11. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/MANIFEST.in +0 -0
  12. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/README.md +0 -0
  13. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/assets/placeholder.gif +0 -0
  14. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/etc/.gitignore +0 -0
  15. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/etc/accounts.json +0 -0
  16. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/etc/proxies.json +0 -0
  17. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/etc/warp_beacon.conf +0 -0
  18. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/etc/warp_beacon.service +0 -0
  19. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/pyproject.toml +0 -0
  20. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/setup.cfg +0 -0
  21. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/setup.py +0 -0
  22. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/__init__.py +0 -0
  23. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/compress/__init__.py +0 -0
  24. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/compress/video.py +0 -0
  25. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/jobs/__init__.py +0 -0
  26. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/jobs/abstract.py +0 -0
  27. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/jobs/download_job.py +0 -0
  28. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/jobs/types.py +0 -0
  29. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/jobs/upload_job.py +0 -0
  30. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/mediainfo/__init__.py +0 -0
  31. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/mediainfo/abstract.py +0 -0
  32. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/mediainfo/audio.py +0 -0
  33. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/mediainfo/silencer.py +0 -0
  34. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/mediainfo/video.py +0 -0
  35. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/scheduler/__init__.py +0 -0
  36. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/scheduler/scheduler.py +0 -0
  37. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/scraper/abstract.py +0 -0
  38. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/scraper/account_selector.py +0 -0
  39. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/scraper/exceptions.py +0 -0
  40. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/scraper/fail_handler.py +0 -0
  41. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/scraper/instagram/__init__.py +0 -0
  42. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/scraper/instagram/captcha.py +0 -0
  43. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/scraper/link_resolver.py +0 -0
  44. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/scraper/youtube/__init__.py +0 -0
  45. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/scraper/youtube/music.py +0 -0
  46. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/scraper/youtube/shorts.py +0 -0
  47. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/scraper/youtube/youtube.py +0 -0
  48. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/storage/__init__.py +0 -0
  49. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/storage/mongo.py +0 -0
  50. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/telegram/__init__.py +0 -0
  51. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/telegram/bot.py +0 -0
  52. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/telegram/caption_shortener.py +0 -0
  53. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/telegram/handlers.py +0 -0
  54. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/telegram/placeholder_message.py +0 -0
  55. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/telegram/utils.py +0 -0
  56. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/warp_beacon.py +0 -0
  57. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon/yt_auth.py +0 -0
  58. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon.egg-info/SOURCES.txt +0 -0
  59. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon.egg-info/dependency_links.txt +0 -0
  60. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon.egg-info/entry_points.txt +0 -0
  61. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/warp_beacon.egg-info/requires.txt +0 -0
  62. {warp_beacon-2.6.13 → warp_beacon-2.6.14}/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.13
3
+ Version: 2.6.14
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.14"
2
+
@@ -10,9 +10,11 @@ from warp_beacon.scraper.instagram.instagram import InstagramScraper
10
10
  class InstagramHuman(object):
11
11
  scrapler = None
12
12
  default_profiles = ["nasa", "natgeo", "9gag", "spotify", "nba"]
13
+ operations_count = 0
13
14
 
14
15
  def __init__(self, scrapler: InstagramScraper) -> None:
15
16
  self.scrapler = scrapler
17
+ self.operations_count = 0
16
18
 
17
19
  def simulate_activity(self) -> None:
18
20
  now = datetime.now()
@@ -31,17 +33,21 @@ class InstagramHuman(object):
31
33
  try:
32
34
  logging.info("Starting morning activity simulation")
33
35
  self.scrapler.timeline_cursor = self.scrapler.download_hndlr(self.scrapler.cl.get_timeline_feed, "pull_to_refresh", self.scrapler.timeline_cursor.get("next_max_id"))
36
+ self.operations_count += 1
34
37
  time.sleep(random.uniform(3, 7))
35
38
  if random.random() > 0.5:
36
39
  logging.info("Checking direct ...")
37
40
  self.scrapler.download_hndlr(self.scrapler.cl.direct_active_presence)
41
+ self.operations_count += 1
38
42
  time.sleep(random.uniform(2, 5))
39
43
  if random.random() > 0.3:
40
44
  self.scrapler.download_hndlr(self.scrapler.cl.notification_like_and_comment_on_photo_user_tagged, "everyone")
45
+ self.operations_count += 1
41
46
  self.random_pause()
42
47
  if random.random() > 0.5:
43
48
  logging.info("Simulation updating reels tray feed ...")
44
49
  self.scrapler.download_hndlr(self.scrapler.cl.get_reels_tray_feed, "pull_to_refresh")
50
+ self.operations_count += 1
45
51
  self.random_pause()
46
52
  if random.random() > 0.8:
47
53
  self.profile_view()
@@ -53,9 +59,11 @@ class InstagramHuman(object):
53
59
  try:
54
60
  logging.info("Starting day fast check activity simulation")
55
61
  self.scrapler.download_hndlr(self.scrapler.cl.get_timeline_feed, "pull_to_refresh")
62
+ self.operations_count += 1
56
63
  time.sleep(random.uniform(2, 5))
57
64
  if random.random() > 0.5:
58
65
  self.scrapler.download_hndlr(self.scrapler.cl.get_reels_tray_feed, "pull_to_refresh")
66
+ self.operations_count += 1
59
67
  self.random_pause()
60
68
  except Exception as e:
61
69
  logging.warning("Error in daytime_routine")
@@ -65,19 +73,24 @@ class InstagramHuman(object):
65
73
  try:
66
74
  logging.info("Starting evening active user simulation")
67
75
  self.scrapler.download_hndlr(self.scrapler.cl.get_timeline_feed, "pull_to_refresh")
76
+ self.operations_count += 1
68
77
  time.sleep(random.uniform(2, 5))
69
78
  self.scrapler.download_hndlr(self.scrapler.cl.get_reels_tray_feed, "pull_to_refresh")
79
+ self.operations_count += 1
70
80
  time.sleep(random.uniform(2, 5))
71
81
  if random.random() > 0.5:
72
82
  self.scrapler.download_hndlr(self.scrapler.cl.direct_active_presence)
83
+ self.operations_count += 1
73
84
  time.sleep(random.uniform(2, 5))
74
85
  if random.random() > 0.5:
75
86
  logging.info("Checking notifications, tags ...")
76
87
  self.scrapler.download_hndlr(self.scrapler.cl.notification_like_and_comment_on_photo_user_tagged, "everyone")
88
+ self.operations_count += 1
77
89
  self.random_pause()
78
90
  if random.random() > 0.4:
79
91
  logging.info("Watching reels ...")
80
92
  self.scrapler.download_hndlr(self.scrapler.cl.reels)
93
+ self.operations_count += 1
81
94
  self.random_pause()
82
95
  if random.random() > 0.6:
83
96
  logging.info("Simulation profile view ...")
@@ -92,6 +105,7 @@ class InstagramHuman(object):
92
105
  logging.info("Starting night activity simulation")
93
106
  if random.random() > 0.7:
94
107
  self.scrapler.download_hndlr(self.scrapler.cl.direct_active_presence)
108
+ self.operations_count += 1
95
109
  self.random_pause(short=True)
96
110
  except Exception as e:
97
111
  logging.warning("Error in night_routine")
@@ -108,6 +122,7 @@ class InstagramHuman(object):
108
122
  my_user_id = self.scrapler.cl.user_id
109
123
  logging.info("user_following ...")
110
124
  friends = list(self.scrapler.download_hndlr(self.scrapler.cl.user_following, my_user_id, amount=random.randint(5, 50)).values())
125
+ self.operations_count += 1
111
126
  time.sleep(random.uniform(2, 5))
112
127
  if not friends:
113
128
  friends = self.default_profiles
@@ -119,27 +134,32 @@ class InstagramHuman(object):
119
134
  logging.info("user_info with target_user_id = '%s' ...", target_user_id)
120
135
  #self.scrapler.download_hndlr(self.scrapler.cl.user_info, target_user_id)
121
136
  self.scrapler.download_hndlr(self.scrapler.cl.user_info_v1, target_user_id)
137
+ self.operations_count += 1
122
138
  time.sleep(random.uniform(2, 5))
123
139
  elif isinstance(random_friend, str):
124
140
  target_user_id = self.scrapler.download_hndlr(self.scrapler.cl.user_id_from_username, random_friend)
125
141
  logging.info("user_info with target_user_id = '%s' ...", target_user_id)
126
142
  #self.scrapler.download_hndlr(self.scrapler.cl.user_info, target_user_id)
127
143
  self.scrapler.download_hndlr(self.scrapler.cl.user_info_v1, target_user_id)
144
+ self.operations_count += 1
128
145
  time.sleep(random.uniform(2, 5))
129
146
 
130
147
  if random.random() > 0.5:
131
148
  logging.info("Checking direct ...")
132
149
  self.scrapler.download_hndlr(self.scrapler.cl.direct_active_presence)
150
+ self.operations_count += 1
133
151
  self.random_pause()
134
152
 
135
153
  if random.random() > 0.3:
136
154
  logging.info("Checking notifications, tags ...")
137
155
  self.scrapler.download_hndlr(self.scrapler.cl.notification_like_and_comment_on_photo_user_tagged, "everyone")
156
+ self.operations_count += 1
138
157
  self.random_pause()
139
158
 
140
159
  if random.random() > 0.5:
141
160
  logging.info("user_medias with target_user_id = '%s' ...", target_user_id)
142
161
  self.scrapler.download_hndlr(self.scrapler.cl.user_medias_v1, target_user_id, amount=random.randint(1, 5))
162
+ self.operations_count += 1
143
163
  self.random_pause()
144
164
  except Exception as e:
145
165
  logging.warning("Error in profile view")
@@ -154,7 +154,9 @@ class AsyncDownloader(object):
154
154
  selector.reset_ig_request_count()
155
155
  selector.next()
156
156
  logging.info("Validating '%s' session ...", job.job_origin.value)
157
- actor.validate_session()
157
+ operations = actor.validate_session()
158
+ if job.job_origin is Origin.INSTAGRAM and operations:
159
+ selector.inc_ig_request_count(amount=operations)
158
160
  logging.info("Validation done")
159
161
  else:
160
162
  logging.info("Downloading URL '%s'", job.url)
@@ -102,12 +102,13 @@ class InstagramScraper(ScraperAbstract):
102
102
  self.cl.login(username=username, password=password, verification_code="")
103
103
  self.safe_write_session()
104
104
 
105
- def validate_session(self) -> None:
105
+ def validate_session(self) -> int:
106
106
  from warp_beacon.scheduler.instagram_human import InstagramHuman
107
107
  self.load_session()
108
108
  inst_human = InstagramHuman(self)
109
109
  inst_human.simulate_activity()
110
110
  self.safe_write_session()
111
+ return inst_human.operations_count
111
112
 
112
113
  def scrap(self, url: str) -> tuple[str]:
113
114
  self.load_session()
@@ -34,7 +34,7 @@ class YoutubeAbstract(ScraperAbstract):
34
34
  DOWNLOAD_DIR = "/tmp"
35
35
  YT_SESSION_FILE = '/var/warp_beacon/yt_session_%d.json'
36
36
 
37
- def validate_session(self) -> None:
37
+ def validate_session(self) -> int:
38
38
  try:
39
39
  logging.info("Validating YT session(s) ...")
40
40
  session_dir = os.path.dirname(self.YT_SESSION_FILE)
@@ -59,6 +59,8 @@ class YoutubeAbstract(ScraperAbstract):
59
59
  logging.error("Failed to refresh Youtube session!")
60
60
  logging.exception(e)
61
61
 
62
+ return 0
63
+
62
64
  def rename_local_file(self, filename: str) -> str:
63
65
  if not os.path.exists(filename):
64
66
  raise NameError("No file provided")
@@ -11,12 +11,12 @@ from warp_beacon.storage import Storage
11
11
 
12
12
  class AsyncUploader(object):
13
13
  __JOE_BIDEN_WAKEUP = None
14
- threads = []
14
+ threads = None
15
15
  allow_loop = True
16
16
  job_queue = None
17
- callbacks = {}
17
+ callbacks = None
18
18
  storage = None
19
- in_process = set()
19
+ in_process = None
20
20
  loop = None
21
21
  admin_message_callback = None
22
22
  request_yt_auth_callback = None
@@ -29,6 +29,9 @@ class AsyncUploader(object):
29
29
  request_yt_auth_callback: Callable,
30
30
  pool_size: int=min(32, os.cpu_count() + 4)
31
31
  ) -> None:
32
+ self.threads = []
33
+ self.callbacks = {}
34
+ self.in_process = set()
32
35
  self.storage = storage
33
36
  self.loop = loop
34
37
  self.job_queue = multiprocessing.Queue()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: warp_beacon
3
- Version: 2.6.13
3
+ Version: 2.6.14
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.13"
2
-
File without changes
File without changes
File without changes
File without changes
File without changes