| 
<?phpuse GuzzleHttp\Client;
 use Psr\Http\Message\ResponseInterface;
 use GuzzleHttp\Exception\RequestException;
 
 use Symfony\Component\Console\Output\ConsoleOutput;
 use Symfony\Component\Console\Formatter\OutputFormatter;
 use Symfony\Component\Console\Helper\ProgressBar;
 
 $output = new ConsoleOutput();
 $output -> setFormatter(new OutputFormatter(true));
 
 $progress_bar = null;
 
 function fix_download_apk() {
 $path = "./helper/files/apkmirror/";
 
 $file_path = "./helper/files/apkmirror/error_download_list.txt";
 $apks = array();
 
 if(file_exists($file_path)) {
 $handle = fopen($file_path, "r");
 
 $index = 0;
 while(!feof($handle)) {
 $download_url = fgets($handle, 4096);
 $apks[$index] = $download_url;
 $index++;
 }
 
 foreach($apks as $value) {
 request_download_link($path, $file_path, $value);
 }
 
 fclose($handle);
 }
 
 $path = "./helper/files/androidapksfree/";
 
 $file_path = "./helper/files/androidapksfree/error_download_list.txt";
 
 if(file_exists($file_path)) {
 $handle = fopen($file_path, "r");
 
 $apks = array();
 $index = 0;
 while(!feof($handle)) {
 $download_url = fgets($handle, 4096);
 $apks[$index] = $download_url;
 $index++;
 }
 
 foreach($apks as $value) {
 $url = rawurldecode($value);
 
 $url_arr = explode("&body=", $url);
 $url_len = count($url_arr);
 
 if($url_len != 0) {
 $url = $url_arr[$url_len - 1];
 $value = $url;
 }
 
 $value = str_replace(".nope", "", $value);
 
 request_download_link($path, $file_path, $value);
 }
 
 fclose($handle);
 }
 }
 
 function request_download_link($path, $file_path, $link) {
 
 $client = new Client(['headers' => ['Keep-Alive' => '1000', 'Connection' => 'keep-alive']]);
 $resource = fopen($path . , 'w+');
 
 global $output;
 initial_bar();
 
 try {
 $response = $client -> request('GET', $url . $link, ["verify" => false, "sink" => $resource, 'progress' =>
 function ($download_size, $downloaded_size, $upload_size, $uploaded_size) {
 // present the progress string
 if($download_size !=0) {
 $number = round(100 - (abs($download_size - $downloaded_size - 100) / $download_size * 100), 2);
 //echo "Progress: " . round(100 - (abs($download_size - $downloaded_size - 100) / $download_size * 100), 2) . "%\n";
 global $progress_bar;
 $progress_bar -> setProgress((int)$number);
 }
 }
 ]);
 
 global $progress_bar;
 $progress_bar -> finish();
 file_put_contents($file_lists_path, $file_name . "\r\n", FILE_APPEND);
 }
 catch(Exception $e) {
 $output -> writeln($e -> getMessage());
 }
 }
 
 function get_file_name($url) {
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_HEADER, TRUE);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 $response = curl_exec($ch);
 $last_url = curl_getinfo($ch, CURLINFO_REDIRECT_URL);
 curl_close($ch);
 $arr = explode("/", $last_url);
 $file_name = $arr[count($arr) - 1];
 return $file_name;
 }
 
 //initial progress bar
 function initial_bar() {
 global $progress_bar;
 global $output;
 $output -> writeln('');
 
 $progress_bar = new ProgressBar($output, 100);
 $progress_bar -> setOverwrite(true);
 $progress_bar -> start();
 }
 ?>
 |