visuddhinanda пре 10 месеци
родитељ
комит
baec5f19cd
1 измењених фајлова са 63 додато и 7 уклоњено
  1. 63 7
      api-v8/app/Console/Commands/CreateMyHanCrop.php

+ 63 - 7
api-v8/app/Console/Commands/CreateMyHanCrop.php

@@ -3,22 +3,23 @@
 namespace App\Console\Commands;
 namespace App\Console\Commands;
 
 
 use Illuminate\Console\Command;
 use Illuminate\Console\Command;
+use Illuminate\Support\Facades\Storage;
 
 
 class CreateMyHanCrop extends Command
 class CreateMyHanCrop extends Command
 {
 {
     /**
     /**
      * The name and signature of the console command.
      * The name and signature of the console command.
-     *
+     * php artisan create:my.han.crop --page=10
      * @var string
      * @var string
      */
      */
-    protected $signature = 'command:name';
+    protected $signature = 'create:my.han.crop {--page=}';
 
 
     /**
     /**
      * The console command description.
      * The console command description.
      *
      *
      * @var string
      * @var string
      */
      */
-    protected $description = 'Command description';
+    protected $description = '建立缅汉字典切图工作文件';
 
 
     /**
     /**
      * Create a new command instance.
      * Create a new command instance.
@@ -40,17 +41,72 @@ class CreateMyHanCrop extends Command
         $csvFile = config("mint.path.dict_text") . '/zh/my-han/index.csv';
         $csvFile = config("mint.path.dict_text") . '/zh/my-han/index.csv';
         if (($fp = fopen($csvFile, "r")) !== false) {
         if (($fp = fopen($csvFile, "r")) !== false) {
             $row = 0;
             $row = 0;
-            $page = 0;
+            $currPage = 0;
+            $currPageWords = [];
             while (($data = fgetcsv($fp, 0, ',')) !== false) {
             while (($data = fgetcsv($fp, 0, ',')) !== false) {
-                if ($row === 0) {
+                $row++;
+                if ($row === 1) {
                     continue;
                     continue;
                 }
                 }
-                $page = $data[1];
+                if ($this->option('page')) {
+                    if ($currPage >= (int)$this->option('page')) {
+                        break;
+                    }
+                }
+                $page = (int)$data[1];
                 $word = $data[2];
                 $word = $data[2];
-                $row++;
+                if ($page !== $currPage) {
+                    //保存上一页数据
+                    $this->save($currPage, $currPageWords);
+                    $currPage = $page;
+                    //清空单词缓存
+                    $currPageWords = [];
+                }
+                $currPageWords[] = $word;
             }
             }
             fclose($fp);
             fclose($fp);
+            $this->save($currPage, $currPageWords);
         }
         }
+        $this->info('done');
         return 0;
         return 0;
     }
     }
+    private function save($page, $words)
+    {
+        $basicUrl = 'https://ftp.wikipali.org/kosalla/%E7%BC%85%E6%96%87%E8%AF%8D%E5%85%B8/';
+        if (count($words) > 0) {
+            $m = new \Mustache_Engine(array(
+                'entity_flags' => ENT_QUOTES,
+                'escape' => function ($value) {
+                    return $value;
+                }
+            ));
+            $tplFile = resource_path("/mustache/my_han_crop.tpl");
+            $tpl = file_get_contents($tplFile);
+            $wordWithIndex = [];
+            foreach ($words as $key => $value) {
+                $wordWithIndex[] = [
+                    'index' => $key + 1,
+                    'word' => $value,
+                ];
+            }
+            $data = [
+                'dict' => [
+                    ['index' => 'a', 'img' => "{$basicUrl}{$page}A.jpg"],
+                    ['index' => 'b', 'img' => "{$basicUrl}{$page}B.jpg"],
+                    ['index' => 'a', 'img' => "{$basicUrl}" . ($page + 1) . "A.jpg"],
+                ],
+                'words' => $wordWithIndex
+            ];
+            $content = $m->render($tpl, $data);
+            //保存到临时文件夹
+            // 使用本地磁盘
+            // 创建目录]
+            $dir = '/tmp/export/myhan_crop/' . $page;
+            Storage::disk('local')->makeDirectory($dir);
+            Storage::disk('local')->put($dir . "/index.html", $content);
+            $this->info("page={$page} word=" . count($words));
+        } else {
+            $this->error('page' . $page . 'no words');
+        }
+    }
 }
 }