SonotaCo.JP
SonotaCo Network Japan Forum
SonotaCo.JP Forum Index
homeTop Page  FAQFAQ   検索検索   メンバーリストメンバーリスト   ユーザーグループユーザーグループ   登録する登録する 
 プロフィールプロフィール   プライベートメッセージをチェックするプライベートメッセージをチェックする   ログインログイン 

録画時間の合計

 
新しいトピックを投稿   トピックに返信    SonotaCo.JP Forum Index -> UFOCaptute ソフトウェア 談話室
前のトピックを表示 :: 次のトピックを表示  
投稿者 メッセージ
小林 隆



登録日: 2023.02.27
記事: 7
所在地: 神奈川県平塚市

記事日時: Fri Sep 29, 2023 10:23 pm    記事の件名: 録画時間の合計 引用付きで返信

こんばんは。

UFOCapture シリーズには録画時間の合計を表示する機能がないため、
検知数が多くなると、削除するのにどれくらい時間がかかるかが分か
らず、困っていました。

簡易的にフォルダ内の録画時間の合計を求める VBScript をかきました。
よろしかったらご意見を頂けたら幸いです。

--

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0,"フォルダを選択してください",&h200,&h11)

If (objFolder Is Nothing) Then
WScript.Quit
End If

t = 0

Set fso = CreateObject("Scripting.FileSystemObject")
For Each strFileName in objFolder.Items
If fso.GetExtensionName(strFileName.Path) = "avi" Then
If t < 1 then
t = DateAdd("s",Mid(objFolder.GetDetailsOf(strFileName,27),1,2) * 3600 _
+ Mid(objFolder.GetDetailsOf(strFileName,27),4,2) * 60 _
+ Mid(objFolder.GetDetailsOf(strFileName,27),7,2) _
,t)
Else
MsgBox("オーバーフローしました")
WScript.Quit
End If
End If
Next
MsgBox(t)
Set fso = Nothing

--


以下の問題点はあります。

・合計が 24 時間以上になるとオーバーフローする。
・Windows XP 以前では正しく動作しない。
・AVI の録画時間しか合計していない。
・ごみ箱を選択すると正しく動作しない。

です。
トップに戻る
ユーザーのプロフィールを表示   投稿者のウェブサイトに移動
小林 隆



登録日: 2023.02.27
記事: 7
所在地: 神奈川県平塚市

記事日時: Thu Mar 14, 2024 2:58 pm    記事の件名: 引用付きで返信

こんにちは。

Copilot に改善をお願いしてやりとりした結果、
以下のようなコードに修正してくれました。

--

Option Explicit

Dim objShell, selectedFolder, fso, strFileName, time, total
Dim hours, minutes, seconds

Set objShell = CreateObject("Shell.Application")
Set selectedFolder = objShell.BrowseForFolder(0, "フォルダを選択してください", &h200, &h11)

If selectedFolder Is Nothing Then
MsgBox "フォルダが選択されていません。"
Set objShell = Nothing
WScript.Quit
End If

Set fso = CreateObject("Scripting.FileSystemObject")

For Each strFileName In selectedFolder.Items
If fso.GetExtensionName(strFileName.Path) = "avi" Then
time = selectedFolder.GetDetailsOf(strFileName, 27)
hours = Mid(time, 1, 2)
minutes = Mid(time, 4, 2)
seconds = Mid(time, 7, 2)
total = total + (hours * 3600) + (minutes * 60) + seconds
End If
Next

MsgBox "AVIファイルの合計録画時間:" & (total \ 3600) Mod 24 & "時間" & (total \ 60) Mod 60 & "分" & total Mod 60 & "秒"

Set fso = Nothing
Set selectedFolder = Nothing
Set objShell = Nothing

--
トップに戻る
ユーザーのプロフィールを表示   投稿者のウェブサイトに移動
SonotaCo
Site Admin


登録日: 2004.08.07
記事: 12854
所在地: 139.67E 35.65N

記事日時: Fri Mar 15, 2024 7:03 am    記事の件名: Re: 録画時間の合計 引用付きで返信

投稿ありがとうございます。
面白いツールですね。
上げて頂いたデキストのOption Explicit以降を適当なAviTime.bvs等の名前のファイルとしてセーブしてエクスプローラでクリックするとちゃんと動きました。
せっかくなら指定したフォルダーのより下位のフォルダーも調べて合計してくれるとよりありがたいかと思いました。
GetDetailsOf で 再生時間を調べている点が面白い方法と思いました。
小林 隆 wrote:
削除するのにどれくらい時間がかかるか
というのがどういう状況で、総再生時間がどう関係するのかちょっと分かりませんでした。
トップに戻る
ユーザーのプロフィールを表示  
小林 隆



登録日: 2023.02.27
記事: 7
所在地: 神奈川県平塚市

記事日時: Fri Mar 15, 2024 7:21 pm    記事の件名: 引用付きで返信

こんばんは。SonotaCo さん。ご返信ありがとうございます。

SonotaCo さんの質問に、先にお答えしますと、動画はひとつひとつ1回は
再生してから削除しています。総再生時間が分かれば、削除にかかる時間は
少なくともそれ以上はかかることが見積もれます。

朝、私は家を出る時間は決まっているので、削除するのにかかる時間が分か
れば、今日は家を出る前に、終わらせられるか、どうかの判断がつきます。

UAでの解析にかかる時間はまちまちなので、解析は時間のとれる帰宅後など
に行っています。

下位のフォルダーも調べて合計する件についてですが、再帰を使って仕事で
実装したことはあるのですが、少しコードが読みにくくなるので今回は作り
ませんでした。アレンジはご覧になった方にお任せしようと思います。
トップに戻る
ユーザーのプロフィールを表示   投稿者のウェブサイトに移動
SonotaCo
Site Admin


登録日: 2004.08.07
記事: 12854
所在地: 139.67E 35.65N

記事日時: Sat Mar 16, 2024 7:25 am    記事の件名: 引用付きで返信

小林 隆 wrote:
動画はひとつひとつ1回は
再生してから削除しています。

あ、なるほど。説明ありがとうございました。状況理解できました。丁寧な手順ですね。

私はまず静止画だけを連続して見ていき、絶対不要なものをチェックオンにして delete C allでまとめて削除してから一括分析してnoiseとかflashなったものや複数オブジェクトになったものなどを再チェックするような手順です。
慣れてくると静止画だけで絶対に不要なクリップをほぼ間違いなく判断できるようになると思います。怪しげなものだけ時間をかけています。
UA4のキー操作によるチェックボックスon/offはそのような手順が簡便にできるようなための機能です。
トップに戻る
ユーザーのプロフィールを表示  
小林 隆



登録日: 2023.02.27
記事: 7
所在地: 神奈川県平塚市

記事日時: Sat May 18, 2024 4:29 pm    記事の件名: 引用付きで返信

こんにちは。

SonotaCo さんのリクエストにお答えして、指定したフォルダより下位のフォルダも調
べて合計するように書き換えました。 Copilot の答えが間違っていたため、修正した結
果、以下のようなコードになりました。テストで録画時間を取得できない場合があるこ
とが分かり、スキップする処理を追加しました。なお、下記のテキストをコピーして、
拡張子は .vbs で ANSI で保存すると実行できると思います。

--

Option Explicit

Dim objShell, selectedFolder, fso, total

Set objShell = CreateObject("Shell.Application")
Set selectedFolder = objShell.BrowseForFolder(0, "フォルダを選択してください", &h200, &h11)

If selectedFolder Is Nothing Then
MsgBox "フォルダが選択されていません。"
Set objShell = Nothing
WScript.Quit
End If

Set fso = CreateObject("Scripting.FileSystemObject")

total = GetTotalTime(selectedFolder)

MsgBox "AVIファイルの合計録画時間:" & (total \ 3600) Mod 24 & "時間" & (total \ 60) Mod 60 & "分" & total Mod 60 & "秒"

Set fso = Nothing
Set selectedFolder = Nothing
Set objShell = Nothing

Function GetTotalTime(folder)
Dim hours, minutes, seconds
Dim strFileName, time, totalTime, subFolder, shellSubFolder

totalTime = 0

For Each strFileName In folder.Items
If fso.GetExtensionName(strFileName.Path) = "avi" Then
time = folder.GetDetailsOf(strFileName, 27)
If time <> "" Then
hours = Mid(time, 1, 2)
minutes = Mid(time, 4, 2)
seconds = Mid(time, 7, 2)
totalTime = totalTime + (hours * 3600) + (minutes * 60) + seconds
End If
End If
Next

For Each subFolder In fso.GetFolder(folder.Self.Path).SubFolders
Set shellSubFolder = objShell.Namespace(subFolder.Path)
totalTime = totalTime + GetTotalTime(shellSubFolder)
Next

Set shellSubFolder = Nothing

GetTotalTime = totalTime
End Function

--
トップに戻る
ユーザーのプロフィールを表示   投稿者のウェブサイトに移動
特定期間内の記事を表示:   
新しいトピックを投稿   トピックに返信    SonotaCo.JP Forum Index -> UFOCaptute ソフトウェア 談話室 All times are GMT + 9 Hours
Page 1 of 1

 
移動先:  
新規投稿: 不可
返信投稿: 不可
記事編集: 不可
記事削除: 不可
投票参加: 不可
このフォーラムで添付ファイルを投稿 できません
このフォーラムでファイルをダウンロード できます


Powered by phpBB © 2001, 2005 phpBB Group
Copyright ©2004 SonotaCo Network. All Rights Reserved.