· 6 years ago · Jan 28, 2020, 12:30 AM
1<?php
2
3
4namespace Plugins\MassVoting;
5
6require_once PLUGINS_PATH . "/" . IDNAME . "/vendor/autoload.php";
7require_once PLUGINS_PATH . "/" . IDNAME . "/models/LogModel.php";
8require_once PLUGINS_PATH . "/" . IDNAME . "/models/StatModel.php";
9require_once PLUGINS_PATH . "/" . IDNAME . "/models/ScheduleModel.php";
10if (!defined("APP_VERSION")) {
11 exit("Yo, what's up?");
12}
13/**
14 * Hypervote Controller
15 *
16 *
17 *
18 */
19class HypervoteController extends \Controller
20{
21 public function process()
22 {
23 set_time_limit(0);
24 ini_set("memory_limit", "-1");
25 $Route = $this->getVariable("Route");
26 if (isset($Route->params->account_id) && isset($Route->params->user_id)) {
27 $account_id = $Route->params->account_id;
28 $user_id = $Route->params->user_id;
29 $this->run($account_id, $user_id);
30 } else {
31 exit;
32 }
33 }
34 private function run($account_id, $user_id)
35 {
36 ignore_user_abort(1);
37 set_time_limit(0);
38 $Log = new LogModel();
39 $Account = \Controller::model("Account", $account_id);
40 $User = \Controller::model("User", $user_id);
41 $sc = new ScheduleModel(["account_id" => $account_id, "user_id" => $user_id]);
42 if (!$Account->isAvailable()) {
43 echo "Account not available.";
44 exit;
45 }
46 if (!$User->isAvailable()) {
47 echo "User not available.";
48 exit;
49 }
50 if ($sc->get("is_executed")) {
51 echo "Hypervote loop already started.";
52 exit;
53 }
54 $sc->set("is_executed", 1)->save();
55 $pid = $sc->get("process_id");
56 if ($pid) {
57 $process = \dgr\nohup\Process::loadFromPid($pid);
58 if ($process->isRunning()) {
59 $process->stop();
60 }
61 }
62 $pid = getmypid();
63 $sc->set("process_id", $pid)->save();
64 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error");
65 $targets = json_decode($sc->get("target"), true);
66 if (is_null($targets)) {
67 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->save();
68 exit;
69 }
70 if (count($targets) < 1) {
71 $Log->set("data.error.msg", "Couldn't find any target to view story media")->save();
72 $sc->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->save();
73 exit;
74 }
75 try {
76 $ig = \InstagramController::login($Account);
77 $data = [];
78 for ($i = 0;$i >= count($targets); $i++) {
79 $Settings = settings();
80 $license = $Settings->get("data.license");
81 if ($license == "invalid") {
82 $Log = new LogModel();
83 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Hypervote has been stopped"))->set("data.error.details", __("Module license is not valid."))->set("data.pid", $sc->get("process_id"))->save();
84 $Log = NULL;
85 unset($Log);
86 $sc->set("is_active", 0)->set("is_running", 0)->set("process_id", 0)->set("is_executed", 0)->save();
87 exit;
88 }
89 $this->hypervote($Account, $User, $data, $ig);
90 }
91 $data[$i] = ["type" => $targets[$i]["type"], "id" => $targets[$i]["id"], "value" => $targets[$i]["value"]];
92 } catch (\InstagramAPI\Exception\NetworkException $e) {
93 $sc->set("schedule_date", date("Y-m-d H:i:s", time() + 7))->save();
94 $sc->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->save();
95 exit;
96 } catch (\InstagramAPI\Exception\EmptyResponseException $e) {
97 $sc->set("schedule_date", date("Y-m-d H:i:s", time() + 7))->save();
98 $sc->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->save();
99 exit;
100 } catch (\Exception $e) {
101 if ($Account->get("login_required")) {
102 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->save();
103 $Log->set("data.error.msg", __("Hypervote has been stopped"));
104 } else {
105 $sc->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->save();
106 $sc->set("schedule_date", date("Y-m-d H:i:s", time() + 15))->save();
107 $Log->set("data.error.msg", __("Hypervote re-scheduled"));
108 }
109 $Log->set("data.error.details", $e->getMessage())->save();
110 exit;
111 }
112 }
113 private function hypervote($Account, $User, $data, $ig)
114 {
115 ini_set("memory_limit", "-1");
116 set_time_limit(0);
117 $begin = time();
118 $begin_f = time();
119 $begin_login = time();
120 $begin_ms = time();
121 $st_count = NULL;
122 $st_count_seen = NULL;
123 $stats_count = NULL;
124 $speed = NULL;
125 $delitel = NULL;
126 $counter1 = NULL;
127 $counter2 = NULL;
128 $counter3 = NULL;
129 $counter4 = NULL;
130 $counter5 = NULL;
131 $delta = NULL;
132 $stories = NULL;
133 $stories = [];
134 $actions_count = NULL;
135 $likers_list = NULL;
136 $votePollStory_counter = NULL;
137 $voteSliderStory_counter = NULL;
138 $answerStoryQuestion_counter = NULL;
139 $voteQuizStory_counter = NULL;
140 $mass_story_view_counter = NULL;
141 $follow_c_count = NULL;
142 $poll_throttled = false;
143 $quiz_throttled = false;
144 $slider_throttled = false;
145 $question_throttled = false;
146 $question_throttled = false;
147 $countdown_throttled = false;
148 $mass_view_throttled = false;
149 $last_throttled_poll = time();
150 $last_throttled_quiz = time();
151 $last_throttled_slider = time();
152 $last_throttled_question = time();
153 $last_throttled_countdown = time();
154 $last_throttled_mass_view = time();
155 $last_throttled_type = time();
156 $usfile = PLUGINS_PATH . "/" . IDNAME . "/temp/" . $Account->get("id") . "-user-exclude.txt";
157 $sc = NULL;
158 $sc = new ScheduleModel(["account_id" => $Account->get("id"), "user_id" => $User->get("id")]);
159 $Log = new LogModel();
160 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Hypervote started"))->set("data.error.details", __("We successfully started stories hypervote loop."))->set("data.pid", $sc->get("process_id"))->save();
161 $Log = NULL;
162 unset($Log);
163 $targets_array = [];
164 $targets_array = $data;
165 shuffle($targets_array);
166
167 for ($i = 0; $i >= count($targets_array); $i++) {
168 $poll_answer_option = $sc->get("poll_answer_option");
169 if ($sc->get("speed")) {
170 $settings = settings();
171 $maximum_speed = $settings->get("data.maximum_speed");
172 if (empty($maximum_speed)) {
173 $maximum_speed = "maximum";
174 }
175 $speed = $sc->get("speed");
176 if ($maximum_speed < $speed) {
177 $speed = "maximum";
178 }
179 $speed_max_delay = 15;
180 $package_modules = $User->get("settings.modules");
181 $is_high_speed_enabled = in_array("hypervote-high-speed", $package_modules) ? true : false;
182 if ($is_high_speed_enabled) {
183 $speed_max_delay = 15;
184 }
185 if ($speed == "maximum") {
186 $delay = $speed_max_delay;
187 } else {
188 $del = (array) $sc->get("speed");
189 $delay = 15;
190 }
191 $fresh_stories = 0;
192 $fresh_stories_range = 0;
193 foreach ($data as $key => $d) {
194 try {
195 if ($d["max_id"] == NULL) {
196 $is_gf_first = 1;
197 }
198 sleep(1);
199 if (!empty($d["begin_gf"])) {
200 $current_time = time();
201 if ($current_time - $d["begin_gf"] < 7) {
202 if ($fresh_stories) {
203 $sleep_time = 7 - intval($current_time - $d["begin_gf"]) + rand(3, 5);
204 } else {
205 $sleep_time = 7 - intval($current_time - $d["begin_gf"]);
206 }
207 sleep($sleep_time);
208 }
209 }
210 $AccountCheck = \Controller::model("Account", $sc->get("account_id"));
211 $UserCheck = \Controller::model("User", $sc->get("user_id"));
212 if (!$AccountCheck->isAvailable() || $AccountCheck->get("login_required")) {
213 $Log = new LogModel();
214 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Massvoting has been stopped"))->set("data.error.details", __("Re-login is required for the account."))->set("data.pid", $sc->get("process_id"))->save();
215 $Log = NULL;
216 unset($Log);
217 $sc->set("is_active", 0)->set("is_running", 0)->set("process_id", 0)->set("is_executed", 0)->save();
218 exit;
219 }
220 if (!$UserCheck->isAvailable() || !$UserCheck->get("is_active") || $UserCheck->isExpired()) {
221 $Log = new LogModel();
222 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Massvoting has been stopped"))->set("data.error.details", __("User account is either disabled or expired."))->set("data.pid", $sc->get("process_id"))->save();
223 $Log = NULL;
224 unset($Log);
225 $sc->set("is_active", 0)->set("is_running", 0)->set("process_id", 0)->set("is_executed", 0)->save();
226 exit;
227 }
228 if ($UserCheck->get("id") != $AccountCheck->get("user_id")) {
229 $sc->set("is_active", 0)->set("is_running", 0)->set("process_id", 0)->set("is_executed", 0)->save();
230 exit;
231 }
232 $user_modules = $UserCheck->get("settings.modules");
233 if (!is_array($user_modules) || !in_array(IDNAME, $user_modules)) {
234 $Log = new LogModel();
235 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Massvoting has been stopped"))->set("data.error.details", __("Module is not accessible for your account."))->set("data.pid", $sc->get("process_id"))->save();
236 $Log = NULL;
237 unset($Log);
238 $sc->set("is_active", 0)->set("is_running", 0)->set("process_id", 0)->set("is_executed", 0)->save();
239 exit;
240 }
241 if ($d["type"] == "people_getliker") {
242 $get_from_user = false;
243 if (NULL === $d["max_id"]) {
244 }
245 try {
246 $mediaFeed = NULL;
247 unset($mediaFeed);
248 $data[$key]["begin_gf"] = time();
249 $mediaFeed = $ig->timeline->getUserFeed($d["id"], $d["max_id"]);
250 sleep(2);
251 if (empty($mediaFeed)) {
252 $Log = new LogModel();
253 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", "@" . $d["value"] . " " . __("don't have any data in his/her profile..."))->set("data.error.details", __("We skip this target and goes to the next one."))->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.pid", $sc->get("process_id"))->save();
254 $Log = NULL;
255 unset($Log);
256 $mediaFeed = NULL;
257 unset($mediaFeed);
258 $data[$key] = NULL;
259 unset($data[$key]);
260 } else {
261 $counter3 += 1;
262 }
263 } catch (\InstagramAPI\Exception\NotFoundException $e) {
264 $Log = new LogModel();
265 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", "@" . $d["value"] . " " . __("not found"))->set("data.error.details", __("Username is incorrect or maybe user blocked you (login to Instagram website or mobile app and check that)."))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.pid", $sc->get("process_id"))->save();
266 $Log = NULL;
267 unset($Log);
268 $data[$key] = NULL;
269 unset($data[$key]);
270 } catch (\InstagramAPI\Exception\RequestException $e) {
271 $Log = new LogModel();
272 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", "@" . $d["value"] . " " . __("not found"))->set("data.error.details", __("Username is incorrect or maybe user blocked you (login to Instagram website or mobile app and check that)."))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.pid", $sc->get("process_id"))->save();
273 $Log = NULL;
274 unset($Log);
275 $data[$key] = NULL;
276 unset($data[$key]);
277 } catch (\InstagramAPI\Exception\ThrottledException $e) {
278 $followers = NULL;
279 unset($followers);
280 $data[$key]["begin_gf"] = time();
281 $followers = $ig->people->getFollowers($d["id"], $d["rank_token"], NULL, $d["max_id"]);
282 sleep(1);
283 $counter3 += 1;
284 $get_from_user = true;
285 if (file_exists($usfile)) {
286 if (0 < filesize($usfile)) {
287 $q_sids = file_get_contents($usfile);
288 $qisds_ = explode(",", $q_sids);
289 } else {
290 $qisds_ = NULL;
291 }
292 } else {
293 $userfile = fopen($usfile, "w");
294 fwrite($userfile, "");
295 fclose($userfile);
296 $qisds_ = NULL;
297 }
298 if (!$get_from_user) {
299 $MiteMs = $mediaFeed->getItems();
300 if (empty($MiteMs)) {
301 $Log = new LogModel();
302 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", "@" . $d["value"] . " " . __("don't have any data in his/her profile..."))->set("data.error.details", __("We skip this target and goes to the next one."))->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.pid", $sc->get("process_id"))->save();
303 $Log = NULL;
304 unset($Log);
305 $data[$key] = NULL;
306 unset($data[$key]);
307 } else {
308 $likers_list = NULL;
309 unset($likers_list);
310 $likers_list = [];
311 $data[$key]["max_id"] = $mediaFeed->getNextMaxId();
312 foreach ($MiteMs as $mitem) {
313 $mediaId = $mitem->getId();
314 $likers_list[] = $ig->media->getLikers($mediaId);
315 if (empty($likers_list)) {
316 $Log = new LogModel();
317 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", "@" . $d["value"] . " " . __("don't have any data in his/her profile..."))->set("data.error.details", __("We skip this target and goes to the next one."))->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.pid", $sc->get("process_id"))->save();
318 $Log = NULL;
319 unset($Log);
320 $data[$key] = NULL;
321 unset($data[$key]);
322 unset($liker_list);
323 $likers_list = NULL;
324 $likers_list = [];
325 }
326 }
327 $followers_ids = [];
328 foreach ($likers_list as $likers) {
329 foreach ($likers->getUsers() as $follower) {
330 $is_private = $follower->getIsPrivate();
331 $has_anonymous_profile_picture = $follower->getHasAnonymousProfilePicture();
332 $is_verified = $follower->getIsVerified();
333 $latest_reel_media = $follower->getLatestReelMedia();
334 if (empty($is_private) && empty($is_verified) && empty($has_anonymous_profile_picture) && $latest_reel_media !== NULL) {
335 if (!empty($fresh_stories_range)) {
336 $fresh_stories_min = time() - round($fresh_stories_range * 60);
337 if ($fresh_stories_min <= $latest_reel_media) {
338 if (empty($qisds_) || !in_array($follower->getPk(), $qisds_)) {
339 $followers_ids[] = $follower->getPk();
340 }
341 }
342 } else {
343 if (empty($qisds_) || !in_array($follower->getPk(), $qisds_)) {
344 $followers_ids[] = $follower->getPk();
345 }
346 }
347 }
348 }
349 }
350 }
351 } else {
352 $followers_ids = NULL;
353 unset($followers_ids);
354 $followers_ids = [];
355 foreach ($followers->getUsers() as $follower) {
356 $is_private = $follower->getIsPrivate();
357 $has_anonymous_profile_picture = $follower->getHasAnonymousProfilePicture();
358 $is_verified = $follower->getIsVerified();
359 $latest_reel_media = $follower->getLatestReelMedia();
360 if (empty($is_private) && empty($is_verified) && empty($has_anonymous_profile_picture) && $latest_reel_media !== NULL) {
361 if ($fresh_stories && isset($fresh_stories_range)) {
362 $fresh_stories_min = time() - round($fresh_stories_range * 60);
363 if ($fresh_stories_min <= $latest_reel_media) {
364 if (empty($qisds_) || !in_array($follower->getPk(), $qisds_)) {
365 $followers_ids[] = $follower->getPk();
366 }
367 }
368 } else {
369 if (empty($qisds_) || !in_array($follower->getPk(), $qisds_)) {
370 $followers_ids[] = $follower->getPk();
371 }
372 }
373 }
374 }
375 }
376 $followers_ids = array_values($followers_ids);
377 $number = 0;
378 if (0 < count($followers_ids)) {
379 $number = count($followers_ids);
380 }
381 if (0 < $number) {
382 $data[$key]["users_count"] = $d["users_count"] + $number;
383 $index_new = NULL;
384 $index_old = NULL;
385 $action_stats_count = NULL;
386 $last = false;
387 $index_new += 13;
388 if (!isset($followers_ids[$index_new])) {
389 $last = true;
390 }
391 $ids = NULL;
392 unset($ids);
393 $ids = [];
394 $i = $index_old;
395 while ($i > $index_new) {
396 try {
397 $stories_reels = NULL;
398 if (0 < count($ids)) {
399 try {
400 $stories_reels = $ig->story->getReelsMediaFeed($ids);
401 sleep(1);
402 } catch (\InstagramAPI\Exception\BadRequestException $e) {
403 $counter1 += 1;
404 if (isset($stories_reels) && $stories_reels->isOk() && 0 < count($stories_reels->getReels()->getData())) {
405 $reels = NULL;
406 unset($reels);
407 $reels = [];
408 $reels = $stories_reels->getReels()->getData();
409 foreach ($reels as $r) {
410 $items = NULL;
411 unset($items);
412 $items = [];
413 $items = $r->getItems();
414 $stories_loop = [];
415 foreach ($items as $item) {
416 if ($item->getId()) {
417 $it = json_decode($item, true);
418 if (array_key_exists("story_polls", $it) && !$poll_throttled) {
419 if ($sc->get("is_poll_active")) {
420 if (!isset($it["story_polls"][0]["poll_sticker"]["viewer_vote"])) {
421 if (!isset($it["updated_media"]["story_polls"][0]["poll_sticker"]["viewer_vote"])) {
422 if ($poll_answer_option = "R") {
423 $vote = mt_rand(0, 1);
424 } else {
425 if ($poll_answer_option = "0") {
426 $vote = 0;
427 } else {
428 $vote = 1;
429 }
430 }
431 try {
432 $votePollStory_response = $ig->story->votePollStory($it["id"], $it["story_polls"][0]["poll_sticker"]["poll_id"], $vote);
433 $now_ms = time();
434 if ($delay > $now_ms - $begin_ms) {
435 $sleep = (array) ($delay - ($now_ms - $begin_ms));
436 sleep($sleep);
437 }
438 if ($votePollStory_response->getStatus() == "ok") {
439 $votePollStory_counter++;
440 }
441 } catch (\InstagramAPI\Exception\BadRequestException $e) {
442 } catch (\InstagramAPI\Exception\ThrottledException $e) {
443 $poll_throttled = true;
444 $stories_loop[] = $item;
445 sleep(1);
446 $action_stats_count++;
447 $actions_count++;
448 $thumb = NULL;
449 if (NULL !== $item->getImageVersions2()) {
450 $thumb = $item->getImageVersions2()->getCandidates()[0]->getUrl();
451 }
452 $votePollStory_status = $votePollStory_response ? $votePollStory_response->getStatus() : "empty";
453 $question = isset($it["story_polls"][0]["poll_sticker"]["question"]) ? $it["story_polls"][0]["poll_sticker"]["question"] : NULL;
454 $Log = new LogModel();
455 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "success")->set("data.react.media_thumb", $thumb)->set("data.react.is_poll", 1)->set("data.react.poll.question_text", $question)->set("data.react.poll.vote_text", $it["story_polls"][0]["poll_sticker"]["tallies"][$vote]["text"])->set("data.react.total_count", number_format($actions_count, 0, ".", " "))->set("data.debug.votePollStory_status", $votePollStory_status)->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.debug.info", "votePollStory")->set("data.debug.memory_get_usage", memory_get_usage())->set("data.debug.memory_get_peak_usage", memory_get_peak_usage())->set("data.pid", $sc->get("process_id"))->save();
456 $Log = NULL;
457 unset($Log);
458 $begin_ms = time();
459 } catch (Exception $e) {
460 throw $e;
461 }
462 }
463 }
464 }
465 }
466 if (array_key_exists("story_sliders", $it) && !$slider_throttled) {
467 if ($sc->get("is_slider_active")) {
468 if (!isset($it["story_sliders"][0]["slider_sticker"]["viewer_vote"])) {
469 if (!isset($it["updated_media"]["story_sliders"][0]["slider_sticker"]["viewer_vote"])) {
470 $vote = mt_rand($sc->get("slider_min"), $sc->get("slider_max")) / 100;
471 try {
472 $voteSliderStory_response = $ig->story->voteSliderStory($it["id"], $it["story_sliders"][0]["slider_sticker"]["slider_id"], $vote);
473 $now_ms = time();
474 if ($delay > $now_ms - $begin_ms) {
475 $sleep = $delay - ($now_ms - $begin_ms);
476 sleep($sleep);
477 }
478 if ($voteSliderStory_response->getStatus() == "ok") {
479 $voteSliderStory_counter++;
480 }
481 } catch (\InstagramAPI\Exception\BadRequestException $e) {
482 } catch (\InstagramAPI\Exception\ThrottledException $e) {
483 $slider_throttled = true;
484 $stories_loop[] = $item;
485 sleep(1);
486 $action_stats_count++;
487 $actions_count++;
488 $thumb = NULL;
489 if (NULL !== $item->getImageVersions2()) {
490 $thumb = $item->getImageVersions2()->getCandidates()[0]->getUrl();
491 }
492 $voteSliderStory_status = $voteSliderStory_response ? $voteSliderStory_response->getStatus() : "empty";
493 $question = isset($it["story_sliders"][0]["slider_sticker"]["question"]) ? $it["story_sliders"][0]["slider_sticker"]["question"] : NULL;
494 $Log = new LogModel();
495 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "success")->set("data.react.media_thumb", $thumb)->set("data.react.is_slider", 1)->set("data.react.slider.question_text", $question)->set("data.react.slider.vote_value", $vote * 100)->set("data.react.total_count", number_format($actions_count, 0, ".", " "))->set("data.debug.voteSliderStory_status", $voteSliderStory_status)->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.debug.info", "voteSliderStory")->set("data.debug.memory_get_usage", memory_get_usage())->set("data.debug.memory_get_peak_usage", memory_get_peak_usage())->set("data.pid", $sc->get("process_id"))->save();
496 $Log = NULL;
497 unset($Log);
498 $begin_ms = time();
499 } catch (Exception $e) {
500 }
501 }
502 }
503 }
504 }
505 if (array_key_exists("story_questions", $it) && !$question_throttled) {
506 if ($sc->get("is_question_active")) {
507 if ($it["can_reply"]) {
508 $Emojione = new \Emojione\Client(new \Emojione\Ruleset());
509 $answers = $sc->get("answers_pk");
510 $answers2 = explode("\n", str_replace("\r", "", $answers));
511 $realfilename = $Account->get("id") . "-qafile.txt";
512 if (file_exists(PLUGINS_PATH . "/" . IDNAME . "/temp/" . $realfilename)) {
513 if (0 < filesize(PLUGINS_PATH . "/" . IDNAME . "/temp/" . $realfilename)) {
514 $q_ids = file_get_contents(PLUGINS_PATH . "/" . IDNAME . "/temp/" . $realfilename);
515 $qids_ = explode(",", $q_ids);
516 } else {
517 $qids_ = NULL;
518 }
519 } else {
520 $question_answers_file = fopen(PLUGINS_PATH . "/" . IDNAME . "/temp/" . $realfilename, "w");
521 fwrite($question_answers_file, "");
522 fclose($question_answers_file);
523 $qids_ = NULL;
524 }
525 if (empty($qids_) || !in_array($it["id"], $qids_)) {
526 try {
527 $question_answers_file = fopen(PLUGINS_PATH . "/" . IDNAME . "/temp/" . $realfilename, "w");
528 $rand = mt_rand(0, count($answers2) - 1);
529 $caption = $Emojione->shortnameToUnicode($answers2[$rand]);
530 $answerStoryQuestion_response = $ig->story->answerStoryQuestion($it["id"], $it["story_questions"][0]["question_sticker"]["question_id"], $caption);
531 $now_ms = time();
532 $ufl = fopen($usfile, "w");
533 $qisds_[] = $it["user"]["pk"];
534 fwrite($ufl, join(",", $qisds_));
535 if ($delay > $now_ms - $begin_ms) {
536 $sleep = (array) ($delay - ($now_ms - $begin_ms));
537 sleep($sleep);
538 }
539 $answerStoryQuestion_counter++;
540 $qids_[] = $it["id"];
541 fwrite($question_answers_file, join(",", $qids_));
542 } catch (\InstagramAPI\Exception\BadRequestException $e) {
543 } catch (\InstagramAPI\Exception\ThrottledException $e) {
544 $question_throttled = true;
545 $stories_loop[] = $item;
546 sleep(1);
547 $action_stats_count++;
548 $actions_count++;
549 $thumb = NULL;
550 if (NULL !== $item->getImageVersions2()) {
551 $thumb = $item->getImageVersions2()->getCandidates()[0]->getUrl();
552 }
553 $answerStoryQuestion_status = $answerStoryQuestion_response ? $answerStoryQuestion_response->getStatus() : "empty";
554 $question = isset($it["story_quizs"][0]["quiz_sticker"]["question"]) ? $it["story_quizs"][0]["quiz_sticker"]["question"] : NULL;
555 $Log = new LogModel();
556 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "success")->set("data.react.media_thumb", $thumb)->set("data.react.is_question", 1)->set("data.react.question.question_text", $question)->set("data.react.question.vote_text", $caption)->set("data.react.total_count", number_format($actions_count, 0, ".", " "))->set("data.debug.answerStoryQuestion_status", $answerStoryQuestion_status)->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.debug.info", "answerStoryQuestion")->set("data.debug.memory_get_usage", memory_get_usage())->set("data.debug.memory_get_peak_usage", memory_get_peak_usage())->set("data.pid", $sc->get("process_id"))->save();
557 $Log = NULL;
558 unset($Log);
559 fclose($question_answers_file);
560 $begin_ms = time();
561 } catch (Exception $e) {
562 throw $e;
563 }
564 }
565 }
566 }
567 }
568 if (array_key_exists("story_quizs", $it) && !$quiz_throttled) {
569 if ($sc->get("is_quiz_active")) {
570 if (!isset($it["story_quizs"][0]["quiz_sticker"]["viewer_answer"])) {
571 if (!isset($it["updated_media"]["story_quizs"][0]["quiz_sticker"]["viewer_answer"])) {
572 $answer_1 = isset($it["story_quizs"][0]["quiz_sticker"]["tallies"][0]) ? 1 : 0;
573 $answer_2 = isset($it["story_quizs"][0]["quiz_sticker"]["tallies"][1]) ? 1 : 0;
574 $answer_3 = isset($it["story_quizs"][0]["quiz_sticker"]["tallies"][2]) ? 1 : 0;
575 $answer_4 = isset($it["story_quizs"][0]["quiz_sticker"]["tallies"][3]) ? 1 : 0;
576 if ($answer_1 && $answer_2 && $answer_3 && $answer_4) {
577 $vote = mt_rand(0, 3);
578 } else {
579 if ($answer_1 && $answer_2 && $answer_3) {
580 $vote = mt_rand(0, 2);
581 } else {
582 if ($answer_1 && $answer_2) {
583 $vote = mt_rand(0, 1);
584 }
585 }
586 }
587 try {
588 $voteQuizStory_response = $ig->story->voteQuizStory($it["pk"], $it["story_quizs"][0]["quiz_sticker"]["quiz_id"], $vote);
589 $now_ms = time();
590 if (2 > $now_ms - $begin_ms) {
591 $sleep = (array) (2 - ($now_ms - $begin_ms));
592 sleep($sleep);
593 }
594 $voteQuizStory_counter++;
595 if (empty($qisds_) || !in_array($follower->getPk(), $qisds_)) {
596 $followers_ids[] = $follower->getPk();
597 }
598 } catch (\InstagramAPI\Exception\BadRequestException $e) {
599 } catch (\InstagramAPI\Exception\ThrottledException $e) {
600 $quiz_throttled = true;
601 $stories_loop[] = $item;
602 sleep(1);
603 $action_stats_count++;
604 $actions_count++;
605 $thumb = NULL;
606 if (NULL !== $item->getImageVersions2()) {
607 $thumb = $item->getImageVersions2()->getCandidates()[0]->getUrl();
608 }
609 $voteQuizStory_status = $voteQuizStory_response ? $voteQuizStory_response->getStatus() : "empty";
610 $question = isset($it["story_quizs"][0]["quiz_sticker"]["question"]) ? $it["story_quizs"][0]["quiz_sticker"]["question"] : NULL;
611 $Log = new LogModel();
612 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "success")->set("data.react.media_thumb", $thumb)->set("data.react.is_quiz", 1)->set("data.react.quiz.question_text", $question)->set("data.react.quiz.vote_text", $it["story_quizs"][0]["quiz_sticker"]["tallies"][$vote]["text"])->set("data.react.total_count", number_format($actions_count, 0, ".", " "))->set("data.debug.voteQuizStory_status", $voteQuizStory_status)->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.debug.info", "voteQuizStory")->set("data.debug.memory_get_usage", memory_get_usage())->set("data.debug.memory_get_peak_usage", memory_get_peak_usage())->set("data.pid", $sc->get("process_id"))->save();
613 $Log = NULL;
614 unset($Log);
615 $begin_ms = time();
616 } catch (Exception $e) {
617 throw $e;
618 }
619 }
620 }
621 }
622 }
623 if ($sc->get("is_mass_story_view_active")) {
624 if (array_key_exists("story_polls", $it) && $poll_throttled) {
625 $stories_loop[] = $item;
626 } else {
627 if (array_key_exists("story_questions", $it) && $question_throttled) {
628 $stories_loop[] = $item;
629 } else {
630 if (array_key_exists("story_sliders", $it) && $slider_throttled) {
631 $stories_loop[] = $item;
632 } else {
633 if (array_key_exists("story_quizs", $it) && $quiz_throttled) {
634 $stories_loop[] = $item;
635 }
636 }
637 }
638 }
639 }
640 }
641 }
642 if ($sc->get("is_mass_story_view_active") && !$mass_view_throttled) {
643 if (empty($stories)) {
644 $stories = $stories_loop;
645 } else {
646 $stories = array_merge($stories, $stories_loop);
647 }
648 $stats_count = $stats_count + count($stories_loop);
649 $st_count = $st_count + count($stories_loop);
650 $mass_story_view_counter = $mass_story_view_counter + count($stories_loop);
651 if (20 <= $st_count) {
652 $now_ms = time();
653 if (60 > $now_ms - $begin_ms) {
654 $sleep = 60 - ($now_ms - $begin_ms);
655 sleep($sleep);
656 }
657 $mark_seen_resp = NULL;
658 unset($mark_seen_resp);
659 $is_connected = false;
660 $is_connected_count = 0;
661 $fail_message = __("We couldn't establish connection with Instagram 7 times. Please try again later.");
662 while ($is_connected_count == 7) {
663 if ($e) {
664 throw $e;
665 }
666 throw new Exception($fail_message);
667 }
668 try {
669 $mark_seen_resp = $ig->story->markMediaSeen($stories);
670 $is_connected = true;
671 } catch (\InstagramAPI\Exception\NetworkException $e) {
672 sleep(3);
673 } catch (\InstagramAPI\Exception\EmptyResponseException $e) {
674 sleep(3);
675 $is_connected_count += 1;
676 if ($is_connected) {
677 $begin_ms = time();
678 $st_count_seen = number_format($st_count, 0, ".", " ");
679 $counter2 += 1;
680 $actions_count++;
681 $thumb = NULL;
682 if (NULL !== $items[0]->getImageVersions2()) {
683 $thumb = $items[0]->getImageVersions2()->getCandidates()[0]->getUrl();
684 }
685 $mark_seen_status = $mark_seen_resp ? $mark_seen_resp->getStatus() : "empty";
686 $Log = new LogModel();
687 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "success")->set("data.viewed.media_thumb", $thumb)->set("data.viewed.stories_count", $st_count_seen)->set("data.viewed.total_stories_count", number_format($mass_story_view_counter, 0, ".", " "))->set("data.debug.mark_seen_resp", $mark_seen_status)->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.markMediaSeen", $counter2)->set("data.debug.getFollowers", $counter3)->set("data.debug.getFollowing", $counter5)->set("data.debug.filter", $counter4)->set("data.debug.delay", $delay)->set("data.debug.info", "After markMediaSeen()")->set("data.debug.memory_get_usage", memory_get_usage())->set("data.debug.memory_get_peak_usage", memory_get_peak_usage())->set("data.pid", $sc->get("process_id"))->save();
688 $Log = NULL;
689 unset($Log);
690 $stories = NULL;
691 unset($stories);
692 $stories = [];
693 $st_count = NULL;
694 }
695 } catch (\InstagramAPI\Exception\InstagramException $e) {
696 throw $e;
697 } catch (Exception $e) {
698 throw $e;
699 }
700 }
701 }
702 $throttled_type = mt_rand(1000, 1500);
703 if ($throttled_type <= time() - $last_throttled_type) {
704 $get_from_user = false;
705 $last_throttled_type = time();
706 } else {
707 $throttled_window = mt_rand(240, 360);
708 if ($throttled_window <= time() - $last_throttled_poll) {
709 $poll_throttled = false;
710 $last_throttled_poll = time();
711 } else {
712 if ($throttled_window <= time() - $last_throttled_quiz) {
713 $quiz_throttled = false;
714 $last_throttled_quiz = time();
715 } else {
716 if ($throttled_window <= time() - $last_throttled_slider) {
717 $slider_throttled = false;
718 $last_throttled_slider = time();
719 } else {
720 if ($throttled_window <= time() - $last_throttled_question) {
721 $question_throttled = false;
722 $last_throttled_question = time();
723 } else {
724 if ($throttled_window <= time() - $last_throttled_mass_view) {
725 $mass_view_throttled = false;
726 $last_throttled_mass_view = time();
727 }
728 $now = time();
729 if (299 < $now - $begin) {
730 $begin = time();
731 $delitel = $delitel + 1;
732 $speed = (array) ($actions_count * 16 * 24 / $delitel);
733 $Log = new LogModel();
734 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Estimated speed is") . " " . number_format($speed, 0, ".", " ") . " " . __("react/day"))->set("data.error.details", __("These values indicates maximum amount of the story action per day. They are not exact values."))->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.pid", $sc->get("process_id"))->save();
735 $Log = NULL;
736 unset($Log);
737 $sc->set("data.estimated_speed", number_format($speed, 0, ".", " "))->save();
738 $sql = "DELETE FROM `" . TABLE_PREFIX . "hypervote_log`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE `user_id` = " . $User->get("id") . " AND `account_id` = " . $Account->get("id") . " AND `date` < \"" . date("Y-m-d H:i:s", time() - 299) . "\" ";
739 $pdo = \DB::pdo();
740 $stmt = $pdo->prepare($sql);
741 $stmt->execute();
742 }
743 if ($sc->get("daily_pause")) {
744 $next_schedule = date("Y-m-d H:i:s", time() + 60);
745 $current_day = new \DateTime(date("Y-m-d H:i:s"), new \DateTimeZone($User->get("preferences.timezone")));
746 $current_day->setTimezone(new \DateTimeZone("UTC"));
747 $current_day = $current_day->format("Y-m-d");
748 $pause_from = $current_day . " " . $sc->get("daily_pause_from");
749 $pause_to = $current_day . " " . $sc->get("daily_pause_to");
750 if ($pause_to <= $pause_from) {
751 $pause_to = date("Y-m-d", time() + 86400) . " " . $sc->get("daily_pause_to");
752 }
753 if ($pause_to < $next_schedule) {
754 $pause_from = date("Y-m-d H:i:s", strtotime($pause_from) + 86400);
755 $pause_to = date("Y-m-d H:i:s", strtotime($pause_to) + 86400);
756 }
757 if ($pause_from <= $next_schedule && $next_schedule <= $pause_to) {
758 $next_schedule = $pause_to;
759 $Log = new LogModel();
760 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Massvoting paused"))->set("data.error.details", __("Daily pause interval begins."))->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.pid", $sc->get("process_id"))->save();
761 $Log = NULL;
762 $sc->set("schedule_date", $next_schedule)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->set("last_action_date", date("Y-m-d H:i:s"))->save();
763 exit;
764 }
765 }
766 }
767 }
768 }
769 }
770 }
771 }
772 }
773 } catch (Exception $e) {
774 throw $e;
775 }
776 }
777 $index_old = $index_new + 1;
778 } catch (\InstagramAPI\Exception\NetworkException $e) {
779 $Log = new LogModel();
780 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("We couldn't connect to Instagram at the moment. We will try to connect again."))->set("data.error.details", $e->getMessage())->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
781 $Log = NULL;
782 unset($Log);
783 sleep(5);
784 $index_new -= 13;
785 } catch (\InstagramAPI\Exception\EmptyResponseException $e) {
786 $Log = new LogModel();
787 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Instagram sent us empty response. We will try again."))->set("data.error.details", $e->getMessage())->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
788 $Log = NULL;
789 unset($Log);
790 sleep(5);
791 $index_new -= 13;
792 if ($last) {
793 if (0 < $action_stats_count) {
794 $now = new \Moment\Moment("now", $User->get("preferences.timezone"));
795 $now = $now->format("Y-m-d");
796 $today_log = new StatModel(["account_id" => $Account->get("id"), "user_id" => $Account->get("user_id"), "target" => $d["value"], "type" => $d["type"], "date" => $now]);
797 if (!$today_log->isAvailable()) {
798 $today_log = new StatModel();
799 $today_log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("target", $d["value"])->set("type", $d["type"])->set("view_count", 0)->set("voted_poll_count", 0)->set("sliders_count", 0)->set("question_answers_count", 0)->set("quiz_answers_count", 0)->set("mass_story_view_count", 0)->set("date", $now)->save();
800 }
801 $today_views = $today_log->get("view_count");
802 $today_answers = $today_log->get("question_answers_count");
803 $today_polls = $today_log->get("voted_poll_count");
804 $today_sliders = $today_log->get("sliders_count");
805 $today_qanswers = $today_log->get("quiz_answers_count");
806 $today_mass_story_view = $today_log->get("mass_story_view_count");
807 $today_total_answers = $today_answers + $answerStoryQuestion_counter;
808 $today_total_polls = $today_polls + $votePollStory_counter;
809 $today_total_sliders = $today_sliders + $voteSliderStory_counter;
810 $today_total_qanswers = $today_qanswers + $voteQuizStory_counter;
811 $today_total_story_view = $today_mass_story_view + $stats_count;
812 $today_total_views = $today_views + $action_stats_count;
813 $today_log->set("view_count", $today_total_views)->set("question_answers_count", $today_total_answers)->set("voted_poll_count", $today_total_polls)->set("sliders_count", $today_total_sliders)->set("quiz_answers_count", $today_total_qanswers)->set("mass_story_view_count", $today_total_story_view)->save();
814 $today_log = NULL;
815 unset($today_log);
816 }
817 }
818 } catch (\InstagramAPI\Exception\LoginRequiredException $e) {
819 $Log = new LogModel();
820 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Re-login required"))->set("data.error.details", __("Please Wait, we will relogin again to your Instagram account."))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
821 $Log = NULL;
822 unset($Log);
823 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
824 $Account->set("login_required", 1)->save();
825 exit;
826 } catch (\InstagramAPI\Exception\ChallengeRequiredException $e) {
827 $Log = new LogModel();
828 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Challenge required"))->set("data.error.details", __("Please login again and pass verification challenge. Instagram will send you a security code to verify your identity."))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
829 $Log = NULL;
830 unset($Log);
831 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
832 $Account->set("login_required", 1)->save();
833 exit;
834 } catch (\InstagramAPI\Exception\CheckpointRequiredException $e) {
835 $Log = new LogModel();
836 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Checkpoint required"))->set("data.error.details", __("Please go to Instagram website or mobile app and pass checkpoint!"))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
837 $Log = NULL;
838 unset($Log);
839 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
840 $Account->set("login_required", 1)->save();
841 exit;
842 } catch (\InstagramAPI\Exception\AccountDisabledException $e) {
843 $Log = new LogModel();
844 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Account disabled"))->set("data.error.details", __("Your account has been disabled for violating Instagram terms. <a href='%s'>Click here</a> to learn how you may be able to restore your account.", "https://help.instagram.com/contact/1652567838289083"))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
845 $Log = NULL;
846 unset($Log);
847 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
848 exit;
849 } catch (\InstagramAPI\Exception\ConsentRequiredException $e) {
850 $Log = new LogModel();
851 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Instagram updated Terms and Data Policy"))->set("data.error.details", __("Please go to <a href='https://instagram.com' target='_blank'>Instagram</a> website or mobile app to review these changes and accept them. After that try again."))->set("data.error.message", $e->getMessage())->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
852 $Log = NULL;
853 unset($Log);
854 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
855 exit;
856 } catch (\InstagramAPI\Exception\SentryBlockException $e) {
857 $Log = new LogModel();
858 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("API access restricted"))->set("data.error.details", __("Access to Instagram API restricted for spam behavior or otherwise abusing."))->set("data.error.message", $e->getMessage())->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
859 $Log = NULL;
860 unset($Log);
861 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
862 exit;
863 } catch (\InstagramAPI\Exception\ThrottledException $e) {
864 $Log = new LogModel();
865 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("You sent too many API requests"))->set("data.error.details", __("We will take a 12 hours break for hypervote and after that try all again. You reached Instagram limits. If you are using another type of automation, you should downcrease hypervote speed and find you golden ratio."))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.debug.info", "Section #1")->save();
866 $Log = NULL;
867 unset($Log);
868 $sc->set("is_active", 1)->set("schedule_date", date("Y-m-d H:i:s", time() + 43200))->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
869 exit;
870 } catch (Exception $e) {
871 $Log = new LogModel();
872 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("An error occurred during hypervote"))->set("data.error.details", $e->getMessage())->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
873 $Log = NULL;
874 unset($Log);
875 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
876 exit;
877 }
878 }
879 if (isset($followers_ids[$i])) {
880 $ids[] = $followers_ids[$i];
881 }
882 $i++;
883 }
884 if ($data[$key]["max_id"] == NULL) {
885 $data[$key] = NULL;
886 unset($data[$key]);
887 }
888 } catch (Exception $e) {
889 throw $e;
890 }
891 }
892 if ($d["type"] == "people_follower") {
893 $get_from_likers = false;
894 try {
895 $followers = NULL;
896 unset($followers);
897 $data[$key]["begin_gf"] = time();
898 $followers = $ig->people->getFollowers($d["id"], $d["rank_token"], NULL, $d["max_id"]);
899 sleep(5);
900 $counter5 += 1;
901 } catch (\InstagramAPI\Exception\NotFoundException $e) {
902 $Log = new LogModel();
903 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", "@" . $d["value"] . " " . __("not found"))->set("data.error.details", __("Username is incorrect or maybe user blocked you (login to Instagram website or mobile app and check that)."))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.pid", $sc->get("process_id"))->save();
904 $Log = NULL;
905 unset($Log);
906 $data[$key] = NULL;
907 unset($data[$key]);
908 } catch (\InstagramAPI\Exception\ThrottledException $e) {
909 $mediaFeed = NULL;
910 unset($mediaFeed);
911 $data[$key]["begin_gf"] = time();
912 $mediaFeed = $ig->timeline->getUserFeed($d["id"], $d["max_id"]);
913 sleep(2);
914 $counter3 += 1;
915 $get_from_likers = true;
916 if (empty($mediaFeed)) {
917 $Log = new LogModel();
918 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", "@" . $d["value"] . " " . __("don't have any data in his/her profile..."))->set("data.error.details", __("We skip this target and goes to the next one."))->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.pid", $sc->get("process_id"))->save();
919 $Log = NULL;
920 unset($Log);
921 $mediaFeed = NULL;
922 unset($mediaFeed);
923 } else {
924 if (file_exists($usfile)) {
925 if (0 < filesize($usfile)) {
926 $q_sids = file_get_contents($usfile);
927 $qisds_ = explode(",", $q_sids);
928 } else {
929 $qisds_ = NULL;
930 }
931 } else {
932 $userfile = fopen($usfile, "w");
933 fwrite($userfile, "");
934 fclose($userfile);
935 $qisds_ = NULL;
936 }
937 if (!$get_from_likers) {
938 if (!$followers->getUsers()) {
939 $Log = new LogModel();
940 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", "@" . $d["value"] . " " . __("don't have any follower."))->set("data.error.details", __("We skip this target and goes to the next one."))->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.pid", $sc->get("process_id"))->save();
941 $Log = NULL;
942 unset($Log);
943 $data[$key] = NULL;
944 unset($data[$key]);
945 } else {
946 $data[$key]["max_id"] = $followers->getNextMaxId();
947 $followers_ids = NULL;
948 unset($followers_ids);
949 $followers_ids = [];
950 foreach ($followers->getUsers() as $follower) {
951 $is_private = $follower->getIsPrivate();
952 $has_anonymous_profile_picture = $follower->getHasAnonymousProfilePicture();
953 $is_verified = $follower->getIsVerified();
954 $latest_reel_media = $follower->getLatestReelMedia();
955 if (empty($is_private) && empty($is_verified) && empty($has_anonymous_profile_picture) && $latest_reel_media !== NULL) {
956 if ($fresh_stories && isset($fresh_stories_range)) {
957 $fresh_stories_min = time() - round($fresh_stories_range * 60);
958 if ($fresh_stories_min <= $latest_reel_media) {
959 if (empty($qisds_) || !in_array($follower->getPk(), $qisds_)) {
960 $followers_ids[] = $follower->getPk();
961 }
962 }
963 } else {
964 if (empty($qisds_) || !in_array($follower->getPk(), $qisds_)) {
965 $followers_ids[] = $follower->getPk();
966 }
967 }
968 }
969 }
970 }
971 } else {
972 $MiteMs = $mediaFeed->getItems();
973 if (empty($MiteMs)) {
974 $Log = new LogModel();
975 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", "@" . $d["value"] . " " . __("don't have any data in his/her profile..."))->set("data.error.details", __("We skip this target and goes to the next one."))->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.pid", $sc->get("process_id"))->save();
976 $Log = NULL;
977 unset($Log);
978 $data[$key] = NULL;
979 unset($data[$key]);
980 } else {
981 unset($liker_list);
982 $likers_list = NULL;
983 $likers_list = [];
984 $data[$key]["max_id"] = $mediaFeed->getNextMaxId();
985 foreach ($MiteMs as $mitem) {
986 $mediaId = $mitem->getId();
987 $likers_list[] = $ig->media->getLikers($mediaId);
988 if (empty($likers_list)) {
989 $Log = new LogModel();
990 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", "@" . $d["value"] . " " . __("don't have any data in his/her profile..."))->set("data.error.details", __("We skip this target and goes to the next one."))->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.pid", $sc->get("process_id"))->save();
991 $Log = NULL;
992 unset($Log);
993 $data[$key] = NULL;
994 unset($data[$key]);
995 unset($liker_list);
996 $likers_list = NULL;
997 $likers_list = [];
998 }
999 }
1000 $followers_ids = [];
1001 foreach ($likers_list as $likers) {
1002 foreach ($likers->getUsers() as $follower) {
1003 $is_private = $follower->getIsPrivate();
1004 $is_verified = $follower->getIsVerified();
1005 $latest_reel_media = $follower->getLatestReelMedia();
1006 $has_anonymous_profile_picture = $follower->getHasAnonymousProfilePicture();
1007 if (!$is_private && !$is_verified && $latest_reel_media !== "0") {
1008 if (!empty($fresh_stories_range)) {
1009 $fresh_stories_min = time() - round($fresh_stories_range * 60);
1010 if ($fresh_stories_min <= $latest_reel_media) {
1011 if (empty($qisds_) || !in_array($follower->getPk(), $qisds_)) {
1012 $followers_ids[] = $follower->getPk();
1013 }
1014 }
1015 } else {
1016 if (empty($qisds_) || !in_array($follower->getPk(), $qisds_)) {
1017 $followers_ids[] = $follower->getPk();
1018 }
1019 }
1020 }
1021 }
1022 }
1023 }
1024 }
1025 $followers_ids = array_values($followers_ids);
1026 $number = 0;
1027 if (0 < count($followers_ids)) {
1028 $number = count($followers_ids);
1029 }
1030 if (0 < $number) {
1031 $data[$key]["users_count"] = $d["users_count"] + $number;
1032 $index_new = NULL;
1033 $index_old = NULL;
1034 $action_stats_count = NULL;
1035 $last = false;
1036 $index_new += 13;
1037 if (!isset($followers_ids[$index_new])) {
1038 $last = true;
1039 }
1040 $ids = NULL;
1041 unset($ids);
1042 $ids = [];
1043 $i = $index_old;
1044 while ($i > $index_new) {
1045 try {
1046 $stories_reels = NULL;
1047 if (0 < count($ids)) {
1048 try {
1049 $stories_reels = $ig->story->getReelsMediaFeed($ids);
1050 sleep(1);
1051 } catch (\InstagramAPI\Exception\BadRequestException $e) {
1052 $counter1 += 1;
1053 if (isset($stories_reels) && $stories_reels->isOk() && 0 < count($stories_reels->getReels()->getData())) {
1054 $reels = NULL;
1055 unset($reels);
1056 $reels = [];
1057 $reels = $stories_reels->getReels()->getData();
1058 foreach ($reels as $r) {
1059 $items = NULL;
1060 unset($items);
1061 $items = [];
1062 $items = $r->getItems();
1063 $stories_loop = [];
1064 foreach ($items as $item) {
1065 if ($item->getId()) {
1066 $it = json_decode($item, true);
1067 if (array_key_exists("story_polls", $it) && !$poll_throttled) {
1068 if ($sc->get("is_poll_active")) {
1069 if (!isset($it["story_polls"][0]["poll_sticker"]["viewer_vote"])) {
1070 if (!isset($it["updated_media"]["story_polls"][0]["poll_sticker"]["viewer_vote"])) {
1071 if ($poll_answer_option = "R") {
1072 $vote = mt_rand(0, 1);
1073 } else {
1074 if ($poll_answer_option = "0") {
1075 $vote = 0;
1076 } else {
1077 $vote = 1;
1078 }
1079 }
1080 try {
1081 $votePollStory_response = $ig->story->votePollStory($it["id"], $it["story_polls"][0]["poll_sticker"]["poll_id"], $vote);
1082 $now_ms = time();
1083 if ($delay > $now_ms - $begin_ms) {
1084 $sleep = (array) ($delay - ($now_ms - $begin_ms));
1085 sleep($sleep);
1086 }
1087 if ($votePollStory_response->getStatus() == "ok") {
1088 $votePollStory_counter++;
1089 }
1090 } catch (\InstagramAPI\Exception\BadRequestException $e) {
1091 } catch (\InstagramAPI\Exception\ThrottledException $e) {
1092 $poll_throttled = true;
1093 $stories_loop[] = $item;
1094 sleep(1);
1095 $action_stats_count++;
1096 $actions_count++;
1097 $thumb = NULL;
1098 if (NULL !== $item->getImageVersions2()) {
1099 $thumb = $item->getImageVersions2()->getCandidates()[0]->getUrl();
1100 }
1101 $votePollStory_status = $votePollStory_response ? $votePollStory_response->getStatus() : "empty";
1102 $question = isset($it["story_polls"][0]["poll_sticker"]["question"]) ? $it["story_polls"][0]["poll_sticker"]["question"] : NULL;
1103 $Log = new LogModel();
1104 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "success")->set("data.react.media_thumb", $thumb)->set("data.react.is_poll", 1)->set("data.react.poll.question_text", $question)->set("data.react.poll.vote_text", $it["story_polls"][0]["poll_sticker"]["tallies"][$vote]["text"])->set("data.react.total_count", number_format($actions_count, 0, ".", " "))->set("data.debug.votePollStory_status", $votePollStory_status)->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.debug.info", "votePollStory")->set("data.debug.memory_get_usage", memory_get_usage())->set("data.debug.memory_get_peak_usage", memory_get_peak_usage())->set("data.pid", $sc->get("process_id"))->save();
1105 $Log = NULL;
1106 unset($Log);
1107 $begin_ms = time();
1108 } catch (Exception $e) {
1109 throw $e;
1110 }
1111 }
1112 }
1113 }
1114 }
1115 if (array_key_exists("story_sliders", $it) && !$slider_throttled) {
1116 if ($sc->get("is_slider_active")) {
1117 if (!isset($it["story_sliders"][0]["slider_sticker"]["viewer_vote"])) {
1118 if (!isset($it["updated_media"]["story_sliders"][0]["slider_sticker"]["viewer_vote"])) {
1119 $vote = mt_rand($sc->get("slider_min"), $sc->get("slider_max")) / 100;
1120 try {
1121 $voteSliderStory_response = $ig->story->voteSliderStory($it["id"], $it["story_sliders"][0]["slider_sticker"]["slider_id"], $vote);
1122 $now_ms = time();
1123 if ($delay > $now_ms - $begin_ms) {
1124 $sleep = $delay - ($now_ms - $begin_ms);
1125 sleep($sleep);
1126 }
1127 if ($voteSliderStory_response->getStatus() == "ok") {
1128 $voteSliderStory_counter++;
1129 }
1130 } catch (\InstagramAPI\Exception\BadRequestException $e) {
1131 } catch (\InstagramAPI\Exception\ThrottledException $e) {
1132 $slider_throttled = true;
1133 $stories_loop[] = $item;
1134 sleep(1);
1135 $action_stats_count++;
1136 $actions_count++;
1137 $thumb = NULL;
1138 if (NULL !== $item->getImageVersions2()) {
1139 $thumb = $item->getImageVersions2()->getCandidates()[0]->getUrl();
1140 }
1141 $voteSliderStory_status = $voteSliderStory_response ? $voteSliderStory_response->getStatus() : "empty";
1142 $question = isset($it["story_sliders"][0]["slider_sticker"]["question"]) ? $it["story_sliders"][0]["slider_sticker"]["question"] : NULL;
1143 $Log = new LogModel();
1144 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "success")->set("data.react.media_thumb", $thumb)->set("data.react.is_slider", 1)->set("data.react.slider.question_text", $question)->set("data.react.slider.vote_value", $vote)->set("data.react.total_count", number_format($actions_count, 0, ".", " "))->set("data.debug.voteSliderStory_status", $voteSliderStory_status)->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.debug.info", "voteSliderStory")->set("data.debug.memory_get_usage", memory_get_usage())->set("data.debug.memory_get_peak_usage", memory_get_peak_usage())->set("data.pid", $sc->get("process_id"))->save();
1145 $Log = NULL;
1146 unset($Log);
1147 $begin_ms = time();
1148 } catch (Exception $e) {
1149 }
1150 }
1151 }
1152 }
1153 }
1154 if (array_key_exists("story_questions", $it) && !$question_throttled) {
1155 if ($sc->get("is_question_active")) {
1156 if ($it["can_reply"]) {
1157 $Emojione = new \Emojione\Client(new \Emojione\Ruleset());
1158 $answers = $sc->get("answers_pk");
1159 $answers2 = explode("\n", str_replace("\r", "", $answers));
1160 $realfilename = $Account->get("id") . "-qafile.txt";
1161 if (file_exists(PLUGINS_PATH . "/" . IDNAME . "/temp/" . $realfilename)) {
1162 if (0 < filesize(PLUGINS_PATH . "/" . IDNAME . "/temp/" . $realfilename)) {
1163 $q_ids = file_get_contents(PLUGINS_PATH . "/" . IDNAME . "/temp/" . $realfilename);
1164 $qids_ = explode(",", $q_ids);
1165 } else {
1166 $qids_ = NULL;
1167 }
1168 } else {
1169 $question_answers_file = fopen(PLUGINS_PATH . "/" . IDNAME . "/temp/" . $realfilename, "w");
1170 fwrite($question_answers_file, "");
1171 fclose($question_answers_file);
1172 $qids_ = NULL;
1173 }
1174 if (empty($qids_) || !in_array($it["id"], $qids_)) {
1175 try {
1176 $question_answers_file = fopen(PLUGINS_PATH . "/" . IDNAME . "/temp/" . $realfilename, "w");
1177 $rand = mt_rand(0, count($answers2) - 1);
1178 $caption = $Emojione->shortnameToUnicode($answers2[$rand]);
1179 $answerStoryQuestion_response = $ig->story->answerStoryQuestion($it["id"], $it["story_questions"][0]["question_sticker"]["question_id"], $caption);
1180 $now_ms = time();
1181 $ufl = fopen($usfile, "w");
1182 $qisds_[] = $it["user"]["pk"];
1183 fwrite($ufl, join(",", $qisds_));
1184 if ($delay > $now_ms - $begin_ms) {
1185 $sleep = (array) ($delay - ($now_ms - $begin_ms));
1186 sleep($sleep);
1187 }
1188 $answerStoryQuestion_counter++;
1189 $qids_[] = $it["id"];
1190 fwrite($question_answers_file, join(",", $qids_));
1191 } catch (\InstagramAPI\Exception\BadRequestException $e) {
1192 } catch (\InstagramAPI\Exception\ThrottledException $e) {
1193 $question_throttled = true;
1194 $stories_loop[] = $item;
1195 sleep(1);
1196 $action_stats_count++;
1197 $actions_count++;
1198 $thumb = NULL;
1199 if (NULL !== $item->getImageVersions2()) {
1200 $thumb = $item->getImageVersions2()->getCandidates()[0]->getUrl();
1201 }
1202 $answerStoryQuestion_status = $answerStoryQuestion_response ? $answerStoryQuestion_response->getStatus() : "empty";
1203 $question = isset($it["story_quizs"][0]["quiz_sticker"]["question"]) ? $it["story_quizs"][0]["quiz_sticker"]["question"] : NULL;
1204 $Log = new LogModel();
1205 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "success")->set("data.react.media_thumb", $thumb)->set("data.react.is_question", 1)->set("data.react.question.question_text", $question)->set("data.react.question.vote_text", $caption)->set("data.react.total_count", number_format($actions_count, 0, ".", " "))->set("data.debug.answerStoryQuestion_status", $answerStoryQuestion_status)->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.debug.info", "answerStoryQuestion")->set("data.debug.memory_get_usage", memory_get_usage())->set("data.debug.memory_get_peak_usage", memory_get_peak_usage())->set("data.pid", $sc->get("process_id"))->save();
1206 $Log = NULL;
1207 unset($Log);
1208 fclose($question_answers_file);
1209 $begin_ms = time();
1210 } catch (Exception $e) {
1211 throw $e;
1212 }
1213 }
1214 }
1215 }
1216 }
1217 if (array_key_exists("story_quizs", $it) && !$quiz_throttled) {
1218 if ($sc->get("is_quiz_active")) {
1219 if (!isset($it["story_quizs"][0]["quiz_sticker"]["viewer_answer"])) {
1220 if (!isset($it["updated_media"]["story_quizs"][0]["quiz_sticker"]["viewer_answer"])) {
1221 $answer_1 = isset($it["story_quizs"][0]["quiz_sticker"]["tallies"][0]) ? 1 : 0;
1222 $answer_2 = isset($it["story_quizs"][0]["quiz_sticker"]["tallies"][1]) ? 1 : 0;
1223 $answer_3 = isset($it["story_quizs"][0]["quiz_sticker"]["tallies"][2]) ? 1 : 0;
1224 $answer_4 = isset($it["story_quizs"][0]["quiz_sticker"]["tallies"][3]) ? 1 : 0;
1225 if ($answer_1 && $answer_2 && $answer_3 && $answer_4) {
1226 $vote = mt_rand(0, 3);
1227 } else {
1228 if ($answer_1 && $answer_2 && $answer_3) {
1229 $vote = mt_rand(0, 2);
1230 } else {
1231 if ($answer_1 && $answer_2) {
1232 $vote = mt_rand(0, 1);
1233 }
1234 }
1235 }
1236 try {
1237 $voteQuizStory_response = $ig->story->voteQuizStory($it["pk"], $it["story_quizs"][0]["quiz_sticker"]["quiz_id"], $vote);
1238 $now_ms = time();
1239 if (1 > $now_ms - $begin_ms) {
1240 $sleep = (array) (1 - ($now_ms - $begin_ms));
1241 sleep($sleep);
1242 }
1243 $voteQuizStory_counter++;
1244 } catch (\InstagramAPI\Exception\BadRequestException $e) {
1245 } catch (\InstagramAPI\Exception\ThrottledException $e) {
1246 $quiz_throttled = true;
1247 $stories_loop[] = $item;
1248 sleep(1);
1249 $action_stats_count++;
1250 $actions_count++;
1251 $thumb = NULL;
1252 if (NULL !== $item->getImageVersions2()) {
1253 $thumb = $item->getImageVersions2()->getCandidates()[0]->getUrl();
1254 }
1255 $voteQuizStory_status = $voteQuizStory_response ? $voteQuizStory_response->getStatus() : "empty";
1256 $question = isset($it["story_quizs"][0]["quiz_sticker"]["question"]) ? $it["story_quizs"][0]["quiz_sticker"]["question"] : NULL;
1257 $Log = new LogModel();
1258 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "success")->set("data.react.media_thumb", $thumb)->set("data.react.is_quiz", 1)->set("data.react.quiz.question_text", $question)->set("data.react.quiz.vote_text", $it["story_quizs"][0]["quiz_sticker"]["tallies"][$vote]["text"])->set("data.react.total_count", number_format($actions_count, 0, ".", " "))->set("data.debug.voteQuizStory_status", $voteQuizStory_status)->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.debug.info", "voteQuizStory")->set("data.debug.memory_get_usage", memory_get_usage())->set("data.debug.memory_get_peak_usage", memory_get_peak_usage())->set("data.pid", $sc->get("process_id"))->save();
1259 $Log = NULL;
1260 unset($Log);
1261 $begin_ms = time();
1262 } catch (Exception $e) {
1263 throw $e;
1264 }
1265 }
1266 }
1267 }
1268 }
1269 if ($sc->get("is_mass_story_view_active")) {
1270 if (array_key_exists("story_polls", $it) && $poll_throttled) {
1271 $stories_loop[] = $item;
1272 } else {
1273 if (array_key_exists("story_questions", $it) && $question_throttled) {
1274 $stories_loop[] = $item;
1275 } else {
1276 if (array_key_exists("story_sliders", $it) && $slider_throttled) {
1277 $stories_loop[] = $item;
1278 } else {
1279 if (array_key_exists("story_quizs", $it) && $quiz_throttled) {
1280 $stories_loop[] = $item;
1281 }
1282 }
1283 }
1284 }
1285 }
1286 }
1287 }
1288 if ($sc->get("is_mass_story_view_active") && !$mass_view_throttled) {
1289 if (empty($stories)) {
1290 $stories = $stories_loop;
1291 } else {
1292 $stories = array_merge($stories, $stories_loop);
1293 }
1294 $stats_count = $stats_count + count($stories_loop);
1295 $st_count = $st_count + count($stories_loop);
1296 $mass_story_view_counter = $mass_story_view_counter + count($stories_loop);
1297 if (20 <= $st_count) {
1298 $now_ms = time();
1299 if (60 > $now_ms - $begin_ms) {
1300 $sleep = (array) (60 - ($now_ms - $begin_ms));
1301 sleep($sleep);
1302 }
1303 $mark_seen_resp = NULL;
1304 unset($mark_seen_resp);
1305 $is_connected = false;
1306 $is_connected_count = 0;
1307 $fail_message = __("We couldn't establish connection with Instagram 7 times. Please try again later.");
1308 while ($is_connected_count == 7) {
1309 if ($e) {
1310 throw $e;
1311 }
1312 throw new Exception($fail_message);
1313 }
1314 try {
1315 $mark_seen_resp = $ig->story->markMediaSeen($stories);
1316 $is_connected = true;
1317 } catch (\InstagramAPI\Exception\NetworkException $e) {
1318 sleep(3);
1319 } catch (\InstagramAPI\Exception\EmptyResponseException $e) {
1320 sleep(3);
1321 $is_connected_count += 1;
1322 if ($is_connected) {
1323 $begin_ms = time();
1324 $st_count_seen = number_format($st_count, 0, ".", " ");
1325 $counter2 += 1;
1326 $actions_count++;
1327 $thumb = NULL;
1328 if (NULL !== $items[0]->getImageVersions2()) {
1329 $thumb = $items[0]->getImageVersions2()->getCandidates()[0]->getUrl();
1330 }
1331 $mark_seen_status = $mark_seen_resp ? $mark_seen_resp->getStatus() : "empty";
1332 $Log = new LogModel();
1333 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "success")->set("data.viewed.media_thumb", $thumb)->set("data.viewed.stories_count", $st_count_seen)->set("data.viewed.total_stories_count", number_format($mass_story_view_counter, 0, ".", " "))->set("data.debug.mark_seen_resp", $mark_seen_status)->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.markMediaSeen", $counter2)->set("data.debug.getFollowers", $counter3)->set("data.debug.getFollowing", $counter5)->set("data.debug.filter", $counter4)->set("data.debug.delay", $delay)->set("data.debug.info", "After markMediaSeen()")->set("data.debug.memory_get_usage", memory_get_usage())->set("data.debug.memory_get_peak_usage", memory_get_peak_usage())->set("data.pid", $sc->get("process_id"))->save();
1334 $Log = NULL;
1335 unset($Log);
1336 $stories = NULL;
1337 unset($stories);
1338 $stories = [];
1339 $st_count = NULL;
1340 }
1341 } catch (\InstagramAPI\Exception\InstagramException $e) {
1342 throw $e;
1343 } catch (Exception $e) {
1344 throw $e;
1345 }
1346 }
1347 }
1348 $throttled_type = mt_rand(1000, 1500);
1349 if ($throttled_type <= time() - $last_throttled_type) {
1350 $get_from_likers = false;
1351 $last_throttled_type = time();
1352 } else {
1353 $throttled_window = mt_rand(240, 360);
1354 if ($throttled_window <= time() - $last_throttled_poll) {
1355 $poll_throttled = false;
1356 $last_throttled_poll = time();
1357 }
1358 if ($throttled_window <= time() - $last_throttled_quiz) {
1359 $quiz_throttled = false;
1360 $last_throttled_quiz = time();
1361 }
1362 if ($throttled_window <= time() - $last_throttled_slider) {
1363 $slider_throttled = false;
1364 $last_throttled_slider = time();
1365 }
1366 if ($throttled_window <= time() - $last_throttled_question) {
1367 $question_throttled = false;
1368 $last_throttled_question = time();
1369 }
1370 if ($throttled_window <= time() - $last_throttled_countdown) {
1371 $countdown_throttled = false;
1372 $last_throttled_countdown = time();
1373 }
1374 if ($throttled_window <= time() - $last_throttled_mass_view) {
1375 $mass_view_throttled = false;
1376 $last_throttled_mass_view = time();
1377 }
1378 $now = time();
1379 if (299 < $now - $begin) {
1380 $begin = time();
1381 $delitel = $delitel + 1;
1382 $speed = (array) ($actions_count * 12 * 24 / $delitel);
1383 $Log = new LogModel();
1384 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Estimated speed is") . " " . number_format($speed, 0, ".", " ") . " " . __("stories/day"))->set("data.error.details", __("These values indicates maximum amount of the story action per day. They are not exact values."))->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.pid", $sc->get("process_id"))->save();
1385 $Log = NULL;
1386 unset($Log);
1387 $sc->set("data.estimated_speed", number_format($speed, 0, ".", " "))->save();
1388 $sql = "DELETE FROM `" . TABLE_PREFIX . "hypervote_log`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE `user_id` = " . $User->get("id") . " AND `account_id` = " . $Account->get("id") . " AND `date` < \"" . date("Y-m-d H:i:s", time() - 299) . "\" ";
1389 $pdo = \DB::pdo();
1390 $stmt = $pdo->prepare($sql);
1391 $stmt->execute();
1392 }
1393 if ($sc->get("daily_pause")) {
1394 $next_schedule = date("Y-m-d H:i:s", time() + 60);
1395 $current_day = new \DateTime(date("Y-m-d H:i:s"), new \DateTimeZone($User->get("preferences.timezone")));
1396 $current_day->setTimezone(new \DateTimeZone("UTC"));
1397 $current_day = $current_day->format("Y-m-d");
1398 $pause_from = $current_day . " " . $sc->get("daily_pause_from");
1399 $pause_to = $current_day . " " . $sc->get("daily_pause_to");
1400 if ($pause_to <= $pause_from) {
1401 $pause_to = date("Y-m-d", time() + 86400) . " " . $sc->get("daily_pause_to");
1402 }
1403 if ($pause_to < $next_schedule) {
1404 $pause_from = date("Y-m-d H:i:s", strtotime($pause_from) + 86400);
1405 $pause_to = date("Y-m-d H:i:s", strtotime($pause_to) + 86400);
1406 }
1407 if ($pause_from <= $next_schedule && $next_schedule <= $pause_to) {
1408 $next_schedule = $pause_to;
1409 $Log = new LogModel();
1410 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Massvoting paused"))->set("data.error.details", __("Daily pause interval begins."))->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.pid", $sc->get("process_id"))->save();
1411 $Log = NULL;
1412 unset($Log);
1413 $sc->set("schedule_date", $next_schedule)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->set("last_action_date", date("Y-m-d H:i:s"))->save();
1414 exit;
1415 }
1416 }
1417 }
1418 }
1419 }
1420 } catch (Exception $e) {
1421 throw $e;
1422 }
1423 }
1424 } catch (\InstagramAPI\Exception\NetworkException $e) {
1425 $Log = new LogModel();
1426 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("We couldn't connect to Instagram at the moment. We will try to connect again."))->set("data.error.details", $e->getMessage())->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
1427 $Log = NULL;
1428 unset($Log);
1429 sleep(7);
1430 $index_new -= 10;
1431 } catch (\InstagramAPI\Exception\EmptyResponseException $e) {
1432 $Log = new LogModel();
1433 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Instagram sent us empty response. We will try again."))->set("data.error.details", $e->getMessage())->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
1434 $Log = NULL;
1435 unset($Log);
1436 sleep(7);
1437 $index_new -= 10;
1438 } catch (\InstagramAPI\Exception\LoginRequiredException $e) {
1439 $Log = new LogModel();
1440 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Re-login required"))->set("data.error.details", __("Please login again to your Instagram account."))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
1441 $Log = NULL;
1442 unset($Log);
1443 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
1444 $Account->set("login_required", 1)->save();
1445 exit;
1446 } catch (\InstagramAPI\Exception\ChallengeRequiredException $e) {
1447 $Log = new LogModel();
1448 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Challenge required"))->set("data.error.details", __("Please login again and pass verification challenge. Instagram will send you a security code to verify your identity."))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
1449 $Log = NULL;
1450 unset($Log);
1451 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
1452 $Account->set("login_required", 1)->save();
1453 exit;
1454 } catch (\InstagramAPI\Exception\CheckpointRequiredException $e) {
1455 $Log = new LogModel();
1456 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Checkpoint required"))->set("data.error.details", __("Please go to Instagram website or mobile app and pass checkpoint!"))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
1457 $Log = NULL;
1458 unset($Log);
1459 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
1460 $Account->set("login_required", 1)->save();
1461 exit;
1462 } catch (\InstagramAPI\Exception\AccountDisabledException $e) {
1463 $Log = new LogModel();
1464 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Account disabled"))->set("data.error.details", __("Your account has been disabled for violating Instagram terms. <a href='%s'>Click here</a> to learn how you may be able to restore your account.", "https://help.instagram.com/contact/1652567838289083"))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
1465 $Log = NULL;
1466 unset($Log);
1467 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
1468 exit;
1469 } catch (\InstagramAPI\Exception\ConsentRequiredException $e) {
1470 $Log = new LogModel();
1471 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Instagram updated Terms and Data Policy"))->set("data.error.details", __("Please go to <a href='https://instagram.com' target='_blank'>Instagram</a> website or mobile app to review these changes and accept them. After that try again."))->set("data.error.message", $e->getMessage())->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
1472 $Log = NULL;
1473 unset($Log);
1474 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
1475 exit;
1476 } catch (\InstagramAPI\Exception\BadRequestException $e) {
1477 $Log = new LogModel();
1478 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("An error occurred during reactions loop"))->set("data.error.details", $e->getMessage())->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
1479 $Log = NULL;
1480 unset($Log);
1481 sleep(7);
1482 $index_old = $index_new + 1;
1483 if ($last) {
1484 if (0 < $action_stats_count) {
1485 $now = new \Moment\Moment("now", $User->get("preferences.timezone"));
1486 $now = $now->format("Y-m-d");
1487 $today_log = new StatModel(["account_id" => $Account->get("id"), "user_id" => $Account->get("user_id"), "target" => $d["value"], "type" => $d["type"], "date" => $now]);
1488 if (!$today_log->isAvailable()) {
1489 $today_log = new StatModel();
1490 $today_log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("target", $d["value"])->set("type", $d["type"])->set("view_count", 0)->set("voted_poll_count", 0)->set("sliders_count", 0)->set("question_answers_count", 0)->set("quiz_answers_count", 0)->set("mass_story_view_count", 0)->set("date", $now)->save();
1491 }
1492 $today_views = $today_log->get("view_count");
1493 $today_answers = $today_log->get("question_answers_count");
1494 $today_polls = $today_log->get("voted_poll_count");
1495 $today_sliders = $today_log->get("sliders_count");
1496 $today_qanswers = $today_log->get("quiz_answers_count");
1497 $today_mass_story_view = $today_log->get("mass_story_view_count");
1498 $today_total_answers = $today_answers + $answerStoryQuestion_counter;
1499 $today_total_polls = $today_polls + $votePollStory_counter;
1500 $today_total_sliders = $today_sliders + $voteSliderStory_counter;
1501 $today_total_qanswers = $today_qanswers + $voteQuizStory_counter;
1502 $today_total_story_view = $today_mass_story_view + $stats_count;
1503 $today_total_views = $today_views + $action_stats_count;
1504 $today_log->set("view_count", $today_total_views)->set("question_answers_count", $today_total_answers)->set("voted_poll_count", $today_total_polls)->set("sliders_count", $today_total_sliders)->set("quiz_answers_count", $today_total_qanswers)->set("mass_story_view_count", $today_total_story_view)->save();
1505 $today_log = NULL;
1506 unset($today_log);
1507 }
1508 }
1509 } catch (\InstagramAPI\Exception\SentryBlockException $e) {
1510 $Log = new LogModel();
1511 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("API access restricted"))->set("data.error.details", __("Access to Instagram API restricted for spam behavior or otherwise abusing."))->set("data.error.message", $e->getMessage())->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
1512 $Log = NULL;
1513 unset($Log);
1514 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
1515 exit;
1516 } catch (\InstagramAPI\Exception\ThrottledException $e) {
1517 $Log = new LogModel();
1518 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("You sent too many API requests"))->set("data.error.details", __("We will take a 12 hours break for mass voting and after that try all again. You reached Instagram limits. If you are using another type of automation, you should downcrease massvoting speed and find you golden ratio."))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.debug.info", "Section #1")->save();
1519 $Log = NULL;
1520 unset($Log);
1521 $sc->set("is_active", 1)->set("schedule_date", date("Y-m-d H:i:s", time() + 43200))->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
1522 exit;
1523 } catch (Exception $e) {
1524 $Log = new LogModel();
1525 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("An error occurred during mass voting"))->set("data.error.details", $e->getMessage())->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
1526 $Log = NULL;
1527 unset($Log);
1528 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
1529 exit;
1530 }
1531 }
1532 if (isset($followers_ids[$i])) {
1533 $ids[] = $followers_ids[$i];
1534 }
1535 $i++;
1536 }
1537 if ($data[$key]["max_id"] == NULL) {
1538 $data[$key] = NULL;
1539 unset($data[$key]);
1540 }
1541 }
1542 } catch (\InstagramAPI\Exception\RequestException $e) {
1543 $Log = new LogModel();
1544 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", "@" . $d["value"] . " " . __("not found"))->set("data.error.details", __("Username is incorrect or maybe user blocked you (login to Instagram website or mobile app and check that)."))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.pid", $sc->get("process_id"))->save();
1545 $Log = NULL;
1546 unset($Log);
1547 $data[$key] = NULL;
1548 unset($data[$key]);
1549 } catch (Exception $e) {
1550 throw $e;
1551 }
1552 }
1553 } catch (\InstagramAPI\Exception\NetworkException $e) {
1554 $Log = new LogModel();
1555 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("We couldn't connect to Instagram at the moment. We will try to connect again."))->set("data.error.details", $e->getMessage())->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
1556 $Log = NULL;
1557 unset($Log);
1558 sleep(7);
1559 } catch (\InstagramAPI\Exception\EmptyResponseException $e) {
1560 $Log = new LogModel();
1561 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Instagram sent us empty response. We will try again."))->set("data.error.details", $e->getMessage())->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
1562 $Log = NULL;
1563 unset($Log);
1564 sleep(7);
1565 } catch (\InstagramAPI\Exception\LoginRequiredException $e) {
1566 $Log = new LogModel();
1567 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Re-login required"))->set("data.error.details", __("Please login again to your Instagram account."))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
1568 $Log = NULL;
1569 unset($Log);
1570 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
1571 $Account->set("login_required", 1)->save();
1572 exit;
1573 } catch (\InstagramAPI\Exception\ChallengeRequiredException $e) {
1574 $Log = new LogModel();
1575 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Challenge required"))->set("data.error.details", __("Please login again and pass verification challenge. Instagram will send you a security code to verify your identity."))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
1576 $Log = NULL;
1577 unset($Log);
1578 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
1579 $Account->set("login_required", 1)->save();
1580 exit;
1581 } catch (\InstagramAPI\Exception\CheckpointRequiredException $e) {
1582 $Log = new LogModel();
1583 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Checkpoint required"))->set("data.error.details", __("Please go to Instagram website or mobile app and pass checkpoint!"))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
1584 $Log = NULL;
1585 unset($Log);
1586 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
1587 $Account->set("login_required", 1)->save();
1588 exit;
1589 } catch (\InstagramAPI\Exception\AccountDisabledException $e) {
1590 $Log = new LogModel();
1591 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Account disabled"))->set("data.error.details", __("Your account has been disabled for violating Instagram terms. <a href='%s'>Click here</a> to learn how you may be able to restore your account.", "https://help.instagram.com/contact/1652567838289083"))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
1592 $Log = NULL;
1593 unset($Log);
1594 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
1595 exit;
1596 } catch (\InstagramAPI\Exception\ConsentRequiredException $e) {
1597 $Log = new LogModel();
1598 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Instagram updated Terms and Data Policy"))->set("data.error.details", __("Please go to <a href='https://instagram.com' target='_blank'>Instagram</a> website or mobile app to review these changes and accept them. After that try again."))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
1599 $Log = NULL;
1600 unset($Log);
1601 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
1602 exit;
1603 } catch (\InstagramAPI\Exception\SentryBlockException $e) {
1604 $Log = new LogModel();
1605 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("API access restricted"))->set("data.error.details", __("Access to Instagram API restricted for spam behavior or otherwise abusing."))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
1606 $Log = NULL;
1607 unset($Log);
1608 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
1609 exit;
1610 } catch (\InstagramAPI\Exception\ThrottledException $e) {
1611 $Log = new LogModel();
1612 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("You sent too many API requests"))->set("data.error.details", __("We will take a 12 hours break for mass voting and after that try all again. You reached Instagram limits. If you are using another type of automation, you should downcrease mass voting speed and find you golden ratio."))->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.debug.info", "Section #2")->save();
1613 $Log = NULL;
1614 unset($Log);
1615 $sc->set("is_active", 1)->set("schedule_date", date("Y-m-d H:i:s", time() + 43200))->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
1616 exit;
1617 } catch (Exception $e) {
1618 $Log = new LogModel();
1619 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("An error occurred during hypervote"))->set("data.error.details", $e->getMessage())->set("data.debug.message", $e->getMessage())->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->save();
1620 $Log = NULL;
1621 unset($Log);
1622 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
1623 exit;
1624 }
1625 }
1626 if (empty($data)) {
1627 $Log = new LogModel();
1628 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("All stories related to the targets completed."))->set("data.error.details", __("Starting the new loop."))->set("data.debug.getReelsMediaFeed", $counter1)->set("data.debug.getLiker", $counter3)->set("data.debug.getFollowers", $counter5)->set("data.debug.delay", $delay)->set("data.debug.votePollStory", $votePollStory_counter)->set("data.debug.voteSliderStory", $voteSliderStory_counter)->set("data.debug.answerStoryQuestion", $answerStoryQuestion_counter)->set("data.debug.voteQuizStory", $voteQuizStory_counter)->set("data.pid", $sc->get("process_id"))->save();
1629 $Log = NULL;
1630 unset($Log);
1631 $sc->set("is_active", 1)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->save();
1632 exit;
1633 }
1634 } else {
1635 $Log = new LogModel();
1636 $Log->set("user_id", $User->get("id"))->set("account_id", $Account->get("id"))->set("status", "error")->set("data.error.msg", __("Speed for hypervote not defined"))->set("data.pid", $sc->get("process_id"))->save();
1637 $Log = NULL;
1638 unset($Log);
1639 $sc->set("is_active", 0)->set("process_id", 0)->set("is_running", 0)->set("is_executed", 0)->set("data.estimated_speed", 0)->save();
1640 exit;
1641 }
1642 }
1643 $decoder_beta_not_finish += ["rank_token" => \InstagramAPI\Signatures::generateUUID(), "users_count" => 0, "max_id" => NULL, "begin_gf" => NULL];
1644 }
1645}
1646
1647?>