PHPize Online / SQLize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
CREATE TABLE test_table ( id int, test_parameter varchar(64) );
Copy Clear
Copy Format Clear
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Plan; use App\Language; use App\User; use App\UserFile; use App\Translation; use App\ProfessionalTranslationOrder; use App\Helpers\MediaHelper; use App\Helpers\GoogleHelper; use App\Helpers\WordHelper; use App\Helpers\ExcelHelper; use App\Helpers\InDesignHelper; use App\Helpers\PowerPointHelper; use Illuminate\Support\Str; use Illuminate\Support\Facades\Storage; use App\Jobs\ProcessTranscript; use PDF; use PhpOffice\PhpWord\PhpWord; use PhpOffice\PhpWord\IOFactory as WordWriter; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; use YouTube\YouTubeDownloader; use YouTube\YoutubeStreamer; use Smalot\PdfParser\Parser; use dataplan\pdfStreamDecode\stream; use Dompdf\Dompdf; use Illuminate\Support\Facades\Mail; use App\Mail\ProfessionalTranslationOrder as ProfessionalTranslationOrderMail; use App\Mail\TranslationComplete; use App\Mail\TranslationEstimateComplete; use thiagoalessio\TesseractOCR\TesseractOCR; // use ZipArchive; // use DOMDocument; class TranslationController extends Controller { // public function __construct() { $this->middleware('auth'); $this->middleware('checkPlan'); $this->middleware('checkBlackList'); } public function index() { // $userId = auth()->user()->id; $user = auth()->user(); // echo auth()->user(); $languageModel = new Language(); $planModel = new Plan(); $languages = $languageModel->orderBy('name')->get(); // echo "<pre>"; // var_dump($languages[0]->code); // echo "</pre>"; // foreach ($languages as $language) { // echo $language->name."<br>"; // } $userFileModel = new UserFile(); $files = $userFileModel->where([ ['user_id','=',$user->id], ['is_active','=',1], ]) ->orderBy('id','desc')->get(); $newFiles = $userFileModel->where([ ['user_id','=',$user->id], ['is_active','=',1], ['status','=',"new"] ])->get(); $plan = $planModel->where('id',$user->plan_id)->first(); $trialDays = $user->getUserTrialDays($user->id); // $isEligibleForFreeTranslcriptions = $userFileModel->isEligibleForFreeTranslcriptions($user->id); $isEligibleForFreeTranslcriptions = false; return view('projects', [ "user" => $user, "languages" => $languages, "files" => $files, "newFilesCount" => 0,//count($newFiles), "plan" => $plan, "trialDays" => $trialDays, "isEligibleForFreeTranslcriptions" => $isEligibleForFreeTranslcriptions, "google_storage_original_files_public_path" => env("google_storage_original_files_public_path",""), ]); } // public function newProject(Request $request) // { // $request->validate([ // 'source_language' => 'required', // 'target_language' => 'required', // 'media_file' => 'required', // ]); // if ($request->hasFile('media_file')) { // $userId = auth()->user()->id; // $user = auth()->user(); // if( $request->hasFile('media_file')){ // $originalName = $request->media_file->getClientOriginalName(); // // $extension = $request->media_file->extension(); // $extension = $request->media_file->getClientOriginalExtension(); // $fileSize = $request->media_file->getSize(); // if(!in_array($extension, array("docx", "xlsx", "pptx", "pdf"))) // abort(400, "We only support MS Word (.docx), Excel (.xlsx), PowerPoint (.pptx) or Pdf (.pdf) file formats"); // if(intval($fileSize) > 20 * 1024 * 1024){ // abort(400, "Currently, we can translate files up to 20MB in size."); // } // $newFileName = Str::uuid().".".$extension; // GoogleHelper::uploadFile(env('google_storage_original_files_bucket_name',''), $newFileName, $request->media_file->path()); // $words = 0; // if($extension == "docx"){ // $segments = WordHelper::getSegmentsAll($request->media_file->path()); // }else if($extension == "xlsx"){ // $segments = ExcelHelper::getSegments($request->media_file->path()); // }else if($extension == "pptx"){ // $segments = PowerPointHelper::getSegmentsAll($request->media_file->path()); // }else if($extension == "pdf"){ // try{ // $parser = new \Smalot\PdfParser\Parser(); // $pdf = $parser->parseFile($request->media_file->path()); // $pdfPages = $pdf->getPages(); // $text = $pdf->getText(); // // if(count($pdfPages) > 20 || intval($fileSize) > 20 * 1024 * 1024){ // // abort(400, "Currently, we can translate PDF files up to 20 pages and 20MB in size."); // // } // if(count($pdfPages) <= 10) // Always do OCR for small pdf documents // $text = ""; // if(strlen($text) == 0){ // need OCR to count words // $languageModel = new Language(); // $language = $languageModel->where('code',$request->source_language)->first(); // if(!empty($language) && !empty($language->ocr_language)) // $ocrLanguage = $language->ocr_language; // else // $ocrLanguage = "eng"; // $segments = $this->getPdfOcrSegments($request->media_file->path(), $ocrLanguage); // }else{ // $segments = preg_split('/[\s]+/', $text); // } // }catch(\Exception $e){ // // var_dump($e->getMessage()); // GoogleHelper::deleteFile(env('google_storage_original_files_bucket_name',''), $newFileName); // abort(400, $e->getMessage()); // } // } // if(!empty($segments) && is_array($segments)){ // foreach($segments as $segment){ // $tempWords = explode(" ", $segment); // $words += count($tempWords); // } // }else{ // GoogleHelper::deleteFile(env('google_storage_original_files_bucket_name',''), $newFileName); // abort(400); // } // $planModel = new Plan(); // $plan = $planModel->where('id',$user->plan_id)->first(); // if($words > 2000) // $translationPrice = $words * $plan->translation_price; // else // $translationPrice = 0; // $professionalTranslationPrice = 0.20; // $professionalTranslationPriceTotal = $words * $professionalTranslationPrice; // if($professionalTranslationPriceTotal < 60) // minimum price for human translation // $professionalTranslationPriceTotal = 60; // if($extension == "pdf"){ // // $translationPrice = $professionalTranslationPriceTotal; // // $machinePrice = null; // $minPdfPrice = count($pdfPages) * 0.6; // $translationPrice = $words * $plan->translation_price; // if($translationPrice < $minPdfPrice) // minimum price for pdf translation // $translationPrice = $minPdfPrice; // $machinePrice = $translationPrice; // $minPdfProfessionalPrice = count($pdfPages) * 60; // if($professionalTranslationPriceTotal < $minPdfProfessionalPrice) // minimum price for pdf professional translation // $professionalTranslationPriceTotal = $minPdfProfessionalPrice; // }else{ // $machinePrice = $translationPrice; // } // $trialDays = $user->getUserTrialDays($userId); // $userFileModel = new UserFile(); // $userFileModel->insert([ // 'user_id'=>$userId, // 'source_language'=>$request->source_language, // 'target_language'=>$request->target_language, // 'original_name' => $originalName, // 'file_name' => $newFileName, // 'words' => $words, // 'price' => $translationPrice, // 'machine_price' => $machinePrice, // 'professional_price' => $professionalTranslationPriceTotal, // ]); // //email notification // $url = env("APP_URL")."/translations"; // Mail::to($user)->send(new TranslationEstimateComplete($user->name, $url)); // } // } // return redirect('translations'); // } // Modified by Charles 5/18/2022 private function getPdfOcrSegments($pdfPath, $lang){ if($stream == '/FlateDecode'){ $segments = []; $pdf = new \Spatie\PdfToImage\Pdf($pdfPath); $pages = $pdf->getNumberOfPages(); // var_dump($pages); $uuid = Str::uuid(); for($i = 1; $i <= $pages; $i++){ $imagePath = "tmp-img/".$uuid."_".$i.".jpg"; $saved = $pdf->setPage($i)->saveImage($imagePath); if($saved){ $text = (new TesseractOCR($imagePath)) ->lang($lang) ->threadLimit(1) ->run(); echo $text."<br>====<br>"; $segments += explode(" ", $text); $segments = array_merge($segments, preg_split('/[\s]+/', $text)); } if(file_exists($imagePath)) unlink($imagePath); } } return $segments; } public function translationProcess(Request $request) { $request->validate([ 'translation_type' => 'required', ]); $fileId = $request->id; $translationType = $request->translation_type; $user = auth()->user(); $userId = $user->id; $userFileModel = new UserFile(); $file = $userFileModel->where([ ['id','=',$fileId], ['user_id','=',$userId], ['status','=','new'], ])->first(); if($file){ // var_dump($file); if($translationType == "professional" && isset($file->professional_price)){ $file->price = $file->professional_price; $file->translation_type = "professional"; $file->save(); }else if($translationType == "machine" && isset($file->machine_price)){ $file->price = $file->machine_price; $file->translation_type = "machine"; $file->save(); } if($user->balance < $file->price) return redirect('translations/process/payment/error'); $filePath = 'tmp/'.$file->file_name; // $language = $file->language; // $speakers = $file->speakers; if(!file_exists($filePath)) GoogleHelper::downloadFile(env('google_storage_original_files_bucket_name',''), $file->file_name, $filePath); if(file_exists($filePath)){ // echo $filePath; // echo public_path(); return; $extension = pathinfo($filePath, PATHINFO_EXTENSION); $userModel = new User(); $userModel->deductBalance($userId, $file->price); $userFileModel->where([ ['id','=',$fileId], ])->update([ 'status'=>'progress' ]); if($translationType == "professional" && isset($file->professional_price)){ $professionalOrderModel = new ProfessionalTranslationOrder(); $professionalOrderId = $professionalOrderModel->insertGetId([ 'user_id'=>$userId, 'file_id'=>$file->id, ]); //TODO: send email $url = env("APP_URL")."/orders/manage"; $adminUsers = $userModel->where(['is_admin'=>1])->orWhere(['is_manager'=>1])->get(); forEach($adminUsers as $adminUser){ // notify admin users Mail::to($adminUser)->send(new ProfessionalTranslationOrderMail($professionalOrderId, $user->name, $user->email, $file->price, $file->original_name, $url)); } return view('project-process-professional', [ "file" => $file, ]); }else{ if($extension == "pdf" || ($extension == "docx" && $file->price > 0) || ($extension == "xlsx" && $file->price > 0)){ if($extension == "pdf") $result = GoogleHelper::translateLargePdfFile($file->file_name, $file->source_language, $file->target_language); else if($extension == "docx") $result = GoogleHelper::translateDocxFile($file->file_name, $file->source_language, $file->target_language); else if($extension == "xlsx") $result = GoogleHelper::translateExcelFile($file->file_name, $file->source_language, $file->target_language); if($result){ $userFileModel->where([ ['id','=',$fileId], ])->update([ 'status'=>'complete' ]); $userModel->updateBalance($userId); //email notification $url = env("APP_URL")."/translations/process/complete/".$file->id; //Mail::to($user)->send(new TranslationComplete($user->name, $url)); return redirect('/translations/process/complete/'.$fileId); }else{ $userFileModel->where([ ['id','=',$fileId], ])->update([ 'status'=>'failed' ]); $userModel->updateBalance($userId); // return view('project-process-failed'); } }else{ if($extension == "docx"){ // need to fix Word file before translating WordHelper::fixFile($filePath); sleep(1); }else if($extension == "pptx"){ // need to fix PowerPoint file before translating PowerPointHelper::fixFile($filePath); sleep(1); } return view('project-process', [ "file" => $file, ]); } } }else{ echo "file not found"; } }else{ return redirect('translations'); } } public function translationSegments(Request $request){ $fileId = $request->id; $userId = auth()->user()->id; $userFileModel = new UserFile(); $file = $userFileModel->where([ ['id','=',$fileId], ['user_id','=',$userId] ])->first(); if($file){ $filePath = 'tmp/'.$file->file_name; if(!file_exists($filePath)) GoogleHelper::downloadFile(env('google_storage_original_files_bucket_name',''), $file->file_name, $filePath); if(file_exists($filePath)){ $fileNameParts = explode(".",$file->original_name); $extension = array_pop($fileNameParts); if($extension == "docx") $segments = WordHelper::getSegments($filePath); else if($extension == "xlsx") $segments = ExcelHelper::getSegments($filePath); else if($extension == "pptx") $segments = PowerPointHelper::getSegments($filePath); else if($extension == "idml") $segments = InDesignHelper::getSegments($filePath); // var_dump($segments); // echo "Yes"; if($segments && is_array($segments)){ return view('google-translator', [ "file" => $file, "segments" => $segments, "coocke_domain_1" => env('COOCKIE_DOMAIN_1', ''), "coocke_domain_2" => env('COOCKIE_DOMAIN_2', ''), ]); }else{ echo "file can not be opened"; } }else{ echo "file not found"; } } } public function translationComplete(Request $request){ $fileId = $request->id; $userId = auth()->user()->id; $userFileModel = new UserFile(); $file = $userFileModel->where([ ['id','=',$fileId], ['user_id','=',$userId], ['status','=',"complete"], ])->first(); if($file){ $filePath = 'tmp/'.$file->file_name; if(!file_exists($filePath)) GoogleHelper::downloadFile(env('google_storage_translated_files_bucket_name',''), $file->file_name, $filePath); if(file_exists($filePath)){ return view('project-complete', [ "file" => $file, ]); }else{ echo "file not found"; } }else{ abort(404); } } public function translationDownload(Request $request){ $fileId = $request->id; $userId = auth()->user()->id; $userFileModel = new UserFile(); $file = $userFileModel->where([ ['id','=',$fileId], ['user_id','=',$userId], ['status','=',"complete"], ])->first(); if($file){ $filePath = 'tmp/translated_'.$file->file_name; // //Always download original file // GoogleHelper::downloadFile(env('google_storage_original_files_bucket_name',''), $file->file_name, $filePath); // if(file_exists($filePath)){ // $translationModel = new Translation(); // $segments = $translationModel->where('file_id', $fileId)->get(); // // echo count($segments); // $result = WordHelper::translateWordDocument($filePath, $segments); // if($result){ // $fileNameParts = explode(".",$file->original_name); // $extension = array_pop($fileNameParts); // $newFileName = implode(".",$fileNameParts)."_".$file->source_language."_".$file->target_language.".".$extension; // return response()->download($filePath, $newFileName); // } // }else{ // echo "file not found"; // } GoogleHelper::downloadFile(env('google_storage_translated_files_bucket_name',''), $file->file_name, $filePath); if(file_exists($filePath)){ $fileNameParts = explode(".",$file->original_name); $extension = array_pop($fileNameParts); $newFileName = implode(".",$fileNameParts)."_".$file->source_language."_".$file->target_language.".".$extension; return response()->download($filePath, $newFileName); }else{ // abort(404); /* temp solution. This code can be deleted later */ $translationModel = new Translation(); $segments = $translationModel->where('file_id', $fileId)->get(); $fileNameParts = explode(".",$file->original_name); $extension = array_pop($fileNameParts); $tempFileName = Str::uuid().".".$extension; $tempFilePath = "tmp/".$tempFileName; GoogleHelper::downloadFile(env('google_storage_original_files_bucket_name',''), $file->file_name, $tempFilePath); if(file_exists($tempFilePath)){ if($extension == "docx") $result = WordHelper::translateWordDocument($tempFilePath, $segments); else if($extension == "xlsx") $result = ExcelHelper::translateExcelDocument($tempFilePath, $segments); else if($extension == "idml") $result = InDesignHelper::translateIndesignDocument($tempFilePath, $segments); if($result){ GoogleHelper::uploadFile(env('google_storage_translated_files_bucket_name',''), $file->file_name, $tempFilePath); } $newFileName = implode(".",$fileNameParts)."_".$file->source_language."_".$file->target_language.".".$extension; return response()->download($tempFilePath, $newFileName); }else{ abort(404); } /* --- */ } }else{ abort(404); } } function tempPdf(){ //return PDF::loadFile('new3/new3-html.html')->save('my_stored_file.pdf')->stream('download.pdf'); echo realpath(base_path()); $dompdf = new Dompdf(); $dompdf->load_html_file('public/new3/new3-html.html'); // (Optional) Setup the paper size and orientation // $dompdf->setPaper('A4', 'landscape'); // Render the HTML as PDF $dompdf->render(); // Output the generated PDF to Browser $dompdf->stream(); exit; // $source_pdf="c4611_sample_explain.pdf"; $source_pdf="wp.pdf"; $output_folder="MyFolder"; if (!file_exists($output_folder)) { mkdir($output_folder, 0777, true); } $a= passthru("pdftohtml $source_pdf $output_folder/new_file_name",$b); var_dump($a); exit; // // initiate // // $pdf = new \Gufy\PdfToHtml\Pdf('c4611_sample_explain.pdf'); // $pdf = new \Gufy\PdfToHtml\Pdf('WP_The Simple, Complicated, and the Complex.pdf'); // // convert to html string // $html = $pdf->html(); // echo $html; // exit; // $content = file_get_contents("sample.pdf"); // $content = file_get_contents("c4611_sample_explain_decrypted.pdf"); $content = file_get_contents("c4611_sample_explain_uncompressed.pdf"); // echo $content; exit; // preg_match_all("/stream(([\s\S])*?)endstream/s",$content, $matches); // if(!empty($matches) && !empty($matches[1])){ // echo count($matches[1]); // foreach($matches[1] as $stream){ // // var_dump(gzinflate($stream)); // // echo $stream; // try{ // echo zlib_decode($stream); // }catch(Exception $e){ } // } // } // exit; // echo $content; $parser = new Parser(); $document = $parser->parseContent($content); $page = $document->getPages()[3]; // var_dump($page->getXObjects()); exit; $objects = $page->getXObjects(); foreach($objects as $object){ $object_details = $object->getDetails(); $object_data = $object->getContent(); // var_dump($object_details); // var_dump($object_data); $streamObj = new stream($object_details, $object_data); $decoded_data = (new stream($object_details, $object_data))->decode(); var_dump($decoded_data); } exit; } // public function transcriptionProcess(Request $request) // { // $userId = auth()->user()->id; // $fileId = $request->id; // $userFileModel = new UserFile(); // $file = $userFileModel->where([ // ['id','=',$fileId], // ['user_id','=',$userId] // ])->first(); // return view('project-process', [ // "file" => $file // ]); // } public function transcriptionProcessPaymentError(Request $request) { // $userId = auth()->user()->id; return view('project-process-payment-error'); } // private function getFileTranscriptions($file, $userId){ // $fileTranscriptModel = new FileTranscript(); // $fileTranscriptWordModel = new FileTranscriptWord(); // $transcripts = $fileTranscriptModel->where([ // ['file_id','=',$file->id] // ])->get(); // foreach($transcripts as $transcript){ // $words = $fileTranscriptWordModel->where([ // ['file_transcript_id','=',$transcript->id] // ])->get(); // $transcript->words = $words; // } // return $transcripts; // } public function transcriptionEditor(Request $request) { $userId = auth()->user()->id; $fileId = $request->id; $userFileModel = new UserFile(); $file = $userFileModel->where([ ['id','=',$fileId], ['user_id','=',$userId] ])->first(); if(!$file) return abort('403'); $fileTranscriptModel = new FileTranscript(); $transcripts = $fileTranscriptModel->getFileTranscriptions($file, $userId); return view('project-editor', [ "file" => $file, "transcripts" => $transcripts ]); } public function deleteTranslation(Request $request) { $userId = auth()->user()->id; $fileId = $request->id; $userFileModel = new UserFile(); $file = $userFileModel->where([ ['id','=',$fileId], ['user_id','=',$userId] ])->first(); if(!$file) return abort('403'); $translationModel = new Translation(); $translationModel->where('file_id', '=', $fileId)->delete(); $userFileModel->where('id', '=', $fileId)->update(['is_active' => 0]); GoogleHelper::deleteFile(env('google_storage_original_files_bucket_name',''), $file->file_name); GoogleHelper::deleteFile(env('google_storage_translated_files_bucket_name',''), $file->file_name); return redirect('translations/'); // return view('project-editor', [ // "file" => $file, // "transcripts" => $transcripts // ]); } public function transcriptionStatus(Request $request) { $userId = auth()->user()->id; $fileId = $request->id; $userFileModel = new UserFile(); $file = $userFileModel->where([ ['id','=',$fileId], ['user_id','=',$userId] ])->first(); return response()->json(['file_id' => $fileId, 'status' => $file->status]); } public function transcriptionExportPdf(Request $request) { $userId = auth()->user()->id; $fileId = $request->id; $userFileModel = new UserFile(); $file = $userFileModel->where([ ['id','=',$fileId], ['user_id','=',$userId] ])->first(); if(!$file) return abort('403'); sleep(1); // wait 1sec. to make sure translations are saved $fileTranscriptModel = new FileTranscript(); $transcripts = $fileTranscriptModel->getFileTranscriptions($file, $userId); $pdf = PDF::loadView('pdf.transcript', [ "file" => $file, "transcripts" => $transcripts ]); return $pdf->download($file->original_name.'.pdf'); } public function transcriptionExportWord(Request $request) { $userId = auth()->user()->id; $fileId = $request->id; $userFileModel = new UserFile(); $file = $userFileModel->where([ ['id','=',$fileId], ['user_id','=',$userId] ])->first(); if(!$file) return abort('403'); sleep(1); // wait 1sec. to make sure translations are saved $fileTranscriptModel = new FileTranscript(); $transcripts = $fileTranscriptModel->getFileTranscriptions($file, $userId); $phpWord = new PhpWord(); $section = $phpWord->addSection(); foreach($transcripts as $transcript){ $text = ""; foreach($transcript->words as $word){ $text .= $word->word." "; } if($transcript->words){ $startTime = intval($transcript->words[0]->start_time); $hours = intval($startTime / 3600); $minutes = intval(($startTime - $hours * 3600) / 60); $seconds = intval($startTime % 60); if($hours > 0) $timeText = "(".str_pad($hours, 2, '0', STR_PAD_LEFT)." : ".str_pad($minutes, 2, '0', STR_PAD_LEFT)." : ".str_pad($seconds, 2, '0', STR_PAD_LEFT).")"; else $timeText = "(".str_pad($minutes, 2, '0', STR_PAD_LEFT)." : ".str_pad($seconds, 2, '0', STR_PAD_LEFT).")"; if($transcript->speaker_name) $timeText = $transcript->speaker_name." ".$timeText; $section->addText($timeText); $section->addText($text); } } // Saving the document as OOXML file... \PhpOffice\PhpWord\Settings::setOutputEscapingEnabled(true); $objWriter = WordWriter::createWriter($phpWord, 'Word2007'); $filePath = "tmp/".Str::uuid().'.docx'; $objWriter->save($filePath); return response()->download($filePath, str_replace("/","_",$file->original_name).".docx"); } public function transcriptionExportExcel(Request $request) { $userId = auth()->user()->id; $fileId = $request->id; $userFileModel = new UserFile(); $file = $userFileModel->where([ ['id','=',$fileId], ['user_id','=',$userId] ])->first(); if(!$file) return abort('403'); sleep(1); // wait 1sec. to make sure translations are saved $fileTranscriptModel = new FileTranscript(); $transcripts = $fileTranscriptModel->getFileTranscriptions($file, $userId); $spreadsheet = new Spreadsheet(); $spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(150); $spreadsheet->getActiveSheet()->getStyle('C2:C999'.$spreadsheet->getActiveSheet()->getHighestRow()) ->getAlignment()->setWrapText(true); $sheet = $spreadsheet->getActiveSheet(); $sheet->setCellValue('A1', 'Time'); $sheet->setCellValue('B1', 'Speaker'); $sheet->setCellValue('C1', 'Transcript'); foreach($transcripts as $key=>$transcript){ $text = ""; foreach($transcript->words as $word){ $text .= $word->word." "; } if($transcript->words){ $startTime = intval($transcript->words[0]->start_time); $hours = intval($startTime / 3600); $minutes = intval(($startTime - $hours * 3600) / 60); $seconds = intval($startTime % 60); if($hours > 0) $timeText = "(".str_pad($hours, 2, '0', STR_PAD_LEFT)." : ".str_pad($minutes, 2, '0', STR_PAD_LEFT)." : ".str_pad($seconds, 2, '0', STR_PAD_LEFT).")"; else $timeText = "(".str_pad($minutes, 2, '0', STR_PAD_LEFT)." : ".str_pad($seconds, 2, '0', STR_PAD_LEFT).")"; $cellA = "A".($key + 2); $cellB = "B".($key + 2); $cellC = "C".($key + 2); $sheet->setCellValue($cellA, $timeText); $sheet->setCellValue($cellC, $text); if($transcript->speaker_name) $sheet->setCellValue($cellB, $transcript->speaker_name); } } // Saving the document as Xlsx file... $filePath = "tmp/".Str::uuid().'.xlsx'; $writer = new Xlsx($spreadsheet); $writer->save($filePath); return response()->download($filePath, str_replace("/","_",$file->original_name).".xlsx"); } public function transcriptionExportTxt(Request $request) { $userId = auth()->user()->id; $fileId = $request->id; $userFileModel = new UserFile(); $file = $userFileModel->where([ ['id','=',$fileId], ['user_id','=',$userId] ])->first(); if(!$file) return abort('403'); sleep(1); // wait 1sec. to make sure translations are saved $fileTranscriptModel = new FileTranscript(); $transcripts = $fileTranscriptModel->getFileTranscriptions($file, $userId); $text = ""; foreach($transcripts as $key=>$transcript){ $rowText = ""; foreach($transcript->words as $word){ $rowText .= $word->word." "; } if($transcript->words){ $startTime = intval($transcript->words[0]->start_time); $hours = intval($startTime / 3600); $minutes = intval(($startTime - $hours * 3600) / 60); $seconds = intval($startTime % 60); if($hours > 0) $timeText = "(".str_pad($hours, 2, '0', STR_PAD_LEFT)." : ".str_pad($minutes, 2, '0', STR_PAD_LEFT)." : ".str_pad($seconds, 2, '0', STR_PAD_LEFT).")"; else $timeText = "(".str_pad($minutes, 2, '0', STR_PAD_LEFT)." : ".str_pad($seconds, 2, '0', STR_PAD_LEFT).")"; if($transcript->speaker_name) $timeText = $transcript->speaker_name." ".$timeText; $text .= $timeText."\r\n"; $text .= $rowText."\r\n \r\n"; } } // Saving the document as Txt file... $filePath = "tmp/".Str::uuid().'.txt'; $txtFile = fopen($filePath, "w") or die("Unable to open file!"); fwrite($txtFile, $text); fclose($txtFile); return response()->download($filePath, str_replace("/","_",$file->original_name).".txt"); } public function transcriptionExportSbv(Request $request) { $userId = auth()->user()->id; $fileId = $request->id; $userFileModel = new UserFile(); $file = $userFileModel->where([ ['id','=',$fileId], ['user_id','=',$userId] ])->first(); if(!$file) return abort('403'); sleep(1); // wait 1sec. to make sure translations are saved $fileTranscriptModel = new FileTranscript(); $transcripts = $fileTranscriptModel->getFileTranscriptions($file, $userId); $words = array(); foreach($transcripts as $key=>$transcript){ foreach($transcript->words as $word){ $words[] = $word; } } $totalWords = count($words); $wordsInRow = 6; $rowText = ""; $finalText = ""; foreach ($words as $key => $word) { if($key % $wordsInRow == 0){ // echo "Start: "; $startTime = intval($word->start_time); $hours = intval($startTime / 3600); $minutes = intval(($startTime - $hours * 3600) / 60); $seconds = intval($startTime % 60); $milliSec = round(($word->start_time - intval($word->start_time)) * 100); $startTimeText = $hours.":".str_pad($minutes, 2, '0', STR_PAD_LEFT).":".str_pad($seconds, 2, '0', STR_PAD_LEFT).".".str_pad($milliSec, 3, '0'); } // echo $word->word." "; $rowText .= $word->word." "; if($key % $wordsInRow == $wordsInRow - 1 || $key == $totalWords - 1){ // echo "; <br>"; $endTime = intval($word->end_time); $hours = intval($endTime / 3600); $minutes = intval(($endTime - $hours * 3600) / 60); $seconds = intval($endTime % 60); $milliSec = round(($word->end_time - intval($word->end_time)) * 100); $endTimeText = $hours.":".str_pad($minutes, 2, '0', STR_PAD_LEFT).":".str_pad($seconds, 2, '0', STR_PAD_LEFT).".".str_pad($milliSec, 3, '0'); $finalText .= $startTimeText.",".$endTimeText."\r\n"; $finalText .= $rowText."\r\n\r\n"; // echo $finalText; // echo "; <br>"; $rowText = ""; } } // exit(); // Saving the document as Txt file... $filePath = "tmp/".Str::uuid().'.sbv'; $txtFile = fopen($filePath, "w") or die("Unable to open file!"); fwrite($txtFile, $finalText); fclose($txtFile); return response()->download($filePath, str_replace("/","_",$file->original_name).".sbv"); } public function transcriptionExportVtt(Request $request) { $userId = auth()->user()->id; $fileId = $request->id; $userFileModel = new UserFile(); $file = $userFileModel->where([ ['id','=',$fileId], ['user_id','=',$userId] ])->first(); if(!$file) return abort('403'); sleep(1); // wait 1sec. to make sure translations are saved $fileTranscriptModel = new FileTranscript(); $transcripts = $fileTranscriptModel->getFileTranscriptions($file, $userId); $words = array(); foreach($transcripts as $key=>$transcript){ foreach($transcript->words as $word){ $words[] = $word; } } $totalWords = count($words); $wordsInRow = 6; $rowText = "- "; $finalText = "WEBVTT\r\n\r\n"; foreach ($words as $key => $word) { if($key % $wordsInRow == 0){ // echo "Start: "; $startTime = intval($word->start_time); $hours = intval($startTime / 3600); $minutes = intval(($startTime - $hours * 3600) / 60); $seconds = intval($startTime % 60); $milliSec = round(($word->start_time - intval($word->start_time)) * 100); $startTimeText = str_pad($hours, 2, '0', STR_PAD_LEFT).":".str_pad($minutes, 2, '0', STR_PAD_LEFT).":".str_pad($seconds, 2, '0', STR_PAD_LEFT).".".str_pad($milliSec, 3, '0'); } // echo $word->word." "; $rowText .= $word->word." "; if($key % $wordsInRow == $wordsInRow - 1 || $key == $totalWords - 1){ // echo "; <br>"; $endTime = intval($word->end_time); $hours = intval($endTime / 3600); $minutes = intval(($endTime - $hours * 3600) / 60); $seconds = intval($endTime % 60); $milliSec = round(($word->end_time - intval($word->end_time)) * 100); $endTimeText = str_pad($hours, 2, '0', STR_PAD_LEFT).":".str_pad($minutes, 2, '0', STR_PAD_LEFT).":".str_pad($seconds, 2, '0', STR_PAD_LEFT).".".str_pad($milliSec, 3, '0'); $finalText .= $startTimeText." --> ".$endTimeText."\r\n"; $finalText .= $rowText."\r\n\r\n"; // echo $finalText; // echo "; <br>"; $rowText = "- "; } } // exit(); // Saving the document as Txt file... $filePath = "tmp/".Str::uuid().'.vtt'; $txtFile = fopen($filePath, "w") or die("Unable to open file!"); fwrite($txtFile, $finalText); fclose($txtFile); return response()->download($filePath, str_replace("/","_",$file->original_name).".vvt"); } public function transcriptionExportSrt(Request $request) { $userId = auth()->user()->id; $fileId = $request->id; $userFileModel = new UserFile(); $file = $userFileModel->where([ ['id','=',$fileId], ['user_id','=',$userId] ])->first(); if(!$file) return abort('403'); sleep(1); // wait 1sec. to make sure translations are saved $fileTranscriptModel = new FileTranscript(); $transcripts = $fileTranscriptModel->getFileTranscriptions($file, $userId); $words = array(); foreach($transcripts as $key=>$transcript){ foreach($transcript->words as $word){ $words[] = $word; } } $totalWords = count($words); $wordsInRow = 10; $rowText = ""; $finalText = ""; $rowNumber = 0; foreach ($words as $key => $word) { if($key % $wordsInRow == 0){ // echo "Start: "; $startTime = intval($word->start_time); $hours = intval($startTime / 3600); $minutes = intval(($startTime - $hours * 3600) / 60); $seconds = intval($startTime % 60); $milliSec = round(($word->start_time - intval($word->start_time)) * 100); $startTimeText = str_pad($hours, 2, '0', STR_PAD_LEFT).":".str_pad($minutes, 2, '0', STR_PAD_LEFT).":".str_pad($seconds, 2, '0', STR_PAD_LEFT).",".str_pad($milliSec, 3, '0'); } // echo $word->word." "; $rowText .= $word->word." "; if($key % $wordsInRow == $wordsInRow - 1 || $key == $totalWords - 1){ // echo "; <br>"; $endTime = intval($word->end_time); $hours = intval($endTime / 3600); $minutes = intval(($endTime - $hours * 3600) / 60); $seconds = intval($endTime % 60); $milliSec = round(($word->end_time - intval($word->end_time)) * 100); $endTimeText = str_pad($hours, 2, '0', STR_PAD_LEFT).":".str_pad($minutes, 2, '0', STR_PAD_LEFT).":".str_pad($seconds, 2, '0', STR_PAD_LEFT).",".str_pad($milliSec, 3, '0'); $rowNumber++; $finalText .= $rowNumber."\r\n"; $finalText .= $startTimeText." --> ".$endTimeText."\r\n"; $finalText .= $rowText."\r\n\r\n"; // echo $finalText; // echo "; <br>"; $rowText = ""; } } // exit(); // Saving the document as Txt file... $filePath = "tmp/".Str::uuid().'.srt'; $txtFile = fopen($filePath, "w") or die("Unable to open file!"); fwrite($txtFile, $finalText); fclose($txtFile); return response()->download($filePath, str_replace("/","_",$file->original_name).".srt"); } }
Show:  
Copy Clear