/** * Execute the console command. * * @return mixed */ public function handle($uid = false) { if ($uid == false) { $id = $this->argument('id'); } else { $id = $uid; } $user = VKUsers::findOrFail($id); $this->_l('Start for user #' . $id); $execute = 'var u = API.users.get({"user_ids":"' . $user->user_id . '", "fields":"' . implode(',', \App\Providers\VK::getAllUserList()) . '"});' . '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});' . 'return {"u":u,"w":w,"a":a,"g":g,"photos":photos};'; $response = \App\Providers\VK::api('execute', ['code' => $execute, 'access_token' => $user->access_token]); if ($response && isset($response['response'])) { $data = \App\Providers\FakeDetector::prepare($response['response']); $user->fill($data); if (!\App\Providers\FakeDetector::detect($response['response'])) { $user->fake = true; } $user->save(); } else { if (@$response['error']['error_code'] == 14) { $sid = @$response['error']['captcha_sid']; $img = @$response['error']['captcha_img']; $obj = ['sid' => $sid, 'img' => $img]; $key = 'captcha' . microtime(true); \Redis::command('SET', [$key, json_encode($obj)]); } $this->_e(get_class($this) . ' No response for user #' . $user->id . ' ' . print_r(array_keys($response), true)); } $this->_l('ok'); }
public function getIndex(Request $r) { $code = $r->get('code', false); $state = $r->get('state', false); if ($code && $state) { $token = \App\Providers\VK::getToken($code, $state); if ($token) { $token['app_id'] = $state; $_token = VKTokens::where('user_id', @$token['user_id'])->where('app_id', $state)->first(); if ($_token) { $_token->fill($token); $_token->save(); } else { VKTokens::create($token); } return 'ok'; } else { return 'Error when fetching token'; } } else { throw new \Exception('code or state not found'); } }
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 []; }
/** * Execute the console command. * * @return mixed */ public function handle() { // $country = \App\Providers\VK::api('database.getCountries', ['need_all'=>'1', 'count'=>1000]); // if ($country['response']) { // file_put_contents(public_path('country.json'), json_encode($country['response']['items'])); // // $c = $country['response']; // $arCityG = []; // //Андорра // //Аруба // //Афганистан // //Болгария // //Бразилия // $notLoad = []; // $x = 0; // $pack = []; // foreach ($c['items'] as $country) { // // $pack[] = $country['id']; // // if (count($pack) > 22) { // // $code = 'var r = [];'; // // foreach($pack as $line) { // $code .= 'r.push( {"'.$line.'":API.database.getCities({"country_id":'.$line.',"need_all":0,"count":1000})});'; // } // $code .= "return r;"; // // // $data = \App\Providers\VK::api('execute', ['code'=>$code, 'access_token'=>'a797624385417fb062f275cd3330ee53b9f9aaa4987427ffc99dd5ecd25692713d1de6c7cc1664698cbfe']); // if (@$data['response']) { // foreach ($data['response'] as $cityPack) { // foreach($cityPack as $countryId=>$arCity) { // foreach($arCity['items'] as &$city) { // $city['country_id'] = $countryId; // } // $arCityG = array_merge($arCityG, $arCity['items']); // $this->info('Country: '.$countryId); // } // } // } else { // dd($data); // } // $pack = []; // sleep(2); // } // // } // file_put_contents(public_path('city.json'), json_encode($arCityG)); // dd($notLoad); // } else { // $this->info('fail load country'); // } $citys = file_get_contents(public_path('city.json')); $citys = json_decode($citys, true); $arUni = []; foreach ($citys as $city) { if ($city['country_id'] == 1) { $this->info($city['title']); $uni = \App\Providers\VK::api('database.getUniversities', ['count' => 10000, 'city_id' => $city['id']]); $uni['response']['items'] = array_map(function ($x) use($city) { $x['city_id'] = $city['id']; return $x; }, $uni['response']['items']); $arUni = array_merge($arUni, $uni['response']['items']); sleep(1); } } file_put_contents(public_path('universities.json'), json_encode($arUni)); }
<?php /* |-------------------------------------------------------------------------- | Application Routes |-------------------------------------------------------------------------- | | Here is where you can register all of the routes for an application. | It's a breeze. Simply tell Laravel the URIs it should respond to | and give it the controller to call when that URI is requested. | */ Route::get('/', function () { return view('welcome'); }); Route::get('/auth', function () { return view('auth', ['links' => \App\Providers\VK::getLinks()]); }); Route::controller('vk', 'VkController'); Route::controller('api/vk', 'API\\VK'); Route::resource('api/filter', 'API\\Filter'); Route::controller('api/user', 'API\\User'); Route::get('/app', function () { return view('angular'); });
public function getAuthUrl() { $url = \App\Providers\VK::buildUrl($this->getApp(['friends', 'photos', 'audio', 'video', 'status', 'groups', 'notifications', 'offline']), $this->authUrl()); return redirect($url); // return response()->json(['url'=>$url]); }