【起動】
|
| ・ | このソフトは起動時に実行ファイルの場所を引数で取得できることを前提に設計されています。次のような方法で起動すると想定外のパスが渡されて正しい場所に関連ファイルを作れなかったり、空の配列が渡されて異常終了する可能性があります。 |
|
| 【異常終了を誘発する可能性がある起動方法の例】 |
| ・ | 非常に低レイヤーなコードで実行ファイルを呼び出す。 |
| ・ | Automatorで実行ファイルをアプリケーションバンドル化して実行する。 |
| ・ | サンドボックス環境で実行する。
|
|
【関連ファイル】
|
| ・ | 実行ファイルと同じ場所に複数の関連ファイルを生成します。 |
| ・ | 「dlSerialFile_que.txt」が他のソフトに占有されているとき、解放されて読み書き可能になるまで待って停止します。タイムアウトはありません。他のソフトで開いたままにしないようご注意ください。 |
| ・ | 「dlSerialFile_config.json」は設定です。説明は別項をご確認ください。 |
| ・ | ログは最大で3999行まで保持し、それ以上は古いものから削除します。 |
|
【URLの取得】
|
| ・ | URLはクリップボードを読み取って取得します。URLではない文字列が含まれているとURLとして判断しません。 |
| ・ | 複数のURLを同時に取得可能です。ただし1行に1つのみのURLとし、複数行をクリップボードにコピーしてください。 |
|
【ダウンロード】
|
| ・ | 受け取ったURLのファイル名に含まれる最も右側の数字を連番の値として解釈します。受け取ったURLが連番の最大値として、1つずつ小さな番号に置き換えてダウンロードを試みます。 |
| ・ | 複数ファイルの同時ダウンロードは行いません。 |
| |
| ・ | 連番ファイル群の拡張子の書式が一様ではないことを想定します。拡張子の書式が、受け取ったURLと同じ、全て大文字、全て小文字の場合についてダウンロードを試みます。 例として、実行ファイルに03.jPgを渡してダウンロードを開始した場合、03.jPgが無いなら03.jpgや03.JPGのダウンロードを試みます。 |
| ・ | 連番ファイル群のファイル形式が一様ではないことを想定します。1つの番号のダウンロードが失敗したとき、直ちに次の番号のダウンロードを試みるのではなく、拡張子を置き換えてダウンロードを試みます。対象の拡張子は設定で指定します。 例として、03.jpgが無いなら03.pngや03.gifのダウンロードを試みます。 |
| ・ | 連番ファイル群のゼロ埋めが一様ではないことを想定します。連番部分のゼロ埋めなしと、ゼロ埋め桁数が受け取ったURLと同じについてダウンロードを試みます。 |
| ・ | 拡張子の書式、ファイル形式、ゼロ埋め有無は、ダウンロード成功したものを優先して試みます。 例として、03.jPgを渡してダウンロードを開始した場合、連番「3」は03.jPgのダウンロードを最初に試みます。しかし03.jPgが無く3.pngを得られたなら、連番「2」は2.pngのダウンロードを最初に試みます。 |
|
【保存】
|
| ・ | ダウンロードしたファイルは設定で指定したフォルダに保存します。 |
| ・ | 1つのURLからダウンロードした一連の連番ダウンロード群1組毎に、1つのサブフォルダを作りその中に保存します。サブフォルダ名はダウンロードを開始したときの日時と8桁の乱数で決めます。 |
| ・ | ダウンロード元のURLに関係無く、連番部分をゼロ埋めしたファイル名で保存します。 |
|
【形式変換】
|
| ・ | 1つのURLから連番ファイル群をダウンロードし終えた後、それらのファイルの形式が一様ではなかったら、形式を変換して1種類に統一します。 例として、設定が["webp","jpg"]の場合、01.jpgと02.webpを得たなら01.jpgをWebP形式に変換し、変換元はごみ箱へ移動します。 |
| ・ | 現在のバージョンでは、WebP, JPEG, PNG, GIFに対応します。 |
| ・ | JPEG形式の拡張子は、"jpg", "jpe", "jpeg", "jif"で指定できます。ただし現在のバージョンでは、異なる拡張子は異なる形式として扱います。jpgとjpeを得たなら双方共JPEG形式ですが片方は再エンコードして拡張子を統一します。 |
| |
| ・ | JPEG, PNG, GIFのデコードはAppleのImage I/Oフレームワークを使用します。 |
| ・ | WebPのデコードはGoogleのlibwebpライブラリを使用します。 |
| ・ | デコードして得られた画素はImage I/Oフレームワークの描画エンジンで解釈してからエンコーダに渡します。これにより色順序や色空間を正しく反映します。 |
| ・ | JPEG, PNG, GIFへのエンコードはAppleのImage I/Oフレームワークを使用します。JPEGは品質係数を指定できます。その他の指定はありません。全てデフォルトでエンコードします。JPEGはそこそこの品質を持っていると思います。PNGの圧縮率はPhotoshopなどと比較すると、あまり良いとは言えないと思います。 |
| ・ | WebPへのエンコードはGoogleのlibwebpライブラリを使用します。非可逆圧縮します。品質係数は指定できますが品質係数以外の値はainame/Swift-WebPライブラリのプリセットpictureを用います。 |
| |
| ・ | メタデータは保持しません。 |
|
【多重起動】
|
| ・ | macOSでは、CLIツールの実行ファイルは呼び出される度に新しいプロセスとして実行します。しかしこのソフトでは複数の同時ダウンロードを行わないように動作します。 |
| ・ | 新しいプロセスは先に動作中のプロセスが無いことを確認すると、自身がダンロード実行者として動作します。 |
| ・ | 先に起動したプロセスが動作中のときに次のプロセスが起動した場合、新しいプロセスは追加者として動作し、URLをダウンロード待ちに追加するだけの動作を行います。 |
| |
| ・ | 実行者の存在有無と追加者が追加するURLは「dlSerialFile_que.txt」(以下キューファイル)で管理します。 キューファイルを正しい場所に生成できない場合は正常に動作できません。従って起動時に実行ファイルの場所を正しく得られることが重要です。 また、複数のプロセスが同時にキューファイルへの読み書きを試みて競合することを防止するために、排他制御して読み書きします。従って、他のソフトがキューファイルを開いたままにして占有すると、解放を待って停止します。 |
|
【その他】
|
| ・ | 全く同じURLを複数個受け取った場合、2個目以降はダウンロード対象外とします。ただし履歴保持は1つのプロセスの間のみ持続します。全てのダウンロードが完了して実行者のプロセスが終了するとき、ダウンロード実行履歴は破棄します。 |