Giter Site home page Giter Site logo

rinoa4506 / correct_flickr_video_date_taken Goto Github PK

View Code? Open in Web Editor NEW

This project forked from obatamiki/correct_flickr_video_date_taken

0.0 1.0 0.0 220 KB

flickr動画の"でたらめ"な撮影日時を修正するスクリプト。Corrects "date taken" of flickr video upload date to actual taken date.

License: MIT License

Ruby 100.00%

correct_flickr_video_date_taken's Introduction

correct_flickr_video_date_taken

flickr動画の"でたらめ"な撮影日時を修正するスクリプト

Corrects "date taken" of flickr video upload date to actual taken date.

解決しようとしている問題

公式のものを含むほとんどのflickrアップローダは動画(video)をアップロードした際に正しい撮影日時(date taken)を設定してくれず、flickr側のデフォルトである太平洋標準時(UTC-08:00)でのアップロード日時が撮影日時として設定されてしまいます。結果として、写真と動画をflickrにアップロードすると動画だけ撮影日時が"でたらめ"になっているように見えます。

ここで提示する解決策

このスクリプトは、flickr上にアップロード済みの動画の撮影日時を、対応するローカルの動画ファイルの更新日時に書き換えることでおおむね正しい撮影日時に修正します。

補足

  • flickr動画のタイトルが元ファイルの名前(拡張子は有無どちらでも)になっていることを前提としています。動画アップロードが可能なほとんどのアップローダはそのような命名をします。
  • あなたのアカウントでflickrにアップロード済みのすべての動画から撮影日時を修正すべき動画を探します。
  • 撮影日時の修正対象は動画ファイルのみです。写真についてはflickrがExifの撮影日時を読むので動画のような問題が生じません。
  • ローカルディレクトリとflickrのセットが対応関係にある必要はありません。対象がどこのディレクトリに入っているか、あるいはどのセットに入っているかによって処理結果が変わることはありません。
  • このスクリプト自身にアップロード機能はありません。既存アップローダの問題を修正するためのツールです。自分自身がEye-Fiのflickrアップロード機能を快適に使うためにこのようなものが必要でした。

動作環境

  • 撮影日時を修正したい動画がアップロードされている、あなたのflickrアカウント
  • Microsoft Windows (7 64bitでのみ動作確認しています)
  • Ruby (RubyInstallerでインストールしたRuby 1.9.3でのみ動作確認しています)
    • インストール時に「Ruby の実行ファイルへ環境変数 PATH を設定する」と「.rb と .rbw ファイルを Ruby に関連づける」にチェックを入れることをおすすめします。
  • flickraw (Rubyライブラリ(gem)。インストール方法はflickrawのGitHubページなどを参考にしてください。)

使い方

このページのDownload ZIPボタンからダウンロードをして、解凍したフォルダを任意の場所に置いてください。

コマンドプロンプトで上記ディレクトリに移動し、 correct_flickr_video_date_taken.rb [media_path1] [media_path2]... を実行してください。

media_path には、flickrにアップロードした動画の元ファイルが入っているディレクトリを指定してください。指定したディレクトリ以下のサブディレクトリも含む全てのファイルを走査します。media_pathを省略した場合にはスクリプトを実行したディレクトリが指定されたものとして扱います。

初回実行時にはflickr側での認証が必要となります。ブラウザのページが開くのでflickrにログインし、このアプリ(スクリプト)の認証(authorize)をお願いします。表示されるコードをコピーしてコマンドプロンプト上のカーソル行にペーストしEnterしてください。認証用情報をファイル(tok.enc, sec.enc)に保存するので次回以降はこの手順は不要です。

このスクリプトによりflickr側の撮影日付(date taken)が変更される条件

  • 動画系の拡張子が付いたファイルが走査対象のローカルディレクトリ内にある
    • 対象拡張子は avi,wmv,mov,mpeg,mpg,m4v,mp4,3gp,m2ts,mts,ogg,ogv です。
  • そのファイルの名前(拡張子付きか拡張子なしのいずれか)と同一のタイトルを持った動画(video)がflickrアカウント内に存在する
  • ローカルファイルとflickrコンテンツの長さ(秒単位)が一致している
  • ローカルファイルのプロパティ「フレーム率」を読み出し、値が返ってくることを確認(対象ファイルが動画であることのチェック)
  • flickrのdate takenとローカルファイルの更新日時が異なる

以上の条件を全て満たした場合に、ローカルファイルの更新日時をflickr側の撮影日時(date taken)に書き込みます。間違った対象の撮影日時を書き換えてしまわないよう、できる範囲で配慮しています。一つのローカルファイルに対してflickr側に上記条件を満たす動画が複数ある場合、すべての撮影日時が書き換えられます。

アンインストール

最初にアーカイブを解凍してできたフォルダを丸ごと削除し、flickrアカウント上で本アプリ(スクリプト)との連携を解除してください。

参考情報

自分が知っている、動画に正しい撮影日時を付けてくれるflickrアップローダ

  • CameraSync(iOS)
  • Adobe Photoshop LightroomのJeffrey’s “Export to Flickr” Lightroom Plugin(Win,Mac)
  • clipstart(Mac) 未確認
  • flickfolio(Android) 未確認

既知の問題

ファイルの更新日時を撮影日時として扱う関係上、編集を行った動画に関しては最後の編集日時を撮影日時として扱ってしまいます。また、編集以外でも何らかの理由で更新日時が変更されたなら、それを撮影日時として扱ってしまいます。残念な動作ですが現状では仕様です。

やり残しているアイディア

  • 動画メタデータ内の撮影日時情報の読み取り
  • キャッシングによる再実行時の動作高速化
  • (メタデータ内に撮影日時情報が無いため動画同様にアップロード日時が撮影日時と扱われてしまう)PNGファイルの更新日時をflickrの撮影日時として設定する
  • Mac対応
  • このREADMEを英語で書く

謝辞

その他、コードを書くにあたって多数のサイトを参考にさせていただきました。

ライセンス

Copyright © 2014 Obata Miki(小畑 幹)
Licensed under the MIT License.

correct_flickr_video_date_taken's People

Contributors

obatamiki avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.