Mediabox

Mediaboxは、ファイルの保存、 jsプレイ仲介する形式でのオーディオとビデオの再生 、画像の表示、メモの作成、タグの追加、コメントの書き込みを可能にするGPL3 Webアプリケーションです。







Mediaboxは、過去のOstora FMPhotoのアイデアを引き継いでおり、Xvid用に作成されたわずかに変更されたMediaboxです。







このアプリケーションは長い間ベータ版でしたが、オープンソースであるため、パブリックドメインに入れる時が来ました。 コメント、変更、改善を歓迎します。

ロゴおよびCSSスタイル自体はXVIDによって作成され、変更されていません。



アプリケーションは3つの部分で構成されています。



1) フロントエンド 。 多くの異なるライブラリを使用します:

-jquery

-Kendo UI Web、またはむしろバージョン2013.3.1119.open-source(https://github.com/Zazza/Kenju)

-bootstrap2-JSはドロップダウンの表示にのみ使用されます

-medialement-オーディオおよびビデオファイルの再生用

-jquery.Jcrop-画像にメモを作成します

-jquery.timer.js-スワイプボックスに必要

-jquery.swipebox.js-フルスクリーンとスライドショーで写真を見る

-shift.jquery.js-通常の方法でのファイルの選択(CTRL、SHIFL)

-load-image.js-フロントエンド側でプレビュー画像を作成します

-webtoolkit.url.js-UTF8 URLデコード



RequireJSは、多数のJSファイルを扱う便利な作業に使用されます。

フロントエンドは、APIを介してバックエンドとストレージで動作します。



2) バックエンド 。 ファイル構造、ファイル(画像のプレビューを含む)に関する情報を保存し、ユーザー認証を提供します。

バックエンドはもともと完全にJS( Prudence )で書かれていました。 フロントエンドはアプリケーションの独立した部分です。つまり、バックエンドに緩やかに接続されています。 この方法は、Yiiを使用してPHPを使用してバックエンドを作成するのが比較的簡単です。 アプリケーションをPHPに移植することは、できるだけ多くのユーザーがmediaboxで作業できるように特別に作成されました。 私は、Yiiフレームワークを使用して非標準の機能を備えたアプリケーションを作成することを大ファンではありません。 それにもかかわらず、強力なActive Recordとアプリケーションの単純な明確な構造のおかげで、可能な限り迅速に目的のタスクを達成することができました。



DBスキーマ:





3) ストレージ 。 ストレージタスクは、ファイルシステム内のファイルを保存、読み取り、削除することです。 理論的には、ストレージはローカルまたはリモートのファイルシステムとクラウドストレージの両方を使用してファイルを保存できます:Amazon S3、Googleドライブ、Yandexドライブなど。

<a href=" github.com/Zazza/mediabox-storage ”>シンプルメディアボックスストレージ-PHPアプリケーション、Silexフレームワーク。 アプリケーションはデータベースを使用しません。できるだけシンプルにしたかったのです。



デモ




URL: mediabox.8x86.ru

ログイン/パスワード:テスト/テスト



設置




Github: github.com/Zazza/mediabox-php-yii



SQLディレクトリから、mediabox-structure.sqlおよびmediabox-data.sqlファイルをデータベースにインポートする必要があります。



次に、/ app / config / main.phpで修正する必要があります。

'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=mediabox', 'emulatePrepare' => true, 'username' => 'mediabox', 'password' => 'mediabox', 'charset' => 'utf8', ),
      
      







バックエンドが動作するにはYIIフレームワークファイルが必要です。デフォルトでは、フレームワークディレクトリはアプリとWebがある場所にあります。



ログイン/パスワード:admin / admin



シンプルストレージのインストール:

Github: github.com/Zazza/mediabox-storage



 cd mediabox-storage/silex/ php composer.phar install
      
      







API




ファイル管理




URL リクエスト 答え 説明
/ fm / fs / $ _GET ["id"] ジョンソン

{

テキスト:...、

id:...、

hasChildren:[trueまたはfalse]、

spriteCssClass: "[フォルダ]"

}

ツリービューのディレクトリ構造を取得します
/ fm / chdir / $ _GET ["id"] *ファイルJSONオブジェクト 現在のディレクトリ内のファイルのリストを取得します
/ fm /アップロード/ $ _GET ["ファイル"]

$ _GET ["サイズ"]

$ _GET ["拡張子"]
*ファイルJSONオブジェクト データベースに新しいファイルエントリを追加します
/ fm /親指/ [FILE_ID] / $ _POST ["データ"] アップロードされたファイルが画像の場合、プレビューを保存します
/ fm / getThumb / $ _GET ["name"]、name = file_id コンテンツタイプ:image / png

バイナリデータ
プレビューを取得
/ fm /コピー/ $ _POST ["ファイル"](数MB)

$ _POST ["folder"](数MB)
セッションでコピーするファイルのリストを保存します
/ fm /復元/ $ _POST ["ファイル"](数MB)

$ _POST ["folder"](数MB)
ごみ箱からファイルを回復する
/ fm / getTypesNum / $ _GET ["id"] ジョンソン

{

すべて=> [合計ファイル]、

image => [画像ファイルの数]、

video => [ビデオファイルの数]、

音声=> [音声ファイルの数]、

その他=> [他のファイルの数]、

パス=> [HTML STRING]

}
FSの現在のパスのタイプおよびHTML文字列ごとのファイル数を取得します
/ fm /作成/ $ _GET ["name"] **フォルダJSONオブジェクト フォルダーを作成
/ fm / getTrash / $ _GET ["id"](多く) *ファイルJSONオブジェクト ごみ箱内のファイルのリストを取得する
/ fm / fileToTrash / $ _GET ["id"](多く) ファイルをゴミ箱に移動する
/ fm / folderToTrash / $ _GET ["id"](多く) ディレクトリをゴミ箱に移動
/ fm /削除/ $ _GET ["id"] データベースとストレージからファイルを削除する
/ fm / rmFolder / $ _GET ["id"] データベースとストレージからディレクトリを削除する

/ fm / removeFileByName / $ _GET ["name"] 平文

file_idを返します
現在のディレクトリ内のデータベースから名前でファイルを削除します(現在のダウンロードをキャンセルする必要があります)
/ fm /バッファ/ *ファイルJSONオブジェクト バッファー内のファイルのリストを取得します(コピー用)
/ fm /過去/ セッションから現在のディレクトリにファイルを移動します
/ fm / deleteFileFromBuffer /

$ _GET ["id"] *ファイルJSONオブジェクト クリップボードからファイルを削除(コピー用)
/ fm / clearBuffer / バッファをクリア(コピー)

/ fm /並べ替え/ $ _GET ["type"] ファイルの並べ替えを適用する
/ fm /ビュー/ $ _GET ["view"] ファイル表示モードを適用する

/ fm /タイプ/ $ _GET ["other"]

$ _GET ["画像"]

$ _GET ["ビデオ"]

$ _GET ["音楽"]
保存リスト-表示するファイルの種類と表示しない種類




*ファイルJSONオブジェクト:

 { id: …, name: …, shortname: …, obj: file”, type: [video,audio,…], mimetype: …, size: …, date: …, ico: …, src: …, ext: …, }
      
      







**フォルダJSONオブジェクト:

 { Id: …, name: …, shortname: …, obj: "folder", date: …, size: …, ico: …, parent: [ID   ] }
      
      







音声




URL リクエスト 答え 説明
/オーディオ/ saveList / $ _POST ["track"](多く) 現在のプレイリストにトラックを保存
/オーディオ/ createList / $ _GET ["name"] 新しいプレイリストを作成する
/オーディオ/ showList / ジョンソン

{

Id:...、

名前:...

}
プレイリストのリストを取得する
/オーディオ/ getTracksList / ジョンソン

{

Id:...、

名前:...

}
デフォルトのプレイリストの現在のトラック
/オーディオ/ setPlaylist / $ _GET ["playlist-id"] プレイリストを最新にする
/オーディオ/ deletePlaylist / $ _GET ["playlist-id"] プレイリストを削除
/オーディオ/ボリューム/ $ _GET ["レベル"] 音量を変える




画像


URL リクエスト 答え 説明
/ image / setCrop / $ _GET ["_ id"]

$ _GET ["desc"]

$ _GET ["ws"]

$ _GET ["x1"]

$ _GET ["x2"]

$ _GET ["y1"]

$ _GET ["y2"]
写真にタグを保存
/画像/ addTag / $ _GET ["_ id"]

$ _GET ["タグ"]
タグを追加
/ image / getCrops / $ _GET ["id"] ジョンソン

{

x1:...、

x2:...、

y1:...、

y2:...、

ws:[タグ付けされたときの画像の高さ]、

説明:...、

}
画像の注釈(座標とテキスト)を取得します
/ image / getTags / $ _GET ["id"] ジョンソン

{

タグ:...

}
画像のタグを取得
/ image / addComment / $ _GET ["id"]

$ _GET ["テキスト"]
コメントを追加
/ image / getComments / $ _GET ["id"] ジョンソン

{

テキスト:...、

ユーザー:...、

タイムスタンプ:...、

}
画像のコメントを取得
/ image / getAllTags / ジョンソン

{

タグ、タグ、...

}
すべてのタグのリストを取得します
/ image / getAllCrops / ジョンソン

{

タグ名、タグ名、...

}
すべてのメモのリストを取得する
/画像/ selTag / $ _GET ["タグ"] タグを選択-現在の画像のタグとタグのリストを返します
/画像/ selCrop / $ _GET ["作物"] タグを選択-現在の画像のタグとタグのリストを返します
/ image / getFsImg / *ファイルJSONオブジェクト:

{

id:...、

名前:...、

ショートネーム:...、

obj:ファイル”、

タイプ:[ビデオ、オーディオ、...]、

mimetype:...、

サイズ:...、

日付:...、

ico:...、

src:...、

ext:...、

}
選択したタグとタグに一致する画像のリストを取得します。




ストレージAPI




URL リクエスト 答え 説明
/保存/ $ _POST ["id"]

$ _POST ["name"] +ファイル
ファイルを保存
/取得/ $ _GET ["id"] ファイルストリーミング ファイルを取得
/削除/ $ _GET ["id"] ファイルを削除




PS

異なるバックエンドを持つ古いバージョン



All Articles