Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- *
- * @ This file is created by http://DeZender.Net
- * @ deZender (PHP7 Decoder for ionCube Encoder)
- *
- * @ Version : 4.0.9.0
- * @ Author : DeZender
- * @ Release on : 08.08.2019
- * @ Official site : http://DeZender.Net
- *
- */
- namespace Plugins\MassVoting;
- require_once PLUGINS_PATH . '/' . IDNAME . '/vendor/autoload.php';
- require_once PLUGINS_PATH . '/' . IDNAME . '/models/LogModel.php';
- require_once PLUGINS_PATH . '/' . IDNAME . '/models/StatModel.php';
- require_once PLUGINS_PATH . '/' . IDNAME . '/models/ScheduleModel.php';
- if (!defined('APP_VERSION')) {
- exit('Yo, what\'s up?');
- }
- class HypervoteController extends \Controller
- {
- public function process()
- {
- set_time_limit(0);
- ini_set('memory_limit', '-1');
- $Route = $this->getVariable('Route');
- if (isset($Route->params->account_id) && isset($Route->params->user_id)) {
- $account_id = $Route->params->account_id;
- $user_id = $Route->params->user_id;
- }
- else {
- exit();
- }
- error_log('Process Starting for Account ID:' . $account_id . ' & User ID:' . $user_id);
- $this->run($account_id, $user_id);
- }
- private function run($account_id, $user_id)
- {
- ignore_user_abort(true);
- set_time_limit(0);
- $Log = new LogModel();
- $Account = \Controller::model('Account', $account_id);
- $User = \Controller::model('User', $user_id);
- $sC = new ScheduleModel(['account_id' => $account_id, 'user_id' => $user_id]);
- if ($sC->get('is_executed')) {
- echo 'Hypervote loop already started.';
- exit();
- }
- else {
- $sC->set('is_executed', 1)->save();
- }
- $pid = $sC->get('process_id');
- if ($pid) {
- $process = \dgr\nohup\Process::loadFromPid($pid);
- if ($process->isRunning()) {
- $process->stop();
- }
- error_log('PID Check Complete');
- }
- $pid = getmypid();
- $sC->set('process_id', $pid)->save();
- $Log->set('user_id', $User->get('id'))->set('account_id', $Account->get('id'))->set('status', 'error');
- $targets = json_decode($sC->get('target'), true);
- if (is_null($targets)) {
- $sC->set('is_active', 0)->set('process_id', 0)->set('is_running', 0)->set('is_executed', 0)->save();
- exit();
- }
- if (count($targets) < 1) {
- $Log->set('data.error.msg', 'Couldn\'t find any target to view story media')->save();
- $sC->set('process_id', 0)->set('is_running', 0)->set('is_executed', 0)->save();
- exit();
- }
- try {
- $ig = \InstagramController::login($Account);
- }
- catch (\InstagramAPI\Exception\NetworkException $e) {
- $sC->set('schedule_date', date('Y-m-d H:i:s', time() + 7))->save();
- $sC->set('process_id', 0)->set('is_running', 0)->set('is_executed', 0)->save();
- exit();
- }
- catch (\InstagramAPI\Exception\EmptyResponseException $e) {
- $sC->set('schedule_date', date('Y-m-d H:i:s', time() + 7))->save();
- $sC->set('process_id', 0)->set('is_running', 0)->set('is_executed', 0)->save();
- exit();
- }
- catch (\Exception $e) {
- if ($Account->get('login_required')) {
- $sC->set('is_active', 0)->set('process_id', 0)->set('is_running', 0)->set('is_executed', 0)->save();
- $Log->set('data.error.msg', __('Hypervote has been stopped'));
- }
- else {
- $sC->set('process_id', 0)->set('is_running', 0)->set('is_executed', 0)->save();
- $sC->set('schedule_date', date('Y-m-d H:i:s', time() + 15))->save();
- $Log->set('data.error.msg', __('Hypervote re-scheduled'));
- }
- $Log->set('data.error.details', $e->getMessage())->save();
- exit();
- }
- $data = [];
- for ($i = 0; $i < count($targets); $i++) {
- $data[$i] = ['type' => $targets[$i]['type'], 'id' => $targets[$i]['id'], 'value' => $targets[$i]['value']];
- }
- $Settings = settings();
- $license = $Settings->get('data.license');
- if ($license == 'invalid') {
- $Log = new LogModel();
- $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();
- $Log = NULL;
- unset($Log);
- $sC->set('is_active', 0)->set('is_running', 0)->set('process_id', 0)->set('is_executed', 0)->save();
- exit();
- }
- $this->hypervote($Account, $User, $data, $ig);
- }
- private function hypervote($Account, $User, $data, $ig)
- {
- ini_set('memory_limit', '-1');
- set_time_limit(0);
- $begin = $begin_f = $begin_login = $begin_ms = $begin_ms2 = $last_throttled_poll = $last_throttled_quiz = $last_throttled_slider = $last_throttled_question = $last_throttled_countdown = $last_throttled_mass_view = $now_ms = $last_throttled_type = $disabled_view = $activated_view = time();
- $st_count = $st_count_seen = $stats_count = $speed = $delitel = $counter1 = $counter2 = $counter3 = $counter4 = $counter5 = $delta = $stories = $action_count = $likers_list = $votePollStory_counter = $voteSliderStory_counter = $answerStoryQuestion_counter = $voteQuizStory_counter = $mass_story_view_counter = $follow_c_count = $sC = $Log = $get_from_follow = $mediaFeed = $followers = $mediaId = $action_stats_count = $actions_count = $response = $reel = $countdown_counter = $vote = $story = NULL;
- $stories = $likers_list = $targets_array = $follower_ids = [];
- $poll_throttled = $mass_act = $quiz_throttled = $slider_throttled = $question_throttled = $mass_view_throttled = $countdown_throttled = $get_from_likers = false;
- $fresh_stories_range = $fresh_stories = $index_new = $index_old = 0;
- $usfile = PLUGINS_PATH . '/' . IDNAME . '/temp/' . $Account->get('id') . '-user-exclude.txt';
- $Log = new LogModel();
- $sC = new ScheduleModel(['account_id' => $Account->get('id'), 'user_id' => $User->get('id')]);
- $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();
- $Log = NULL;
- unset($Log);
- $targets_array = $data;
- shuffle($targets_array);
- for ($i = 0; $i < count($targets_array); $i++) {
- $data[$i] += ['rank_token' => \InstagramAPI\Signatures::generateUUID(), 'users_count' => 0, 'max_id' => NULL, 'begin_gf' => NULL];
- }
- $poll_answer_option = $sC->get('poll_answer_option');
- if ($sC->get('speed')) {
- $settings = settings();
- $maximum_speed = $settings->get('data.maximum_speed');
- if (empty($maximum_speed)) {
- $maximum_speed = 'maximum';
- }
- $speed_max_delay = 13;
- $package_modules = $User->get('settings.modules');
- $is_high_speed_enabled = (in_array('hypervote-high-speed', $package_modules) ? true : false);
- if ($is_high_speed_enabled) {
- $speed_max_delay = 13;
- }
- $speed == 'maximum' ? $delay = $speed_max_delay : $del = (int) $sC->get('speed');
- $delay = 13;
- }
- else {
- $Log = new LogModel();
- $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();
- $Log = NULL;
- unset($Log);
- $sC->set('is_active', 0)->set('process_id', 0)->set('is_running', 0)->set('is_executed', 0)->set('data.estimated_speed', 0)->save();
- exit();
- }
- do {
- foreach ($data as $key => $d) {
- try {
- if ($d['max_id'] == NULL) {
- $is_gf_first = 1;
- }
- sleep(1);
- if (!empty($d['begin_gf'])) {
- $current_time = time();
- if (($current_time - $d['begin_gf']) < 5) {
- $sleep_time = (5 - $current_time - $d['begin_gf']) + mt_rand(1, 3);
- }
- sleep(3);
- }
- if ($Account->get('login_required')) {
- $Log = new LogModel();
- $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', __('Re-login is required for the account.'))->set('data.pid', $sC->get('process_id'))->save();
- $Log = NULL;
- unset($Log);
- $sC->set('is_active', 0)->set('is_running', 0)->set('process_id', 0)->set('is_executed', 0)->save();
- exit();
- }
- if (!$User->isAvailable() || !$User->get('is_active') || $User->isExpired()) {
- $Log = new LogModel();
- $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', __('User account is either disabled or expired.'))->set('data.pid', $sC->get('process_id'))->save();
- $Log = NULL;
- unset($Log);
- $sC->set('is_active', 0)->set('is_running', 0)->set('process_id', 0)->set('is_executed', 0)->save();
- exit();
- }
- if ($User->get('id') != $Account->get('user_id')) {
- $sC->set('is_active', 0)->set('is_running', 0)->set('process_id', 0)->set('is_executed', 0)->save();
- exit();
- }
- $user_modules = $User->get('settings.modules');
- if (!is_array($user_modules) || !in_array(IDNAME, $user_modules)) {
- $Log = new LogModel();
- $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();
- $Log = NULL;
- unset($Log);
- $sC->set('is_active', 0)->set('is_running', 0)->set('process_id', 0)->set('is_executed', 0)->save();
- exit();
- }
- if ($d['type'] == 'people_getliker') {
- if (!$get_from_follow) {
- try {
- $data[$key]['begin_gf'] = time();
- unset($mediaFeed);
- $mediaFeed = NULL;
- $mediaFeed = $ig->timeline->getUserFeed($d['id'], $d['max_id']);
- }
- catch (\InstagramAPI\Exception\NotFoundException $e) {
- $Log = new LogModel();
- $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.pid', $sC->get('process_id'))->save();
- $Log = NULL;
- unset($Log);
- $data[$key] = NULL;
- unset($data[$key]);
- continue;
- }
- catch (\InstagramAPI\Exception\RequestException $e) {
- $Log = new LogModel();
- $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.pid', $sC->get('process_id'))->save();
- $Log = NULL;
- unset($Log);
- $data[$key] = NULL;
- unset($data[$key]);
- continue;
- }
- catch (\InstagramAPI\Exception\ThrottledException $e) {
- $followers = NULL;
- unset($followers);
- $data[$key]['begin_gf'] = time();
- $followers = $ig->people->getFollowers($d['id'], $d['rank_token'], NULL, $d['max_id']);
- $counter3 += 1;
- sleep(1);
- $get_from_user = true;
- }
- catch (Exception $e) {
- throw $e;
- }
- sleep(1);
- $counter3 += 1;
- unset($items);
- $items = NULL;
- $items = $mediaFeed->getItems();
- if (empty($items)) {
- $Log = new LogModel();
- $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.pid', $sC->get('process_id'))->save();
- $Log = NULL;
- unset($Log);
- $mediaFeed = NULL;
- unset($mediaFeed);
- $data[$key] = NULL;
- unset($data[$key]);
- continue;
- }
- $counter3 += 1;
- sleep(1);
- $liker_list = NULL;
- unset($likers_list);
- $likers_list = [];
- $data[$key]['max_id'] = $mediaFeed->getNextMaxId();
- foreach ($items as $item) {
- try {
- $mediaId = $item->getId();
- $likers_list[] = $ig->media->getLikersChrono($mediaId);
- if (empty($likers_list)) {
- $Log = new LogModel();
- $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.pid', $sc->get('process_id'))->save();
- $Log = NULL;
- unset($Log);
- $data[$key] = NULL;
- unset($data[$key]);
- unset($liker_list);
- $likers_list = NULL;
- $likers_list = [];
- continue;
- }
- }
- catch (\InstagramAPI\Exception\ThrottledException $e) {
- $get_from_follow = true;
- sleep(1);
- }
- }
- }
- if ($get_from_follow) {
- try {
- $data[$key]['begin_gf'] = time();
- $followers = $ig->people->getFollowers($d['pk'], $d['rank_token'], NULL, $d['max_id']);
- ....................................................................................................
- ......................................................
- .......................
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement