閉じる

RECBOX+開発メモ

RECBOX+作成時に当たって RECBOXとの通信内容を解析した結果メモ。*1

取得系リクエスト

  • /dms/transfer_tool/api/browse / POST
    指定フォルダに含まれる録画データ/フォルダを返す。

    • id : フォルダID
    • filter : 取得対象の種類(item:録画データ / container:フォルダ / 無指定:両方)
    • requested_count : 最大数(0指定で全て)
    • 戻り値 : JSON形式で得られるので適当に調理。
      C++っぽく書けば以下の形式。

      struct TContentData{
      // item/container共に含まれる
      std::string parentid;
      std::string id;
      std::string title;
      std::string class;
      // 以下は itemにのみ含まれる
      std::string mediaType;
      FILETIME date;
      std::string aribObjectType;
      std::string url;
      bool uploadable;
      bool protected;
      std::string profile;
      __int64 size;
      };
      struct TBrowseData{
      TContentData results[];
      __int64 startingIndex;
      __int64 totalMatches;
      __int64 numberReturned;
      std::string storageId;
      };
      
  • /dms/transfer_tool/api/storage_list / GET
    ストレージに関するデータ(空き容量等が含まれる)のリストを返す。

    • 戻り値 : JSON形式で得られるので適当に調理。
      C++っぽく書けば以下の形式。

      struct TStorageSize{
      std::string name;
      std::string id;
      __int64 availableCapacity;
      __int64 totalCapacity;
      bool writable;
      };
      struct TStorageSizeList{
      TStorageSize results[];
      bool supportBackup;
      };
      
  • /dms/transfer_tool/api/transfer_status / GET
    最後の転送状況を返す。

    • 戻り値 : JSON形式で得られるので適当に調理。
      C++っぽく書けば以下の形式。

      struct TStatusData{
      std::string id;
      std::string title;
      std::string status;
      __int64 transferred;
      __int64 total;
      };
      struct TStatusDataList{
      TStatusData results[];
      };
      
  • /dms/transfer_tool/api/get_size / POST
    指定したアイテム(複数指定可)のサイズを返す。
    Webインターフェースで選択されたアイテムの合計サイズを計算するのに使うのかな?使い道が思いつかない。

    • 戻り値 : JSON形式で得られるので適当に調理。
      C++っぽく書けば以下の形式。

      struct TContentSize{
      std::string id;
      __int64 size;
      };
      struct TContentSizeList{
      TContentSize results[];
      };
      
  • /dms/transfer_tool/api/dms_list / GET
    ネットワーク転送のターゲットを返すだろうけど、転送先になる機器を持ってないので詳細不明。

処理系リクエスト

  • /dms/transfer_tool/api/rename / POST
    指定アイテムの名称を変更する。
    フォルダをリネームするとアイテムIDが変更されるので注意。

    • id : 対象アイテムID
    • new_name: 新しい名前
    • 戻り値 : 無し
  • /dms/transfer_tool/api/remove / POST
    指定アイテムを削除する。
    同期処理なのかしら?複数削除の時は順番に呼ぶだけ?

    • id : 対象アイテムID
    • 戻り値 : 無し
  • /dms/transfer_tool/api/move / POST
    指定アイテムを移動する。
    非同期処理なので transfer_statusにて処理完了をチェックする必要がある。

    • src_id : 移動するアイテムID(「,(カンマ)」で区切って一つ以上指定)
    • dst_id : 移動先フォルダID
    • 戻り値 : 無し
  • /dms/transfer_tool/api/make_directory / POST
    フォルダを作成する。

    • parent_id : 親のフォルダID
    • name : フォルダの名前
    • 戻り値 : 無し

備考

  • Webインターフェースからのリクエストでは現在時刻らしき数値をリクエストに加えているがキャッシュ対策だと思われる。*2
  • ほとんどのリクエストは POSTで行っているが、GETで行っても支障無さそう。*3
  • リクエストは 200が返れば成功。(ただし、処理が未完了の場合あり)
  • POSTデータはフォーム形式(content-type:application/x-www-form-urlencoded)で charsetは UTF8、「id=FS-1&new_name=hogehoge」という感じで 。
  • ポート番号はランダムなのかとも思ったけど、55247固定みたい。
  • move等、リクエストの発行完了と処理の完了が同期しないリクエストを続けて発行すると前の処理はキャンセルされる模様。

お約束

このページに記載されている内容は私が独自に解析した結果です
メーカーへの問い合わせはご遠慮ください。
また、内容や内容に基づいて行動した結果発生した損害についても一切責任を持てません。


*1 解析時のファームウェアは 1.49。その後、1.52まであげても問題なく動いているのでプロトコル自体に変更はなさそう。

*2 事実、キャッシュされない前提では指定しなくても支障はない。

*3 事実、browseはいけた…けど、あまり意味はないよね。

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)