narou 3.1.11 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of narou might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.rubocop.yml +12 -9
- data/ChangeLog.md +42 -2
- data/README.md +32 -17
- data/lib/command/convert.rb +22 -7
- data/lib/command/init.rb +65 -29
- data/lib/command/mail.rb +24 -22
- data/lib/command/send.rb +26 -23
- data/lib/command/setting.rb +20 -5
- data/lib/command/update.rb +1 -1
- data/lib/command/update/general_lastup_updater.rb +4 -3
- data/lib/converterbase.rb +0 -33
- data/lib/downloader.rb +25 -4
- data/lib/helper.rb +19 -2
- data/lib/html.rb +4 -0
- data/lib/narou.rb +42 -10
- data/lib/novelconverter.rb +87 -38
- data/lib/novelinfo.rb +2 -1
- data/lib/novelsetting.rb +25 -14
- data/lib/version.rb +1 -1
- data/lib/web/appserver.rb +25 -122
- data/lib/web/public/resources/narou.library.js +34 -1
- data/lib/web/public/resources/narou.ui.js +66 -12
- data/lib/web/server_helpers.rb +121 -0
- data/lib/web/views/settings.haml +1 -1
- data/lib/web/views/style.scss +12 -0
- data/narou.gemspec +1 -0
- data/narou.rb +3 -7
- data/preset/ncode.syosetu.com/n9463br/setting.ini +0 -4
- data/preset/vertical_font.css +1 -1
- data/preset/vertical_font_with_dakuten.css +1 -1
- data/webnovel/kakuyomu.jp.yaml +12 -7
- data/webnovel/ncode.syosetu.com.yaml +5 -0
- data/webnovel/novel18.syosetu.com.yaml +5 -0
- data/webnovel/syosetu.org.yaml +3 -0
- metadata +17 -4
- data/preset/doubledash.png +0 -0
- data/preset/singledash.png +0 -0
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 285c63133d8dca6cefd1e1ecacb249faac17eede
         | 
| 4 | 
            +
              data.tar.gz: 797a6d1755244ef7063276e4acd5b618d4acf393
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: fd39cd8fcbe7946d5773271eeca57f6467967eb18fe5183ca0455db2647a24025b3162940c51bdb070980457f0e20004e9c1906f92061ba446721b1f490598e1
         | 
| 7 | 
            +
              data.tar.gz: d94a9d9d9ccc4060f6910c6b0687d399477a92ce8172d6dca640dabce743512cafa2080801d844d10640aedad563619ddd20e9bda5e76239307121041c1b736b
         | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.rubocop.yml
    CHANGED
    
    | @@ -116,10 +116,10 @@ Style/PredicateName: | |
| 116 116 | 
             
            Style/GlobalVars:
         | 
| 117 117 | 
             
              Enabled: false
         | 
| 118 118 |  | 
| 119 | 
            -
             | 
| 119 | 
            +
            Layout/IndentHash:
         | 
| 120 120 | 
             
              Enabled: false
         | 
| 121 121 |  | 
| 122 | 
            -
             | 
| 122 | 
            +
            Layout/LeadingCommentSpace:
         | 
| 123 123 | 
             
              Enabled: true
         | 
| 124 124 |  | 
| 125 125 | 
             
            Style/LineEndConcatenation:
         | 
| @@ -161,13 +161,13 @@ Style/RedundantSelf: | |
| 161 161 | 
             
            SignalException:
         | 
| 162 162 | 
             
              EnforcedStyle: only_raise
         | 
| 163 163 |  | 
| 164 | 
            -
             | 
| 164 | 
            +
            Layout/SpaceAfterComma:
         | 
| 165 165 | 
             
              Enabled: true
         | 
| 166 166 |  | 
| 167 | 
            -
             | 
| 167 | 
            +
            Layout/SpaceAroundOperators:
         | 
| 168 168 | 
             
              Enabled: true
         | 
| 169 169 |  | 
| 170 | 
            -
             | 
| 170 | 
            +
            Layout/SpaceInsideRangeLiteral:
         | 
| 171 171 | 
             
              Enabled: true
         | 
| 172 172 |  | 
| 173 173 | 
             
            Style/SpecialGlobalVars:
         | 
| @@ -179,10 +179,10 @@ Style/StringLiterals: | |
| 179 179 | 
             
            Style/SymbolProc:
         | 
| 180 180 | 
             
              Enabled: true
         | 
| 181 181 |  | 
| 182 | 
            -
             | 
| 182 | 
            +
            Layout/Tab:
         | 
| 183 183 | 
             
              Enabled: true
         | 
| 184 184 |  | 
| 185 | 
            -
             | 
| 185 | 
            +
            Layout/TrailingBlankLines:
         | 
| 186 186 | 
             
              Enabled: false
         | 
| 187 187 |  | 
| 188 188 | 
             
            Style/TrailingCommaInLiteral:
         | 
| @@ -209,11 +209,14 @@ Style/MutableConstant: | |
| 209 209 | 
             
            Lint/UnderscorePrefixedVariableName:
         | 
| 210 210 | 
             
              Enabled: false
         | 
| 211 211 |  | 
| 212 | 
            -
             | 
| 212 | 
            +
            Layout/EmptyLinesAroundClassBody:
         | 
| 213 213 | 
             
              Enabled: false
         | 
| 214 214 |  | 
| 215 215 | 
             
            Style/FrozenStringLiteralComment:
         | 
| 216 216 | 
             
              Enabled: false
         | 
| 217 217 |  | 
| 218 | 
            -
             | 
| 218 | 
            +
            Layout/MultilineOperationIndentation:
         | 
| 219 | 
            +
              Enabled: false
         | 
| 220 | 
            +
             | 
| 221 | 
            +
            Layout/IndentHeredoc:
         | 
| 219 222 | 
             
              Enabled: false
         | 
    
        data/ChangeLog.md
    CHANGED
    
    | @@ -1,7 +1,47 @@ | |
| 1 | 
            -
            
         | 
| 2 | 
            -
            更新履歴 - ChangeLog
         | 
| 1 | 
            +
            更新履歴 - ChangeLog
         | 
| 3 2 | 
             
            ====================
         | 
| 4 3 |  | 
| 4 | 
            +
            3.2.0: 2018/05/16
         | 
| 5 | 
            +
            ------------------
         | 
| 6 | 
            +
            #### 追加機能
         | 
| 7 | 
            +
            - 小説の行の高さを設定することで行間を調整することが出来る機能を追加しました。
         | 
| 8 | 
            +
              init コマンドを使用することで調整が可能です
         | 
| 9 | 
            +
              + `narou init` とコマンドを打ち込んだ場合、AozoraEpub3フォルダの場所を聞かれ
         | 
| 10 | 
            +
                たあとに、行の高さを尋ねられるので入力します
         | 
| 11 | 
            +
              + オプションで指定する場合は `narou init -p :keep -l 1.8` の様に指定します
         | 
| 12 | 
            +
              + 設定後に convert した小説から反映されます
         | 
| 13 | 
            +
            - 小説の作品名及び作者名、ファイル名を制御する設定が個別設定に追加されました
         | 
| 14 | 
            +
              + novel_author, novel_title, output_filename の3項目が追加
         | 
| 15 | 
            +
              + novel_author 及び novel_title は作品データ内及び出力ファイル名に影響
         | 
| 16 | 
            +
              + output_filename は全ての設定を無視して出力ファイル名を強制変更(拡張子不要)
         | 
| 17 | 
            +
            - 小説の分割を行う設定 `slice_size` が追加されました。slice_size で指定した
         | 
| 18 | 
            +
              話数で小説を分割します
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            #### WEB UI 関連
         | 
| 21 | 
            +
            - 「文字数」と「平均文字数」の項目を追加しました。
         | 
| 22 | 
            +
              『表示>表示する項目を設定』メニューから設定出来ます
         | 
| 23 | 
            +
              + 文字数はダウンロードや更新をかけた際に反映されます
         | 
| 24 | 
            +
              + 小説家になろう系列、ハーメルン、カクヨムのサイトに対応しています
         | 
| 25 | 
            +
            - 小説リスト内の作者名及び掲載サイト名をクリックした時に、フィルターに自動的に
         | 
| 26 | 
            +
              入力されるようになりました
         | 
| 27 | 
            +
            - テーマ設定名を `webui.theme` に変更しました。テーマ機能を使っている場合は
         | 
| 28 | 
            +
              再度環境設定から設定をお願いします(環境設定>WEB UI)
         | 
| 29 | 
            +
            - 小説リストを更新するタイミングを選択する設定`webui.table.reload-timing`を
         | 
| 30 | 
            +
              追加しました
         | 
| 31 | 
            +
            - 「表示」の「全ての項目を表示」及び「表示設定を全てリセット」に確認ダイアログ
         | 
| 32 | 
            +
              が表示されるようにしました
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            #### 仕様変更
         | 
| 35 | 
            +
            - 個別設定の機能から enable_double_dash_to_image を削除しました
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            #### 修正内容
         | 
| 38 | 
            +
            - server-digest-auth.enableを有効にしてもユーザー名とパスワードが未設定の場合は
         | 
| 39 | 
            +
              認証がかからない様に変更
         | 
| 40 | 
            +
            - ハーメルンのサブタイトルにルビが振られた小説が正常にダウンロード出来ない場合
         | 
| 41 | 
            +
              がある
         | 
| 42 | 
            +
            - カクヨムの小説がダウンロードできなくなったことへの対応
         | 
| 43 | 
            +
             | 
| 44 | 
            +
             | 
| 5 45 | 
             
            3.1.11: 2017/11/21
         | 
| 6 46 | 
             
            ------------------
         | 
| 7 47 | 
             
            #### 追加機能
         | 
    
        data/README.md
    CHANGED
    
    | @@ -33,30 +33,45 @@ Narou.rb ― 「小説家になろう」「小説を読もう!」ダウンロ | |
| 33 33 | 
             
            更新履歴 - ChangeLog
         | 
| 34 34 | 
             
            --------------------
         | 
| 35 35 |  | 
| 36 | 
            -
            3. | 
| 36 | 
            +
            3.2.0: 2018/05/16
         | 
| 37 37 | 
             
            ------------------
         | 
| 38 38 | 
             
            #### 追加機能
         | 
| 39 | 
            -
            -  | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
               | 
| 39 | 
            +
            - 小説の行の高さを設定することで行間を調整することが出来る機能を追加しました。
         | 
| 40 | 
            +
              init コマンドを使用することで調整が可能です
         | 
| 41 | 
            +
              + `narou init` とコマンドを打ち込んだ場合、AozoraEpub3フォルダの場所を聞かれ
         | 
| 42 | 
            +
                たあとに、行の高さを尋ねられるので入力します
         | 
| 43 | 
            +
              + オプションで指定する場合は `narou init -p :keep -l 1.8` の様に指定します
         | 
| 44 | 
            +
              + 設定後に convert した小説から反映されます
         | 
| 45 | 
            +
            - 小説の作品名及び作者名、ファイル名を制御する設定が個別設定に追加されました
         | 
| 46 | 
            +
              + novel_author, novel_title, output_filename の3項目が追加
         | 
| 47 | 
            +
              + novel_author 及び novel_title は作品データ内及び出力ファイル名に影響
         | 
| 48 | 
            +
              + output_filename は全ての設定を無視して出力ファイル名を強制変更(拡張子不要)
         | 
| 49 | 
            +
            - 小説の分割を行う設定 `slice_size` が追加されました。slice_size で指定した
         | 
| 50 | 
            +
              話数で小説を分割します
         | 
| 44 51 |  | 
| 52 | 
            +
            #### WEB UI 関連
         | 
| 53 | 
            +
            - 「文字数」と「平均文字数」の項目を追加しました。
         | 
| 54 | 
            +
              『表示>表示する項目を設定』メニューから設定出来ます
         | 
| 55 | 
            +
              + 文字数はダウンロードや更新をかけた際に反映されます
         | 
| 56 | 
            +
              + 小説家になろう系列、ハーメルン、カクヨムのサイトに対応しています
         | 
| 57 | 
            +
            - 小説リスト内の作者名及び掲載サイト名をクリックした時に、フィルターに自動的に
         | 
| 58 | 
            +
              入力されるようになりました
         | 
| 59 | 
            +
            - テーマ設定名を `webui.theme` に変更しました。テーマ機能を使っている場合は
         | 
| 60 | 
            +
              再度環境設定から設定をお願いします(環境設定>WEB UI)
         | 
| 61 | 
            +
            - 小説リストを更新するタイミングを選択する設定`webui.table.reload-timing`を
         | 
| 62 | 
            +
              追加しました
         | 
| 63 | 
            +
            - 「表示」の「全ての項目を表示」及び「表示設定を全てリセット」に確認ダイアログ
         | 
| 64 | 
            +
              が表示されるようにしました
         | 
| 45 65 |  | 
| 46 | 
            -
            3.1.10: 2017/11/20
         | 
| 47 | 
            -
            ------------------
         | 
| 48 66 | 
             
            #### 仕様変更
         | 
| 49 | 
            -
            -  | 
| 50 | 
            -
              (SSL対応サイトのみ)
         | 
| 67 | 
            +
            - 個別設定の機能から enable_double_dash_to_image を削除しました
         | 
| 51 68 |  | 
| 52 69 | 
             
            #### 修正内容
         | 
| 53 | 
            -
            -  | 
| 54 | 
            -
             | 
| 55 | 
            -
            -  | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
              + 最近のブラウザじゃないとたぶん動きません
         | 
| 59 | 
            -
            - Arcadiaでカテゴリがない古い小説をダウンロード出来ない場合がある
         | 
| 70 | 
            +
            - server-digest-auth.enableを有効にしてもユーザー名とパスワードが未設定の場合は
         | 
| 71 | 
            +
              認証がかからない様に変更
         | 
| 72 | 
            +
            - ハーメルンのサブタイトルにルビが振られた小説が正常にダウンロード出来ない場合
         | 
| 73 | 
            +
              がある
         | 
| 74 | 
            +
            - カクヨムの小説がダウンロードできなくなったことへの対応
         | 
| 60 75 |  | 
| 61 76 | 
             
            ----
         | 
| 62 77 |  | 
    
        data/lib/command/convert.rb
    CHANGED
    
    | @@ -189,8 +189,17 @@ module Command | |
| 189 189 | 
             
                    end
         | 
| 190 190 |  | 
| 191 191 | 
             
                    if File.file?(target.to_s)
         | 
| 192 | 
            +
                      using_send_command = false
         | 
| 193 | 
            +
                      # not remove output files for text file conversion
         | 
| 192 194 | 
             
                      res = convert_txt(target)
         | 
| 193 195 | 
             
                    else
         | 
| 196 | 
            +
                      using_send_command = true
         | 
| 197 | 
            +
                      # remove output files for novel conversion
         | 
| 198 | 
            +
                      NovelConverter.extensions_of_converted_files(@device).each do |ext|
         | 
| 199 | 
            +
                        ebook_paths = Narou.get_ebook_file_paths(target, ext)
         | 
| 200 | 
            +
                        NovelConverter.clean_up_temp_files(ebook_paths)
         | 
| 201 | 
            +
                      end
         | 
| 202 | 
            +
                      # start novel conversion
         | 
| 194 203 | 
             
                      @argument_target_type = :novel
         | 
| 195 204 | 
             
                      unless Downloader.novel_exists?(target)
         | 
| 196 205 | 
             
                        error "#{target} は存在しません"
         | 
| @@ -206,15 +215,21 @@ module Command | |
| 206 215 | 
             
                      @options["yokogaki"] = NovelSetting.load(target)["enable_yokogaki"]
         | 
| 207 216 | 
             
                    end
         | 
| 208 217 | 
             
                    next unless res
         | 
| 209 | 
            -
                     | 
| 210 | 
            -
                     | 
| 218 | 
            +
                    array_of_converted_txt_path = res[:converted_txt_paths]
         | 
| 219 | 
            +
                    ebook_file = nil
         | 
| 220 | 
            +
                    array_of_converted_txt_path.each do |converted_txt_path|
         | 
| 221 | 
            +
                      @converted_txt_path = converted_txt_path
         | 
| 222 | 
            +
                      @use_dakuten_font = res[:use_dakuten_font]
         | 
| 211 223 |  | 
| 212 | 
            -
             | 
| 213 | 
            -
             | 
| 214 | 
            -
             | 
| 215 | 
            -
             | 
| 216 | 
            -
             | 
| 224 | 
            +
                      ebook_file = hook_call(:convert_txt_to_ebook_file)
         | 
| 225 | 
            +
                      next if ebook_file.nil?
         | 
| 226 | 
            +
                      if ebook_file
         | 
| 227 | 
            +
                        copy_to_converted_file(ebook_file)
         | 
| 228 | 
            +
                        send_file_to_device(ebook_file) unless using_send_command
         | 
| 229 | 
            +
                      end
         | 
| 217 230 | 
             
                    end
         | 
| 231 | 
            +
                    send_file_to_device(ebook_file) if
         | 
| 232 | 
            +
                      using_send_command && ebook_file
         | 
| 218 233 |  | 
| 219 234 | 
             
                    if @options["no-open"].! && Narou.web?.!
         | 
| 220 235 | 
             
                      Helper.open_directory(File.dirname(@converted_txt_path), "小説の保存フォルダを開きますか")
         | 
    
        data/lib/command/init.rb
    CHANGED
    
    | @@ -19,42 +19,52 @@ module Command | |
| 19 19 | 
             
                def initialize
         | 
| 20 20 | 
             
                  super("[options]")
         | 
| 21 21 | 
             
                  if Narou.already_init?
         | 
| 22 | 
            -
                     | 
| 22 | 
            +
                    opt_message(<<-MSG)
         | 
| 23 | 
            +
              ・AozoraEpub3 の再設定を行います。
         | 
| 24 | 
            +
                    MSG
         | 
| 23 25 | 
             
                  else
         | 
| 24 | 
            -
                     | 
| 26 | 
            +
                    opt_message(<<-MSG)
         | 
| 27 | 
            +
              ・現在のフォルダを小説格納用フォルダとして初期化します。
         | 
| 28 | 
            +
              ・初期化されるまでは他のコマンドは使えません。
         | 
| 29 | 
            +
                    MSG
         | 
| 25 30 | 
             
                  end
         | 
| 26 31 | 
             
                  @opt.on("-p", "--path FOLDER", "指定したフォルダの AozoraEpub3 を利用する") { |dirname|
         | 
| 27 32 | 
             
                    # no check here since global_setting is not loaded yet
         | 
| 28 | 
            -
                    @aozora_dirname = dirname
         | 
| 33 | 
            +
                    @options["aozora_dirname"] = dirname
         | 
| 29 34 | 
             
                  }
         | 
| 35 | 
            +
                  @opt.on("-l", "--line-height SIZE", "行の高さを変更する(単位em)。オススメは1.6〜1.8程度") do |line_height|
         | 
| 36 | 
            +
                    begin
         | 
| 37 | 
            +
                      @options["line_height"] = Helper.string_cast_to_type(line_height, :float)
         | 
| 38 | 
            +
                    rescue Helper::InvalidVariableType => e
         | 
| 39 | 
            +
                      error e.message
         | 
| 40 | 
            +
                      exit Narou::EXIT_ERROR_CODE
         | 
| 41 | 
            +
                    end
         | 
| 42 | 
            +
                  end
         | 
| 30 43 | 
             
                end
         | 
| 31 44 |  | 
| 32 | 
            -
                def  | 
| 33 | 
            -
                  @opt.separator <<- | 
| 34 | 
            -
             | 
| 35 | 
            -
              ・現在のフォルダを小説格納用フォルダとして初期化します。
         | 
| 36 | 
            -
              ・初期化されるまでは他のコマンドは使えません。
         | 
| 45 | 
            +
                def opt_message(description)
         | 
| 46 | 
            +
                  @opt.separator <<-MSG
         | 
| 37 47 |  | 
| 48 | 
            +
            #{description}
         | 
| 38 49 | 
             
              Examples:
         | 
| 39 50 | 
             
                narou init
         | 
| 40 51 | 
             
                narou init -p /opt/narou/aozora    # AozoraEpub3 のフォルダを直接指定
         | 
| 52 | 
            +
                narou init -p :keep                # 設定済みと同じ場所を指定(既に初期化済の場合)
         | 
| 41 53 |  | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 44 | 
            -
                 | 
| 45 | 
            -
             | 
| 46 | 
            -
                 | 
| 47 | 
            -
             | 
| 54 | 
            +
                # 行の高さの調整
         | 
| 55 | 
            +
                narou init --line-height 1.8       # 行の高さを1.8emに設定(1.8文字分相当)
         | 
| 56 | 
            +
                # 行の高さなので、行間を1文字分あけたいという場合は 1+1 で 2 を指定する
         | 
| 57 | 
            +
                # (デフォルト 1.6)
         | 
| 58 | 
            +
                # 参考情報:Kindle Voyage で文字サイズ4番目の大きさの場合、
         | 
| 59 | 
            +
                #   1.6em : 1ページに15行
         | 
| 60 | 
            +
                #   1.8em : 1ページに13行
         | 
| 61 | 
            +
                # の表示行数になる
         | 
| 48 62 |  | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 51 | 
            -
              Examples:
         | 
| 52 | 
            -
                narou init
         | 
| 53 | 
            -
                narou init -p /opt/narou/aozora    # AozoraEpub3 のフォルダを直接指定
         | 
| 54 | 
            -
                narou init -p :keep                # 設定済みと同じ場所を指定
         | 
| 63 | 
            +
                # 入力を省略したい場合、-p と -l を両方指定してやる必要あり
         | 
| 64 | 
            +
                narou init -p /path/to/aozora -l 1.8
         | 
| 55 65 |  | 
| 56 66 | 
             
              Options:
         | 
| 57 | 
            -
                   | 
| 67 | 
            +
                  MSG
         | 
| 58 68 | 
             
                end
         | 
| 59 69 |  | 
| 60 70 | 
             
                def execute(argv)
         | 
| @@ -81,8 +91,8 @@ module Command | |
| 81 91 | 
             
                    puts "<bold><red>#{"!!!WARNING!!!".center(70)}</red></bold>".termcolor
         | 
| 82 92 | 
             
                    puts "AozoraEpub3の構成ファイルを書き換えます。narouコマンド用に別途新規インストールしておくことをオススメします"
         | 
| 83 93 | 
             
                  end
         | 
| 84 | 
            -
                  if @aozora_dirname
         | 
| 85 | 
            -
                    path = normalize_aozoraepub3_path(@aozora_dirname)
         | 
| 94 | 
            +
                  if @options["aozora_dirname"]
         | 
| 95 | 
            +
                    path = normalize_aozoraepub3_path(@options["aozora_dirname"])
         | 
| 86 96 | 
             
                    print "\n<bold><green>指定されたフォルダにAozoraEpub3がありません。</green></bold>\n".termcolor unless path
         | 
| 87 97 | 
             
                  end
         | 
| 88 98 | 
             
                  aozora_path = path || ask_aozoraepub3_path
         | 
| @@ -90,19 +100,21 @@ module Command | |
| 90 100 | 
             
                    puts "設定をスキップしました。あとで " + "<bold><yellow>narou init</yellow></bold>".termcolor + " で再度設定出来ます"
         | 
| 91 101 | 
             
                    return
         | 
| 92 102 | 
             
                  end
         | 
| 103 | 
            +
                  line_height = @options["line_height"] || ask_line_height
         | 
| 93 104 | 
             
                  puts
         | 
| 94 | 
            -
                  rewrite_aozoraepub3_files(aozora_path)
         | 
| 105 | 
            +
                  rewrite_aozoraepub3_files(aozora_path, line_height)
         | 
| 95 106 | 
             
                  @global_setting["aozoraepub3dir"] = aozora_path
         | 
| 107 | 
            +
                  @global_setting["line-height"] = line_height
         | 
| 96 108 | 
             
                  @global_setting.save
         | 
| 97 109 | 
             
                  puts "<bold><green>AozoraEpub3の設定を終了しました</green></bold>".termcolor
         | 
| 98 110 | 
             
                end
         | 
| 99 111 |  | 
| 100 | 
            -
                def rewrite_aozoraepub3_files(aozora_path)
         | 
| 112 | 
            +
                def rewrite_aozoraepub3_files(aozora_path, line_height)
         | 
| 101 113 | 
             
                  # chuki_tag.txt の書き換え
         | 
| 102 114 | 
             
                  custom_chuki_tag_path = File.join(Narou.get_preset_dir, "custom_chuki_tag.txt")
         | 
| 103 115 | 
             
                  chuki_tag_path = File.join(aozora_path, "chuki_tag.txt")
         | 
| 104 | 
            -
                  custom_chuki_tag =  | 
| 105 | 
            -
                  chuki_tag =  | 
| 116 | 
            +
                  custom_chuki_tag = File.read(custom_chuki_tag_path, mode: "r:BOM|UTF-8")
         | 
| 117 | 
            +
                  chuki_tag = File.read(chuki_tag_path, mode: "r:BOM|UTF-8")
         | 
| 106 118 | 
             
                  embedded_mark = "### Narou.rb embedded custom chuki ###"
         | 
| 107 119 | 
             
                  if chuki_tag =~ /#{embedded_mark}/
         | 
| 108 120 | 
             
                    chuki_tag.gsub!(/#{embedded_mark}.+#{embedded_mark}/m, custom_chuki_tag)
         | 
| @@ -120,7 +132,7 @@ module Command | |
| 120 132 | 
             
                  src.size.times do |i|
         | 
| 121 133 | 
             
                    src_full_path = File.join(Narou.get_preset_dir, src[i])
         | 
| 122 134 | 
             
                    dst_full_path = File.join(aozora_path, dst[i])
         | 
| 123 | 
            -
                     | 
| 135 | 
            +
                    Helper.erb_copy(src_full_path, dst_full_path, binding)
         | 
| 124 136 | 
             
                    puts dst_full_path
         | 
| 125 137 | 
             
                  end
         | 
| 126 138 | 
             
                end
         | 
| @@ -133,7 +145,7 @@ module Command | |
| 133 145 | 
             
                    print "(現在の場所:#{@global_setting["aozoraepub3dir"]}"
         | 
| 134 146 | 
             
                  end
         | 
| 135 147 | 
             
                  print ")\n>"
         | 
| 136 | 
            -
                  while input = $stdin.gets
         | 
| 148 | 
            +
                  while (input = $stdin.gets)
         | 
| 137 149 | 
             
                    break if input.strip! == ""
         | 
| 138 150 | 
             
                    checked_input = normalize_aozoraepub3_path(input)
         | 
| 139 151 | 
             
                    return checked_input if checked_input
         | 
| @@ -143,6 +155,30 @@ module Command | |
| 143 155 | 
             
                  nil
         | 
| 144 156 | 
             
                end
         | 
| 145 157 |  | 
| 158 | 
            +
                def ask_line_height
         | 
| 159 | 
            +
                  line_height = Narou.line_height
         | 
| 160 | 
            +
                  puts
         | 
| 161 | 
            +
                  puts(<<-MSG.termcolor)
         | 
| 162 | 
            +
            <bold><green>行間の調整を行います。小説の行の高さを設定して下さい(単位 em):</green></bold>
         | 
| 163 | 
            +
            1em = 1文字分の高さ
         | 
| 164 | 
            +
            行の高さ=1文字分の高さ+行間の高さ
         | 
| 165 | 
            +
            オススメは 1.6 〜 1.8 程度。1.6 で若干行間狭め。1.8 だと一般的な小説程度。2.0 くらいにするとかなりスカスカ
         | 
| 166 | 
            +
            (未入力で #{line_height} を採用)
         | 
| 167 | 
            +
                  MSG
         | 
| 168 | 
            +
                  print ">"
         | 
| 169 | 
            +
                  while (input = $stdin.gets)
         | 
| 170 | 
            +
                    break if input.strip! == ""
         | 
| 171 | 
            +
                    begin
         | 
| 172 | 
            +
                      line_height = Helper.string_cast_to_type(input, :float)
         | 
| 173 | 
            +
                      break
         | 
| 174 | 
            +
                    rescue Helper::InvalidVariableType => e
         | 
| 175 | 
            +
                      error e.message
         | 
| 176 | 
            +
                      print "<bold><green>もう一度入力して下さい:</green></bold>\n>".termcolor
         | 
| 177 | 
            +
                    end
         | 
| 178 | 
            +
                  end
         | 
| 179 | 
            +
                  line_height
         | 
| 180 | 
            +
                end
         | 
| 181 | 
            +
             | 
| 146 182 | 
             
                def normalize_aozoraepub3_path(input)
         | 
| 147 183 | 
             
                  if Helper.os_windows?
         | 
| 148 184 | 
             
                    input.force_encoding(Encoding::Windows_31J).encode!(Encoding::UTF_8)
         | 
    
        data/lib/command/mail.rb
    CHANGED
    
    | @@ -63,10 +63,10 @@ module Command | |
| 63 63 | 
             
                  tagname_to_ids(argv)
         | 
| 64 64 | 
             
                  argv.each do |target|
         | 
| 65 65 | 
             
                    if target == "hotentry"
         | 
| 66 | 
            -
                       | 
| 66 | 
            +
                      ebook_paths = [Update.get_newest_hotentry_file_path(device)]
         | 
| 67 67 | 
             
                      display_target = "hotentry"
         | 
| 68 68 | 
             
                    else
         | 
| 69 | 
            -
                       | 
| 69 | 
            +
                      ebook_paths = Narou.get_ebook_file_paths(target, device ? device.ebook_file_ext : ".epub")
         | 
| 70 70 | 
             
                      data = Downloader.get_data_by_target(target)
         | 
| 71 71 | 
             
                      if send_all && !@options["force"]
         | 
| 72 72 | 
             
                        new_arrivals_date = data["new_arrivals_date"] || Time.now
         | 
| @@ -75,12 +75,12 @@ module Command | |
| 75 75 | 
             
                        end
         | 
| 76 76 | 
             
                      end
         | 
| 77 77 | 
             
                    end
         | 
| 78 | 
            -
                    unless  | 
| 78 | 
            +
                    unless ebook_paths[0]
         | 
| 79 79 | 
             
                      error "#{target} は存在しません" unless send_all
         | 
| 80 80 | 
             
                      next
         | 
| 81 81 | 
             
                    end
         | 
| 82 | 
            -
                    unless File.exist?( | 
| 83 | 
            -
                      error "まだファイル(#{File.basename( | 
| 82 | 
            +
                    unless File.exist?(ebook_paths[0])
         | 
| 83 | 
            +
                      error "まだファイル(#{File.basename(ebook_paths[0])})が無いようです" unless send_all
         | 
| 84 84 | 
             
                      next
         | 
| 85 85 | 
             
                    end
         | 
| 86 86 | 
             
                    if target == "hotentry"
         | 
| @@ -92,23 +92,25 @@ module Command | |
| 92 92 | 
             
                    end
         | 
| 93 93 | 
             
                    puts "<bold><green>#{display_target}</green></bold>".termcolor
         | 
| 94 94 | 
             
                    print "メールを送信しています"
         | 
| 95 | 
            -
                     | 
| 96 | 
            -
             | 
| 97 | 
            -
             | 
| 98 | 
            -
                       | 
| 99 | 
            -
             | 
| 100 | 
            -
             | 
| 101 | 
            -
             | 
| 102 | 
            -
                       | 
| 103 | 
            -
             | 
| 104 | 
            -
             | 
| 105 | 
            -
             | 
| 106 | 
            -
             | 
| 107 | 
            -
                       | 
| 108 | 
            -
             | 
| 109 | 
            -
             | 
| 110 | 
            -
                       | 
| 111 | 
            -
             | 
| 95 | 
            +
                    ebook_paths.each do |ebook_path|
         | 
| 96 | 
            +
                      exit_mail = false
         | 
| 97 | 
            +
                      mail_result = nil
         | 
| 98 | 
            +
                      Thread.new do
         | 
| 99 | 
            +
                        mail_result = mailer.send(id, File.basename(ebook_path), ebook_path)
         | 
| 100 | 
            +
                        exit_mail = true
         | 
| 101 | 
            +
                      end
         | 
| 102 | 
            +
                      until exit_mail
         | 
| 103 | 
            +
                        print "."
         | 
| 104 | 
            +
                        sleep(0.5)
         | 
| 105 | 
            +
                      end
         | 
| 106 | 
            +
                      puts
         | 
| 107 | 
            +
                      if mail_result
         | 
| 108 | 
            +
                        puts File.basename(ebook_path) + " をメールで送信しました"
         | 
| 109 | 
            +
                        database[id]["last_mail_date"] = Time.now if target != "hotentry"
         | 
| 110 | 
            +
                      else
         | 
| 111 | 
            +
                        error mailer.error_message
         | 
| 112 | 
            +
                        exit Narou::EXIT_ERROR_CODE # next しても次も失敗する可能性が高いのでここで終了
         | 
| 113 | 
            +
                      end
         | 
| 112 114 | 
             
                    end
         | 
| 113 115 | 
             
                  end
         | 
| 114 116 | 
             
                rescue Interrupt
         |