Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

將以下資訊以存成兩份 json #34

Open
ghost opened this issue Oct 26, 2018 · 5 comments
Open

將以下資訊以存成兩份 json #34

ghost opened this issue Oct 26, 2018 · 5 comments
Assignees

Comments

@ghost
Copy link

ghost commented Oct 26, 2018

將以下資訊以存成兩份 json(.mma.json 與 .mmm.json) 至特定 S3 位置,內容包括
project、site、sub_site、location、錄影上傳後的網址(url)、開始時間(date_time_original)、片長(length_of_video)、播放清單ID (youtube_playlist_id) 等資訊。

  • 位置規則: 以上傳原檔名為 J01-10260071_2015-10-26-18-33.MP4 為例
    -- {$bucket}/json/{$upload_session_id}/J01-10260071_2015-10-26-18-33.MP4.mma.json
    -- {$bucket}/json/{$upload_session_id}/J01-10260071_2015-10-26-18-33.MP4.mmm.json
  • .mma.json 範例 (mma => multimedia annotations)
{
  "endpoint": "/multimedia-annotations/bulk-update",
  "post": [
    {
      "_id": md5($some_youtube_url),
      "project": "測試計畫1",
      "full_location_md5": md5("測試計畫1/site1/NULL/location1"),
      "$set": {
        "modified_by": "OrcID_0000-0003-1335-0184",
        "type": "MovingImage",
        "date_time_original": "2017:02:09 17:28:27 // 格式以metadata 中擷取出來的為準",
        "length_of_video": (暫時以 metadata 中擷取出來的為準),
        "youtube_playlist_id": $some_playlilst_id
      },
      "$setOnInsert": {
        "url": $some_youtube_url,
        "url_md5": md5($some_youtube_url),
        "date_time_original_timestamp": 1486661307 (由date_time_original 轉換而來),
        "date_time_corrected_timestamp": 1486661307 (這邊此值等於 date_time_original_timestamp)
        "project": "測試計畫1",
        "site": "site1",
        "sub_site": "NULL",
        "location": "location1",
        "full_location_md5": md5("測試計畫1/site1/NULL/location1"),
        "uploaded_file_name": "J01-10260071_2015-10-26-18-33.MP4",
        "timezone": "+8",
        "tokens": [
          {
            "data": [
              {
                "key": "species",
                "label": "物種",
                "value": ""
              }
            ]
          }
        ]
      },
      "$addToSet": {
        "related_upload_sessions": $upload_session_id
      },
      "$upsert": true
    }
  ]
}
  • .mmm.json 範例 (mmm => multimedia metadata)
{
  "endpoint": "/multimedia-metadata/bulk-update",
  "post": [
    {
      "_id": md5($some_youtube_url),
      "project": "測試計畫1",
      "full_location_md5": md5("測試計畫1/site1/NULL/location1"),
      "$set": {
        "modified_by": "OrcID_0000-0003-1335-0184",
        "type": "MovingImage",
        "date_time_original": "2017:02:09 17:28:27 // 格式以metadata 中擷取出來的為準",
        "length_of_video": (暫時以 metadata 中擷取出來的為準),
        "youtube_playlist_id": $some_playlilst_id
        "device_metadata": {與相機相關但非 EXIF 的 Metadata 整組直接以 json 先塞在這},
        "exif": {EXIF 整組先以 json 塞在這},
        "make": 相機製造商(如果有此項資訊的話),
        "model": 相機型號(如果有此項資訊的話),
        "modify_date": device_metadata 中的檔案編修時間
      },
      "$setOnInsert": {
        "url": $some_youtube_url,
        "url_md5": md5($some_youtube_url),
        "date_time_original_timestamp": 1486661307 (由date_time_original 轉換而來),
        "date_time_corrected_timestamp": 1486661307 (這邊此值等於 date_time_original_timestamp)
        "project": "測試計畫1",
        "site": "site1",
        "sub_site": "NULL",
        "location": "location1",
        "full_location_md5": md5("測試計畫1/site1/NULL/location1"),
        "uploaded_file_name": "J01-10260071_2015-10-26-18-33.MP4",
        "timezone": "+8",
      },
      "$upsert": true
    }
  ]
}
@kevin61225
Copy link
Contributor

回報一下這邊的問題,基本上這兩份 json 都 ok 了,只是有幾個地方需要注意或再確認

  1. .mma.json
    1.2. date_time_original
    --- 經測試發現並非所有影片的 metadata 都會有這個值
    --- 目前的做法是 ... 若 metadata 裡面該屬性沒有值的話就取 檔案的建立日期(st_ctime)

  2. .mmm.json
    2.1. date_time_original
    --- 同 1.1
    2.2. modify_date
    --- 經測試發現並非所有影片的 metadata 都會有這個值
    --- 目前的做法是 ... 若 metadata 裡面該屬性沒有值的話就取 檔案的修改日期(st_mtime)
    2.3. exif
    --- 經測試發現影片不會有相關資訊,但是圖片會有
    --- 目前是放空集合 {}
    2.4. device_metadata
    --- 目前測試的影片都不會有相機相關的值, 但可以取到畫面的寬與高。
    --- 目前是放空集合 {}
    2.5. make & model
    -- 取得到值。如果沒值就放 empty string

總結

  • 照目前提供的影片以及我這邊自己拍攝的影片來測試,基本上不會有相機,exif 的相關數值
  • 再麻煩確認 1.2, 2.1 現在的做法是否沒問題
  • 再麻煩確認 2.4 是否要放入畫面的寬高資訊或是維持空集合

@ghost ghost assigned trashmai Nov 2, 2018
@trashmai
Copy link
Contributor

trashmai commented Nov 2, 2018

  • 1.2, 2.1, 2.2 就按照現在的做法。需確認一件事,st_ctime 應該不會因檔案上傳到新位置而重置?(換句話說與filesystem無關)
  • 2.4 device_metadata 維持空集合,但請在 .mmm.json 的 $set 物件下加上 width 與 height 屬性。

@ghost
Copy link
Author

ghost commented Nov 2, 2018

@kevin61225 方便我們將您加入 collaborator 這樣我們可以 assign issue 給您,便利通知及追蹤?

@kevin61225
Copy link
Contributor

@kevin61225 方便我們將您加入 collaborator 這樣我們可以 assign issue 給您,便利通知及追蹤?

已加入

@kevin61225
Copy link
Contributor

  • 1.2, 2.1, 2.2 就按照現在的做法。需確認一件事,st_ctime 應該不會因檔案上傳到新位置而重置?(換句話說與filesystem無關)

st_ctime 會因為上傳到新位置而重置唷 !

  • 2.4 device_metadata 維持空集合,但請在 .mmm.json 的 $set 物件下加上 width 與 height 屬性。

好的

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants