error('mkdir fail path=' . $exportDir); return 1; } else { $this->info('make dir successful ' . $exportDir); } } $filename = 'wikipali-offline-ai-training-' . date("Y-m-d") . '.tsv'; $exportFile = storage_path('app/tmp/export/offline/' . $filename); $fp = fopen($exportFile, 'w'); if ($fp === false) { die('无法创建文件'); } $channels = [ '19f53a65-81db-4b7d-8144-ac33f1217d34', ]; $start = time(); foreach ($channels as $key => $channel) { $db = Sentence::where('channel_uid', $channel); $bar = $this->output->createProgressBar($db->count()); $srcDb = $db->select([ 'book_id', 'paragraph', 'word_start', 'word_end', 'content', 'content_type' ])->cursor(); foreach ($srcDb as $sent) { $content = MdRender::render( $sent->content, [$channel], null, 'read', 'translation', $sent->content_type, 'text', ); $origin = PaliSentence::where('book', $sent->book_id) ->where('paragraph', $sent->paragraph) ->where('word_begin', $sent->word_start) ->where('word_end', $sent->word_end) ->value('text'); $currData = array( str_replace("\n", "", $origin), str_replace("\n", "", $content), ); fwrite($fp, implode("\t", $currData) . "\n"); $bar->advance(); } } fclose($fp); $this->info((time() - $start) . ' seconds'); $this->call('export:zip', [ 'id' => 'ai-translating-training-data', 'filename' => $exportFile, 'title' => 'wikipali ai translating training data', 'format' => $this->option('format'), ]); return 0; } }