english

TS viewer for Amazon Cloud Drive

Last Update: 2017/12/03
logo

新バージョン TS viewer for Cloud Driveを公開しました。

Amazon Driveに保存した動画や音楽ファイルをストリーミング再生するソフト。
20分制限に関係なくダウンロードしながら再生できます。
再生できる形式はFFmpegがデコードできる形式ですので、一般的なフォーマットにはすべて対応しています。

TSファイル(MPEG-2 Transport Stream)は、UDPで送信できます。
この機能を使うと、TVtestなどのTSファイル視聴に適したソフトを使用して、Amazon Driveの動画をストリーミング再生できます。

AES-256 CTR modeまたはCBC mode(CarotDAV互換) で暗号化することができます。このソフト上では透過的に操作できます。
暗号化したファイルでも、ストリーミング再生が可能です。

ファイルのアップロードやダウンロード、フォルダの作成などのファイル操作が可能です。
コマンドラインからアップロードできますので、バッチジョブで上げることも可能です。
ローカルとリモートのフォルダを指定して、一致しているかどうかチェックする機能があります。
正常にダウンロードできるかテストできます。

スクリーンショット

screen shot screen shot2

download

レジストリ修正パッチ
TSviewACD_Browser.zip

ポータブル版
TSviewACD_20170222.zip

インストーラ版
TSviewACD_20170222_installer.zip

ソースファイル
TSviewACD_20170222_src.zip
GitHub https://github.com/lithium0003/TSviewACD

過去のバージョン

TSviewACD_20160831(version 3.0.1.0831)以降のこのソフトは、LGPLv2.1でライセンスされたFFmpegのコードを使用しています。
使用しているソースコードは、ここからダウンロードできます。
このソフトで使用しているFFmpeg+SDL2のコンパイル方法はこちらを参照

このプログラムは、c# .NET 4.5.2でコンパイルされています。
Microsoft .NET Framework 4.5.2 のランタイムが必要となる場合があります。

このプログラムは、Visual Studio 2015 c++でコンパイルされています。
Visual Studio 2015 の Visual C++ 再頒布可能パッケージ が必要です。

更新履歴

2016/04/30 : 1.2.0.0430
公開バージョン
2016/05/03 : 1.3.1.0503
コマンドラインでアップロードとダウンロードができるようにした
UDP送信の際のウエイトの入れ方を改良した
2016/05/04 : 1.3.2.0504
D&Dの挙動を修正し、移動しやすくした
2016/05/05 : 1.4.0.0505
コマンドラインで、アイテムの一覧ができるようにした
2016/05/05 : 1.4.1.0508
UDP送信時に転送が遅れた場合、回復後に送りすぎてしまう問題を修正
アップロード時のファイル存在チェックで落ちた場合、エラーになるのを修正
2016/05/16 : 2.0.0.0516
ドライブのファイル情報の取得のやり方を変更し、キャッシュするように修正
コマンドラインからのアップロードやダウンロードでハッシュチェックするオプションを追加
2016/08/31 : 3.0.2.0831
FFmpeg(ffplay)を使って、メディアをストリーミング再生する機能を追加
2016/08/31 : 3.0.4.0831
ffplayの読み込みが途中で切断された場合のリトライ時に、
スライドバーがおかしくなるのを修正
2016/09/21 : 4.0.0.0921
動画の読み込みに、FFmpegとSDL2のライブラリを直接呼び出すように変更し、シーク可能に。
2016/09/24 : 4.0.1.0924
動画のサイズ変更を可能に
2016/09/25 : 4.0.2.0925
32bitバイナリを追加
2016/09/28 : 4.0.3.0928
途中でオーディオのチャンネルが変化する場合の不具合を修正
ソースの音量が小さい時に調節できるようFFmpegのオーディオフィルタを追加
動的音量正規化フィルタを追加
2016/09/29 : 4.0.4.0929
エクスプローラーからのD&Dでアップロードする時にエラーとなるのを修正
2016/09/29 : 4.0.5.0929
一部の音声フォーマットが再生できないのを修正
2016/10/02 : 4.0.6.1002
メモリを取り過ぎるのを修正
ローカルとリモートの比較機能を更新
2016/10/06 : 4.1.1.1006
FFmpegのバージョンを更新
変更の検出に使うAPIを変更
暗号化できるように。AES-256 CTR modeで透過的に暗号化されます。
FFmpegの機能を使わない場合は、DLLをロードしないように変更
2016/10/07 : 4.1.2.1007
FFmpegプレーヤーで再生の最後に音声がおかしくなるのを修正
ドライブキャッシュが肥大化するのを修正
2016/10/09 : 4.1.3.1009
FFmpegプレーヤーのバグを修正
2016/10/13 : 4.1.4.1013
日本語と英語を切り替えられるように
2016/10/16 : 4.1.5.1016
インストーラ版の作成
アカウントの切替時のバグを修正
2016/10/17 : 4.1.6.1017
確実にダウンロードできるか確かめる機能を追加
2016/10/18 : 4.1.7.1018
FFmpegプレーヤーのバグを修正
2016/10/28 : 4.1.12.1028
FFmpegのバージョンを更新
SDL2のバージョンを更新
10GBより少し小さいファイルがダウンロードできないのを修正
アップロード時のバッファを大きくした
ファイル一致結果からアップロードする際、フォルダが必要でないのに作成されるのを修正
CUIモードの修正
2017/01/28 : 5.0.0.10128
インストーラ版のVisual C++ 2015ランタイムのダウンロードURLを修正
検索でファイルサイズによって絞れるように
一時ダウンロードリンクを生成できるように
リストビューの描画方法を変更して件数が多いときに遅くなりにくくした
ドライブのキャッシュの保持方法を変更し、ドライブに多数のファイルがあるときに遅くなりにくくした
GUIでアップロードした際に、同名の異なるファイルがある場合に上書きするように変更
GUIでアップロードする際、大文字小文字違いの同名ファイルがある場合に止まるのを修正
(Amazon Driveではどちらかのファイルしか存在できないので、一方のみ保持されます。ご注意ください)
エクスプローラにDrag&Dropしてダウンロードできるように
複数立ち上げて、Drag&Dropによりファイルの移動ができるように
2017/01/28 : 5.0.1.10128
自動生成のファイルを検索結果から除外できるように
(ファイルを選択すると除外できます。どちらも選択していないとこれまで通りの動作です)
検索しながらファイル操作をしてリロードされた場合、再度検索するように
一時ダウンロードリンクの生成で、1つだけの場合はクリップボードにURLを送るように
2017/01/29 : 5.0.2.10129
ドライブの変更の検出の応答が大きいときに落ちるのを修正
2017/02/02 : 5.1.0.10202
暗号化の挙動を変更
ファイルの移動を、Cut&Pasteで行えるように
クリップボードを介して、エクスプローラとやりとりして送受信できるように
APIキーがマルウエア検出に反応するので秘匿した
2017/02/02 : 5.1.1.10202
選択がないときにクリップボードに送ろうとすると落ちるのを修正
2017/02/06 : 5.1.4.10206
暗号化ファイルの名前のデコードが遅いのを修正
アップロードとダウンロード時にMD5ハッシュを常に確認するように
デバッグログが化けるのを修正
初回起動時に落ちるのを修正
完全削除済みのアイテムが多すぎると初回起動時にドライブデータ取得に失敗するのを修正
2017/02/15 : 5.2.1.10215
複数のジョブを平行して実行できるように変更
実行中のジョブをわかりやすく表示するように
CUIモードに機能を追加
内蔵プレーヤーで、音声ファイルを再生した場合にカバーイメージが表示されないのを修正
2017/02/17 : 5.2.2.10217
プログレス表示を改善
CUIダウンロードで、リストにあるファイルはダウンロードしないモードを追加
2017/02/17 : 5.2.3.10217
マスターパスワードを設定できるように
ウインドウ位置を覚えるように
2017/02/18 : 5.3.0.10218
ドライブのキャッシュをディスクに保存するのを終了時のみに変更
クライアントシークレットがない場合でも、サーバサイドで認証が行えるように
(バイナリ配布版ではアプリが直接アクセスします)
2017/02/22 : 5.3.1.10222
CUI版でドライブ情報キャッシュが保存されないバグを修正
進行状況ウインドウの位置をメインウインドウに追随するように #2
サーバーサイドでのトークン取得処理を調整
FFmpeg再生ウインドウで再生位置のプログレス表示(シークバー)が出るように #4

使い方

ポータブル版の中身は次のとおりです。
実行ファイルディレクトリの中身を任意の場所に配置してください。
ポータブル版を展開する前に、プロパティのインターネットからダウンロードしたファイルの セキュリティブロックを解除しておいてください。DLLをロードする際にエラーとなります。 インストーラ版の中身は次のとおりです。
64bitもしくは32bitを選び、setup.exeを実行してシステムにインストールしてください。
msiファイルからインストールすることもできますが、runtime等が自動でインストールされません。 実行ファイルのフォルダは以下のようになっています

TSviewACD.exeとffmodule_conf.dllは、起動に必須のファイルです。
ja/TSviewACD.resources.dllは日本語で表示する場合に必要です。ない場合は英語で表示されます。
これ以外のDLLは、内部プレーヤー機能を使わない場合ロードされません

TSviewACD.exeを実行すると、最初にAmazon Driveへのログイン画面が出ます。
ログインが成功すると、ログインウインドウが消え自動的に起動します。

認証時の注意

(2017/10/28追記)
Amazon側のサーバの更新により、ブラウザコンポーネントがデフォルトのままではブラウザが古い旨の
警告が出て初回ログインができません。
レジストリ修正パッチ TSviewACD_Browser.zip をダウンロードし
展開してできたTSviewACD_Browser.regを実行して、TSviewACDが使用するブラウザコンポーネントを新しいものを使うように修正してください。

Amazon Driveへのログイン画面は、OSの言語設定に応じて表示されます。
日本語で表示されていても、comのアカウントとjpのアカウントのどちらでもログインできます。

ただし、comとjpの両方にアカウントを保持しており、メールアドレスとパスワードの組を
共通で使用している場合においては、OSの言語設定の方にしかログインできません。
どちらかのアカウントの、パスワードかメールアドレスを変更することにより、
意図した方にログインできるようになります。

ログイン時に、ブラウザのバージョンが古くてログインできない旨の表示が出る場合があります。
ログイン先のアカウントで、Amazon Driveを初めて使用する場合にこのような状態になります。
一度、公式Webサイトからセットアップを済ませてから、ログインしてください。
.comと.jpとでログイン先が間違っている場合に現れることがあります。

もくじ

画面構成

3ペインで、左側にツリー、右側にリストビューがあります。
上部にあるコントロール画面は、タブになっていて切り替えられます。

window info

右側のリストビューは、カレントフォルダ(操作対象のフォルダ)の内容を表示しています。
後述する検索結果もこのリストビューに表示され、操作対象とすることができます。

各種操作の実行

左側のツリーや、右側のリストビューを操作することにより、現在見ているカレントフォルダを切り替えて
操作したいファイルやフォルダを探して、実行するようになっています。

各種操作は上部のコントロールパネルからのほかに、右側のリストビューで右クリックすることに
よるコンテキストメニューからも行えます。

ドライブデータのキャッシュ

ver2.0.0.0516より、ドライブのデータを表示するやり方を変えました。
いったんすべての情報を一気に読み取り、drivecache.binにキャッシュします。
その後リロードが発生した場合は、差分情報のみを取得するようにしています。
キャッシュに何らかの不整合が生じた場合は、CtrlかShiftを押しながらReloadボタンを押して
キャッシュをすべて破棄して強制リロードを行ってください。

アップロード

Navigation(操作)タブのupload(アップロード)ボタンを使用するか、D&Dによりアップロードできます。
ファイルをエクスプローラから貼り付けることもできます。

Navigation(操作)タブの、Skip already uploaded files(既にファイルがある場合はアップロードしない)
チェックボックスをオンにすると、アップロード時に既に同じファイルが上がっているかのチェックを行います。
check MD5(MD5ハッシュも使う)チェックボックスをオンにすると、その際にファイルのハッシュも比較します。
Override conflict files(ファイルの競合が起きたら上書き)チェックボックスをオンにすると、ファイルの競合が起きたときに自動で上書きします。

サーバー側の制限により、50GB(約52,000,000,000 Byte)をこえるサイズのアップロードに失敗します。
また、大文字小文字違いの同名ファイルは、そのうちのひとつしか存在できません。

ダウンロード

右側のリストビューで、ダウンロードしたい項目(複数可)を選択して、
右クリックのコンテキストメニューからDownload Item(ダウンロード)を実行してください

右側のリストビューで選択してエクスプローラにD&Dするか、Cut(Ctrl+X)でクリップボードに送りエクスプローラに貼り付けることもできます。

ダウンロード時の既知の不具合

いわゆるASCIIでないようなファイル名かつ、10GB程度の大きいファイルである場合、
APIでは通常のやり方ではダウンロードできませんでした。

対症療法として、一旦適当なファイル名に変更してからダウンロードすることにより
この不具合を回避しています。

このため、メタデータの更新日時が強制的に更新されてしまいます。
また、一時的にファイル名を変更中に不測の事態が起きると
元のファイル名が失われるおそれがあることに注意してください

移動

右側のリストビューで選択した項目は、D&Dにより移動できます。
Cut(Ctrl+x)でクリップボードに入れてから、目的のフォルダでPaste(Ctrl+v)をすることでも移動が可能です。

通常のフォルダビューになっている場合でも、検索結果になっている場合でも、
..(親フォルダ)項目を含むフォルダに対して移動できます。
元フォルダ自身に移動しようとしたり、項目が重複するような移動の仕方では失敗します。

また、左側のツリービューに対してもD&Dできます。
ツリーのファイルに対してDropした場合は、その親フォルダに対してDropしたものと見なされます。

FFmpegによる再生

FFmpegとSDL2のモジュールを利用して、動画や音楽をダウンロードしながら再生できます。
対応ファイルはFFmpegでデコードできるものすべてです。

右側のリストビューで、再生したい項目(複数可)を選択してください。
上側のコマンドタブのffmpegを選択し、三角の再生ボタンを押してください。
コマンドタブでffmpegを選択している時は、項目のダブルクリックで再生できます。

再生すると、別のウインドウが開き動画が流れます。
この動画のウインドウに対して、コマンド入力及びマウス入力により動画の操作を行います。

ffmodule info

音楽ファイルを再生した場合は、同名の画像ファイルがないか調べ、あればそれを表示します。
カバー表示などに使用できます。

チャプターがついている動画ファイルは、チャプターで飛べると思います。
FFmpegが認識していない場合は動作しません。

FFmpegで認識できる字幕がついている場合には、表示できるように作ったつもりです。
サンプルがないのでテストが甘いですのでバグ報告よろしくお願いします。
画像形式、text形式、ass形式に対応しましたが、ass形式では装飾は解釈されません。
フォントがないと表示できませんので、text、ass形式の字幕の場合は表示したい文字を含む
フォントを設定から指定しておいてください。

まれに接続が非常に遅いものをつかんでしまう場合があります。
できるだけ接続をキープするように努力していますが、デフォルトで128KiB/s以下の転送速度で
遅すぎると見なし再接続するようになっています。
これよりも遅い回線で利用したい場合は、設定から変更してください。

エンコードの設定によっては、ファイルの前後ろと飛びまくってデコードしなくてはならない動画もあります。
このようなものは、一応再生できますがバッファにすべて載らないと再生できないので、ダウンロードするのと
変わりなくなってしまいます。(divxの一部のフォーマット)

動画側のタイムコードがちゃんと乗っていない、mjpegなどはちゃんとシークできません。
これはFFmpegがエラーを吐いてしまうためです。

番組枠が複数番組でひとつになっているファイルをそのまま保存しているような場合
録りためた特定の番組のみ連続再生したい場合があると思います。
その場合は、Startテキストボックスと、Durationテキストボックスを使います

例えば、枠の開始30分後から15分間の番組を再生したい場合は、
Startに、0:30:00
Durationに、0:15:00
と入力してから、再生を実行することにより、読み込み後30分のところにシークし
15分で再生が打ち切られて次に行くようになります。

音量調節は、Insert/Deleteで行う音量調節の他に、FFmpegのvolumeオーディオフィルタによる
ソース自体の音量調節(F1/F2)があります。
動画の音が小さい場合、volumeフィルタによる音量調節で大きくする必要があります。
実験的に、dynaudnormオーディオフィルタを入れました。(F4)
このフィルタを使うと、動的に音量が自動で調節されます。
しかし、約15秒間の先行した音声データが必要となるため、ダウンロード速度によっては
切り替え時に少し止まることがあります。

UDP ストリーム送信

MPEG TS ストリームを、ダウンロードしながらUDPストリーミングできます。

右側のリストビューで、再生したい項目(複数可)を選択してください。
右クリックのコンテキストメニューからSend UDP(UDPで送信する)を実行するか、
上側のコマンドタブのSend UDP(UDP送信)を選択し、三角の再生ボタンを押してください。
コマンドタブでSend UDP(UDP送信)を選択している時は、項目のダブルクリックで再生できます。

Send UDPコマンドタブには、シークバーが用意されています。
MPEG TSのストリームに挿入されている、時間情報は5秒おきなので
(それより細かい時間はちゃんとパケットを解析する必要があり面倒なので)
あまり詳細なシークはできません。だいたいこの辺に飛ぶものと思って使用してください

番組枠が複数番組でひとつになっているファイルをそのまま保存しているような場合
録りためた特定の番組のみ連続再生したい場合があると思います。
その場合は、Diff Startテキストボックスと、Durationテキストボックスを使います

例えば、枠の開始30分後から15分間の番組を再生したい場合は、
Diff Startに、0:30:00
Durationに、0:15:00
と入力してから、再生を実行することにより、だいたいその辺から始まり、
だいたい15分で再生が打ち切られて次に行くようになります。

パケットの送信レートは、だいたい計算通りに飛ばすようにしています
こちらの環境では、TVTestで受信するとうまくいきました。
VLCの場合は、受信が安定しない場合があります。
クロック同期を調整するとうまくいくかもしれません。

環境によっては、上側のコマンドタブのConfigを選び、パラメータを微調整する
必要があるかもしれません。
UDP send packet size : 一度に送信するパケット数
UDP send delay add : 一度の送信につき追加で入れるウエイト
Long term bitrate control offset : 時間ベースの送信コントロールで、先行させる時間
Bitrate caluculation by
UDPsend : 送信ビットレートの計算に何回平均を使用するか
TOT : ストリームのビットレートの推定に、TOT(5秒おき)何個分を使用するか

TVTestなどの再生ソフト側で、ストリームのクリアやバッファのクリアが
ショートカットキーによって可能な場合、設定するとシークやファイルの
切り替え時に障害が少なくなります。
Send a key to other Application when stream changedの
keyの横のテキストボックスにカーソルを合わせ、何かキーを押すと
送信するキーコードが登録されます。
Application Nameに、再生ソフトのイメージ名(実行ファイルの名前)を
入力してください。
再生ソフトが起動していれば、シークやファイルの切り替え時に
ソフトに内部的にキーを押したことにする処理が行われます。

Amazon Driveのファイルやフォルダすべてに対して、検索をかけることができます。
部分一致検索のほか、正規表現による検索も可能です。

上のコマンドタブで、Findを選択し、Find textに何も入れずにSearchボタンを押すと、
すべてのファイルやフォルダが、右のリストビューに表示されます。

Find textに入れた文字は、部分一致検索で絞り込みが行われます。
Regexチェックボックスをオンにすると、正規表現による絞り込みに切り替わります。

ファイルのみ、フォルダのみの検索や、作成日時(アップロード時間)や
更新日時による検索もできます。
サイズによる絞り込みもできます。

検索結果が表示されている、右側のリストビューは、通常と同じように
右クリックからダウンロードしたり、再生を行うことができます。

ローカルのファイルとの一致照合

リモートのファイル群が、ローカルのファイルリストと一致するか照合する機能があります。
たくさんのファイルを上げたときに、すべて上がっているかどうかを調べることができます。

現時点では、暗号化したファイルとの照合ができません。

Folderタブの Check Fileボタンを押すと、比較ウインドウが開きます。
左側にローカルのファイル、右側にリモートのファイルを選択し比較します。

match window

左側のローカルの方には、Add Local Fileボタンを用いてファイルを追加することや、
Add Local Folderボタンを用いてフォルダのしたのファイルをすべて追加することができます。
また、エクスプローラからD&Dで追加できます。

右側のリモートの方には、現在選択している項目をAdd Remote Itemで追加できます。
フォルダが指定された場合は、その下のファイルを再帰的に追加します。
リストビューから項目をD&Dで追加することが可能です。

Keep treeチェックボックスがオンの場合は、ディレクトリ構造を保ったまま比較します。
オフの場合は、ファイル名のみで比較します。

Calculate MD5 and Matchingチェックボックスがオンの場合は、比較する際にMD5ハッシュも用います。
ローカルのファイルに対して、MD5ハッシュの計算が行われます。
(Amazon側ではアップロード時に計算されています)

match window

比較結果は、別のウインドウに表示されます。
Local Only Filesには、ローカルにのみ存在するファイルが
Remote Only Filesには、リモートにのみ存在するファイルが
Both but Unmatch Filesには、両方に存在するがファイルサイズ(またはMD5ハッシュ)が異なるファイル
Both Matched Filesには、両方に同じファイルが存在するものが挙げられます。

Local Duplicate FilesとRemote Duplicate Filesには、ファイル名のみで比較した際に
同じファイル名で複数のファイルがある場合に、その内訳が表示されます。

設定の保存

認証情報や、その他の設定情報は、ポータブル版では実行ファイルと同じ場所の TSviewACD.xml に保存されます。
インストーラ版では%AppData%\lithium03\TSviewACD以下に保存されます。

保存される認証情報は、ユーザ名やパスワードではなく、Amazon APIから返されたトークンとなります。
返されたトークンと、実行ファイル内に保存してあるアプリの秘密情報を組み合わせることにより、
次回からは自動でログインできるようになります。
アプリの秘密情報は、ソースファイルからは除いてあります。

コマンドラインからの起動

コマンドラインから、引数をつけて起動するとCUIモードで起動します。
CUIモードでは、一覧表示およびアップロードとダウンロードができます。

usage
        help                                      : show help
        list (REMOTE_PATH)                        : list item
                --recursive: recursive mode
                --md5: show MD5 hash
                --nodecrypt: disable auto decrypt

        download (REMOTE_PATH) (LOCAL_DIR_PATH)
        download (REMOTE_PATH) (LOCAL_DIR_PATH) (IGNORE_LIST)
         : download item(s)
        download_index (INDEX_PATH) (REMOTE_PATH) (LOCAL_DIR_PATH)
        download_index (INDEX_PATH) (REMOTE_PATH) (LOCAL_DIR_PATH) (IGNORE_LIST)
         : make link index after download item(s)
                --nodecrypt: disable auto decrypt

        upload   (LOCAL_FILE_PATH) (REMOTE_PATH)  : upload item
        upload_watch (INDEX_PATH) (LOCAL_PATH_BASE) (REMOTE_PATH)
         : watch INDEX_PATH for index file(file location file).
         : upload directed files and remove local file
                --md5 : hash check for conflict
                --createpath: make upload target folder mode
                --crypt1: crypt upload mode(CTR mode)
                --crypt1name: crypt filename(CTR mode)
                --crypt2: crypt upload mode(CBC mode CarrotDAV)
                --nocrypt: nomal upload mode
                --nodecrypt: disable auto decrypt

                --debug : debug log output

一覧表示

TSviewACD list /*
TSviewACD list /Documents/*
TSviewACD list --recursive --md5 /*

引数に、一覧表示するリモートパスを指定します。
フォルダの内容を一覧する場合は、最後に*をつけてフォルダ内すべてを指定してください。
--recursiveオプションを付加して、/* のように指定するとそのフォルダ以下を再帰的に列挙します。
--md5オプションを付加すると、ファイル名と共にサーバの報告するMD5ハッシュを表示します。
--nodecryptオプションを付加すると、ファイル名の自動復号が無効になります。

日本語環境のコマンドプロンプトは、デフォルトでShift-JISとなっています。Unicodeなファイルは文字化けします。 リダイレクトでファイルにリストを取ろうとしても、Shift-JISとなってしまいます。
これをUTF8で出力するようにするには、次のようにコードページを変更してください。

C:\> chcp 65001
C:\> TSviewACD list --recursive --md5 /* > drive.txt

コマンドプロンプトのコードページをUTF-8にした場合、デフォルトでは日本語フォントがないフォントが指定されており 日本語が表示できません。 プロパティー→フォントからMSゴシック等を指定しておくと表示できるようになります。

アップロード

TSviewACD upload c:\test\test.txt /Documents/
TSviewACD upload --createpath c:\test\test.txt /test/test1/test2/

引数に、アップロードするローカルファイル、アップロード先のリモートパスの順に指定します。

既に同名のファイルが存在するかどうかチェックを行います。
同名同サイズのファイルが存在する場合は、ret=99で終了します。
サイズが異なる場合は、既存のファイルをゴミ箱に移動の上アップロードを行います。

--md5をつけると、同名同ハッシュのファイルが存在する場合ret=999で終了します。
ハッシュが異なる場合は、既存のファイルをゴミ箱に移動の上アップロードを行います。

--createpathをつけると、指定したリモートパスが存在しない場合に全て作成します。

--crypt1を指定すると、CTRモード(ファイル名暗号化なし)、--crypt1nameでCTRモード(ファイル名暗号化あり)
--crypt2を指定すると、CBCモード(CarotDAV互換)、--nocryptで暗号化なしでアップロードされます。
ここでの指定が、GUIモードで指示された暗号化方式を上書きします。
パスワードは指定できませんので、GUIモードから設定してください。

ダウンロード

TSviewACD download /Documents/test.txt d:\download\tmp.txt
TSviewACD download /Documents/*.txt
TSviewACD download /* d:\download ignore.txt

引数に、ダウンロードするファイルののリモートパス、ローカルの保存パス順に指定します。
最後の引数にに、既にダウンロード済みのリストを指定できます。UTF-8で保存しておいてください。
ローカルの保存パスは省略可能です。省略した場合はダイアログが出ます。
リモートパスには、*と?を指定して複数指定することができます。

ダウンロード無視リストは、listモードで出力された形式をファイルに保存したものを指定します。 UTF-8を想定していますので、コマンドプロンプトからリダイレクトで生成する場合は注意が必要です。

--nodecryptをつけた場合は、自動で暗号化を解除してダウンロードする機能が無効になり
そのままのファイルをダウンロードすることができます。
CTRモードでファイル名を暗号化している場合、ここで表示されるnonceがファイルの復号に必要です。
別の場所で保管する場合は、記録しておかないとデータを失います。

ダウンロードしてインデックスファイルを作成

TSviewACD download_index d:\index /Documents/* d:\download

引数に、インデックスを作成するフォルダ、リモートパス、ダウンロードするフォルダの順に指定します。
最後の引数にに、既にダウンロード済みのリストを指定できます。UTF-8で保存しておいてください。
ダウンロードと同様にオプションが指定できます。

このモードは、次のフォルダ監視してアップロードと組み合わせてアカウント間のファイルの移動を行うために作成しました。
ファイルをダウンロードした後、そのファイルのパスを記録したテキストファイルをインデックスフォルダに作成します。
インデックスフォルダを監視しておくことで、ファイルがダウンロードされ次第アクセスすることが可能です。

フォルダを監視してアップロード

TSviewACD upload_watch d:\index d:\download /Documents/

引数に、監視するフォルダ、パスの起点となるフォルダ、リモートパスの順に指定します。
アップロードと同様にオプションが指定できます。

このモードは、次のフォルダ監視してファイルが見つかり次第、その中身を読み込みそこに記載されたパスのファイルをアップロードします。
アップロードする際、パスの起点となるフォルダからの相対パスで、 自動的にリモートのフォルダが作成されリモートの該当のフォルダにアップロードされます。 この例の場合、d:\download\test\text1.txtをアップロードされるときは、/Documents/test/text1.txtとなります。 終了する場合はCtrl+Cでキャンセルしてください。

暗号化

AES-256 CTRモードまたはCBCモード(CarotDAV互換) で暗号化する機能がついています。
CTRモードで暗号化されたファイルはファイル名に".xxxxxxxx.enc"が付加されます。
また、ファイル名自体を暗号化することもできます。 CBCモード(CarotDAV互換)では、常にファイル名は暗号化されます。

暗号化のプロトコルは、CTRモードCarotDAVの暗号化についてを参照。

CTRモード

このモードで暗号化されたアイテムは、青色の文字で表示されます。

CTRモードで暗号化する場合、拡張子が".enc"のファイルは暗号化ファイルと見なされます。
この拡張子のファイルが既にある場合、うまく動作しませんので注意してください。
CTRモードでのファイル名の暗号化には、Unicodeの点字領域が使われます。
既に点字のファイル名を使用している場合はうまく動作しませんので注意してください。

CTRモードで暗号化した場合、ファイル名が鍵の一部となっています。
ファイル名の変更を行うと、デコードできなくなり内容が失われます。
変更が必要な場合は一度ダウンロードし、再度アップロードしてください。

非常時に、他のソフトから暗号化状態でダウンロードしてローカルで復号するには、DecodeCTRをご利用ください。 ただし、ファイル名を暗号化しない場合にのみ、ローカル復号が可能です。 ダウンロードしたファイルのファイル名は変更してはいけません。ファイル名も鍵の一部です。

CBCモード(CarotDAV互換)

このモードで暗号化されたアイテムは、緑色の文字で表示されます。

CBCモードは、CarotDAVの暗号化について で公開されているCarotDAVと互換性を持たせた暗号化方式です。
非常時に、他のソフトから暗号化状態でダウンロードしてローカルで復号するには、DecodeCarotDAVをご利用ください。

CBCモードでの暗号化は常にファイル名が暗号化されます。
暗号化アイテムの名前は、"^_"、":D"、";)"、"T-T"、"orz"、"ノシ"、"(´・ω・)"の7種類から使用者が選んだもの
で始まる英数字の名前となります。

CBCモードで暗号化されたファイルは、ダウンロード時にハッシュチェックが行われます。
破損している場合エラーとなり、ダウンロードできません。
ストリーミング再生時は、ランダムアクセスのためハッシュチェックは行われません。

注意点

暗号化のパスワードを変更した場合、変更前のファイルはデコードできなくなります。
どのファイルに何のパスワードが使われたかの紐付けは行われておりません。
パスワードが一致しない場合、デコードは不能です。デコードエラーとなります。
エラーが検出できた場合は表示が赤くなります。このファイルは自動復号してダウンロードできません。

CTRモードでのファイル名暗号化は、Amazon Driveのアイテムidに依存しています。
他のソフトから単純にダウンロードしただけでは復号できません。
CTRモードで名前を暗号化していないファイルは、ファイル名が鍵の一部です。
他のソフトからダウンロードした場合、ファイル名を記録しておかない場合復号不能になります。
CBCモードで暗号化されたファイルは、ファイル名と内容は独立に暗号化されます。
CarotDAV以外の他のソフトからダウンロードしても、パスワードのみで復号できます。

保存したパスワードは、難読化(デフォルトの既知のマスターパスワード)もしくは ユーザー指定のマスターパスワードで暗号化され設定ファイルに保存されます。
マスターパスワードを指定した場合、起動時に正しいものを入れない限り起動できません。
CUIモードでは、リダイレクトで入力するか、指定のない場合ダイアログが出ますので入力してください。
パスワードを失った場合の復元手段はありません。 暗号化機能は、失ってもよいファイルで十分テストしてからご利用ください。

らいせんす

TSviewACD.exe, ffmodule.dll 本体
NYSL:煮るなり焼くなり好きにしろライセンス でお願いします。お好きにどうぞ。

FFmpeg
LGPLv2.1

SDL2, SDL_ttf
zlib license


Windows10 pro で問題なく動作していますが、他の環境では動かないかもしれません。
本番で使用する前に、テストフォルダやテストファイルで想定の動作をするか確認してから
使用してください。

コンパイルは Visual Studio 2015 で行いました。

この物置のプログラムはあるがままの形で提供しています。
無保証ですが、不具合やバグ、機能追加について何かあれば
contact@lithium03.infoもしくは某巨大掲示板のAmazonスレやOneDirveスレ、
クラウドストレージ関連スレ周辺に分布していますので教えていただければ時間のあるときに直します。