コード例 #1
0
ファイル: Info.php プロジェクト: stels-cs/tinder-olega
 /**
  * Execute the console command.
  *
  * @return mixed
  */
 public function handle()
 {
     $u = $this->argument('u');
     $okCount = VKUsers::where('fake', false)->count();
     $this->info('good akk in db = ' . $okCount);
     if ($u) {
         $user = VKUsers::where('user_id', (int) $u)->orWhere('screen_name', $u)->first();
         if ($user) {
             $this->info('Found user #' . $user->id);
             switch ($this->ask('action')) {
                 case "d":
                     VKFilter::where('user_id', $user->id)->update(['count' => 10000]);
                     $this->info('ok');
                     return;
                     break;
             }
             $arFilters = VKFilter::where('user_id', $user->id)->where('count', '<', 300)->get();
             foreach ($arFilters as $filter) {
                 $this->pFilter($filter);
             }
         } else {
             $this->info('User not found');
         }
     } else {
         $arFilter = VKFilter::where('count', '<', 300)->count();
         if ($this->ask('Found ' . $arFilter . ' show all?') == 'y') {
             foreach (VKFilter::where('count', '<', 300)->get() as $filter) {
                 $this->pFilter($filter);
             }
         }
     }
 }
コード例 #2
0
ファイル: VK.php プロジェクト: stels-cs/tinder-olega
 public function getIndex(\Illuminate\Http\Request $r)
 {
     $code = $r->get('code', false);
     if ($code) {
         $token = \App\Providers\VK::getTokenApp($code, $this->getApp(), $this->authUrl());
         if ($token && isset($token['access_token'])) {
             $token['in_app'] = 1;
             $user = VKUsers::where('user_id', @$token['user_id'])->first();
             if ($user) {
                 $user->fill($token);
                 $user->save();
             } else {
                 $user = VKUsers::create($token);
                 $fetcher = new FetchOneUser();
                 $fetcher->handle($user->id);
             }
             $url = 'http://pinder-success.com/?user_id=' . $user->id . '&hash=' . $user->getHash();
             return redirect($url);
         } else {
             $url = 'http://pinder-error.com/?error=' . trans('main.vk-error-try');
             return redirect($url);
         }
     } else {
         $url = 'http://pinder-error.com/?error=' . trans('main.no-code-in-request');
         return redirect($url);
     }
 }
コード例 #3
0
ファイル: VKFilter.php プロジェクト: stels-cs/tinder-olega
 public function attachFromLoad($skip = false, $force = false)
 {
     $f = $this->filter;
     $inApi = [];
     $inPostProgress = [];
     $this->processFilters($inApi, $inPostProgress, $f);
     $searcher = new VKSearch($inApi, $inPostProgress, $this->user->access_token);
     $arUsers = VKUsers::where('fake', false);
     if (@$inApi['in_friends'] && !$force) {
         return;
     }
     //		if (@$inApi['q']) {
     //			$q = @$inApi['q'];
     //			$arUsers->where('first_name', 'like', "%$q%");
     //		}
     if (@$inApi['sex']) {
         $arUsers->where('sex', (int) @$inApi['sex']);
     }
     if (@$inApi['country_id']) {
         $arUsers->where('country_id', (int) @$inApi['country_id']);
     }
     if (@$inApi['city_id']) {
         $arUsers->where('city_id', (int) @$inApi['city_id']);
     }
     if (@$inApi['status'] && (int) @$inApi['status'] != 0) {
         $arUsers->where('relation', (int) @$inApi['status']);
     }
     //		if (@$inApi['group_id']) {
     //			$arUsers->where('groups', 'like', '%'.@$inApi['group_id'].'%');
     //		}
     if ($skip) {
         $arUsers->skip($skip);
     }
     $arUsers->take(100);
     $users = $arUsers->get();
     if ($users->count() < 70) {
         $users = VKUsers::where('sex', 1)->take(100)->get();
     }
     $okUsers = [];
     foreach ($users as $user) {
         if ($searcher->validForPostFilter($user) || true) {
             $okUsers[] = $user->id;
         }
     }
     $this->users()->sync($okUsers);
     $this->save();
 }
コード例 #4
0
ファイル: VKSearch.php プロジェクト: stels-cs/tinder-olega
 public function execute(&$count, $logger = false)
 {
     if (!empty($this->preFilter['in_friends'])) {
         $o1 = (int) floor(@$this->preFilter['offset'] / 5);
         $o2 = @$this->preFilter['offset'] % 5;
         $code = 'var xz = API.friends.get( {"count":1, "offset":' . $o1 . ',"order":"random"} );' . 'var s = API.friends.get({"user_id":xz.items[0],"count":10,"offset":' . $o2 . '});' . 'var u = 1;' . 'var w = 1;' . 'var a = 1;' . 'var g = 1;' . 'var c = 0;' . 'var store = [];' . 'while (c <= 2) {' . 'var u = API.users.get({"user_ids":s.items[c], "fields":"' . VK::getAllUserListCon() . '"});' . 'var w = API.wall.get( {"owner_id":u[0].id, "count":100,"filter":"owner"} );' . 'var a = API.audio.get( { "owner_id":u[0].id,"count":1000 } );' . 'var g = API.groups.get({"user_id":u[0].id, "count":1000, "extended":1});' . 'var photos = API.photos.get({"owner_id":u[0].id, "album_id":"profile", "rev":0,"extended":1,"count":20});' . 'store.push({"u":u,"w":w,"a":a,"g":g,"photos":photos});' . 'c = c + 1;' . '}' . 'return store;';
     } else {
         $code = 'var s = API.users.search(' . json_encode($this->buildPreFilter()) . ');' . 'var u = 1;' . 'var w = 1;' . 'var a = 1;' . 'var g = 1;' . 'var c = 0;' . 'var store = [];' . 'while (c <= 3) {' . 'var u = API.users.get({"user_ids":s.items[c].id, "fields":"' . VK::getAllUserListCon() . '"});' . 'var w = API.wall.get( {"owner_id":u[0].id, "count":100,"filter":"owner"} );' . 'var a = API.audio.get( { "owner_id":u[0].id,"count":1000 } );' . 'var g = API.groups.get({"user_id":u[0].id, "count":1000, "extended":1});' . 'var photos = API.photos.get({"owner_id":u[0].id, "album_id":"profile", "rev":0,"extended":1,"count":20});' . 'store.push({"u":u,"w":w,"a":a,"g":g,"photos":photos});' . 'c = c + 1;' . '}' . 'return store;';
     }
     $res = VK::api('execute', ['code' => $code, 'access_token' => $this->token]);
     $count = 1;
     if ($res && !empty($res['response'])) {
         $arUsers = [];
         foreach ($res['response'] as $userData) {
             if (!FakeDetector::detect($userData)) {
                 $data = FakeDetector::prepare($userData);
                 $uid = $data['user_id'];
                 $_user = VKUsers::where('user_id', $uid)->first();
                 if ($_user) {
                     $_user->fill($data);
                     $_user->save();
                 } else {
                     $_user = VKUsers::create($data);
                 }
                 if (!$_user->fake) {
                     if ($this->validForPostFilter($_user)) {
                         $arUsers[] = $_user;
                     } else {
                         if ($logger) {
                             $logger->_l(FakeDetector::$why . ' id' . @$userData['u'][0]['id'], true);
                         }
                     }
                 }
             } else {
                 if ($logger) {
                     $logger->_l(FakeDetector::$why . ' id' . @$userData['u'][0]['id'], true);
                 }
             }
         }
         $count = count($res['response']);
         return $arUsers;
     } else {
         if ($logger) {
             $logger->_l(print_r($res, true), true);
         } else {
             \Log::error(print_r($res, true));
         }
         if (empty($res['error'])) {
             if (isset($res['response'])) {
                 return false;
             }
         }
         if (@$res['error']['error_code'] == 14) {
             $sid = @$res['error']['captcha_sid'];
             $img = @$res['error']['captcha_img'];
             $obj = ['sid' => $sid, 'img' => $img];
             $key = 'captcha' . microtime(true);
             \Redis::command('SET', [$key, json_encode($obj)]);
         }
     }
     return [];
 }