更新至 2.5.1 後 TVMosaic 檔名中繼資料擷取遺失

你好,

在2.4.8版本中,为了支持TV Mosaic文件名进行元数据提取,曾做过一次改动。我在10月11日升级到了2.5 Beta 1,今天发现所有节目的元数据又都默认成了2019-05-05这个日期,尽管录制日期依旧像之前一样写在文件名里。

我需要做什么改动才能让MCEBuddy从文件名读取日期吗?

我已把3份示例日志上传到FTP站点供你查看。(用户名robtheone)

《周六夜现场》——周六录制,元数据却显示正确的季/集号S45E03,但主持人是Adam Sander和Shawn Mendez,这期实际播出日期是2019-05-04。

《NBC晚间新闻》——周六、周日、周一各录了一集,三集都显示2019-05-05。S2019E122-May 5 Sun、(1)、(2)。

《会见媒体》——周日录制,文件名显示为S2019E18-May 5, 2019.MP4。

非常感谢!

在你的文件中,嵌入的元数据已经包含了一个日期(年份):

date : 2019

当存在日期时,MCEBuddy 不会从文件名覆盖它,因此保留了 -05-05

如果你希望 MCEBuddy 用文件名覆盖你的元数据,则需要在 转换任务 → 专家设置元数据校正 页面中启用该选项

image

感谢您的信息。这在一定程度上解决了问题。对于每周一次的节目,它完全解决了问题;但对于每天录制的节目,元数据似乎总会晚一天。

第一个例子
原始文件名:NBC Nightly News With Lester Holt _20191020.mp4 – 录制日期 2019-10-20
MCEBuddy 文件名:S2019E284-Oct 19 Sat(将 episode 命名为前一天)。我通过 MCEBuddy 处理的每一次录制都稳定地晚一天。

查看新闻的日志,例如:
OriginalBroadcastDateTime: 2019-10-20T00:00:00
RecordedDateTime: 0001-01-01T00:00:00
SeriesPremiereDate: 0001-01-01T00:00:00
CopyProtected: False
SageTV FileID:
SageTV MediaFileID:

2019-10-21T09:10:41 MCEBuddy.MetaData.VideoMetaData → 检查元数据标题与 ID 修正
2019-10-21T09:10:41 MCEBuddy.MetaData.VideoMetaData → 检查元数据类型修正
2019-10-21T09:10:41 MCEBuddy.MetaData.VideoMetaData → 强制 show 类型 → Series
INFORMATION> 2019-10-21T09:10:41 MCEBuddy.MetaData.VideoMetaData → 下载 Series 详情
2019-10-21T09:10:41 MCEBuddy.MetaData.VideoMetaData → 从互联网覆盖标题 → Default
INFORMATION> 2019-10-21T09:10:41 MCEBuddy.MetaData.VideoMetaData → 跳过下载 Banner 文件
INFORMATION> 2019-10-21T09:10:41 MCEBuddy.MetaData.VideoMetaData → 录制类型 Show
INFORMATION> 2019-10-21T09:10:41 MCEBuddy.MetaData.VideoMetaData → 检查 TheTVDB
→ 在文本中查找首播年份信息
→ 无 episode 名称可匹配
→ 在文本中查找首播年份信息
→ 通过 Original Broadcast Date 在 TVDB 找到系列匹配。已更新视频标签 →
Title: NBC Nightly News With Lester Holt
SubTitle: Oct 19 Sat

我不清楚 TVDB 是如何从 2019-10-20 跳到 2019-10-19 的,但当我强制从 IMDB 获取元数据时,结果完全一样,也比实际录制日期早一天。

第二个例子:
原始文件名:Watch What Happens Live With Andy Cohen_20191017.mp4 – 录制日期 2019-10-17
MCEBuddy 文件名:S16E165-Lorraine Bracco; Dr. Oz.mp4。季和集数其实正确,但显示的元数据却是前一天(2019-10-16)的 S16E164。

不确定是否与从文件名提取的时间有关:
OriginalBroadcastDateTime: 2019-10-17T00:00:00
时间 00:00:00 可能导致 TVDB 或 IMDB 拉取前一天的资料?

我已将这两个日志上传到您的 FTP 站点,放在“2nd update”子文件夹下。
MCE%20FTP

再次感谢您协助处理此问题,不胜感激。

會不會是 MCEBuddy 把本地時區套用到所標示的播出日期/時間上了?
如果你在美國,我們比 GMT 慢 5–8 小時,所以 GMT 時間 2019-10-17 午夜零點,換算成美東夏令時間(EDT,GMT-4)其實還是 2019-10-16 晚上 8 點。

我不知道 MCEBuddy 要怎麼分辨:

  1. 缺少時間資訊,與實際在午夜播出的節目有何不同;
  2. 你其實不在乎時間,只希望 MCEBuddy 只要看到日期(如果是午夜 00:00:00)就忽略時間。
    如果是第 2 點,這必須逐檔節目設定,因為很多聯播節目(尤其是 PBS 與地方自製節目)的節目表根本沒有首播/播出日期時間,而 TBD、DUST 這類串流站台「條狀」聯播的,其實都是網路片段。

这直接来自 TVDB:

→ 通过原始播出日期在 TVDB 上找到剧集匹配。已更新视频标签 →
标题:NBC 晚间新闻与莱斯特·霍尔特
副标题:10月19日 周六
描述:NBC 晚间新闻是 NBC 新闻的每日晚间新闻节目,从纽约市洛克菲勒中心 GE 大楼播出。
网络:WTVJ-DT
网络附属:
家长评级:
媒体演职员表:
类型:新闻
季:2019
集:284
横幅:
横幅 URL:
IMDB Id:tt0231035
MovieDB Id:
TVDB Id:139911
是电影节目:False
是体育节目:False
原始播出日期时间:2019-10-20T00:00:00
录制日期时间:0001-01-01T00:00:00
系列首播日期:1970-08-03T00:00:00
受复制保护:False
SageTV FileID:
SageTV MediaFileID:

见第 284 集,剧集标题为 Oct 19 Sat

好的,日期可能來自 TVDB,但我唯一做的更動是將 MCEBuddy 升級到最新版本。升級前並沒有這個問題,因此我推測是 MCEBuddy 的某些改動導致日期異常。看起來似乎與「時間」有關,因為如果我手動在檔名裡加上時間,就會得到以下結果:

NBC Nightly News With Lester Holt _20191020.mp4 – MCEBuddy 將其標記為 2019-10-19(提早一天,不符)
 OriginalBroadcastDateTime: 2019-10-20T00:00:00
 RecordedDateTime: 0001-01-01T00:00:00
 SeriesPremiereDate: 0001-01-01T00:00:00
 CopyProtected: False
 SageTV FileID:
 SageTV MediaFileID:

2019-10-30T15:32:23 MCEBuddy.MetaData.VideoMetaData → Checking for metadata title and ID correction
 2019-10-30T15:32:23 MCEBuddy.MetaData.VideoMetaData → Checking for metadata type correction
 2019-10-30T15:32:23 MCEBuddy.MetaData.VideoMetaData → Forcing show type → Series
 INFORMATION> 2019-10-30T15:32:23 MCEBuddy.MetaData.VideoMetaData → Downloading Series details
 2019-10-30T15:32:23 MCEBuddy.MetaData.VideoMetaData → Overwrite title from internet → Default
 INFORMATION> 2019-10-30T15:32:23 MCEBuddy.MetaData.VideoMetaData → Skipping downloading Banner file
 INFORMATION> 2019-10-30T15:32:23 MCEBuddy.MetaData.VideoMetaData → Recording Type Show
 INFORMATION> 2019-10-30T15:32:23 MCEBuddy.MetaData.VideoMetaData → Checking TheTVDB
→ Looking for Premiere Year information in text
→ No episode name to match
→ Looking for Premiere Year information in text
  → Found series match on TVDB by Original Broadcast Date. Updated video tags →
 Title: NBC Nightly News With Lester Holt
SubTitle: Oct 19 Sat

NBC Nightly News With Lester Holt _20191020_18301900.mp4(僅手動加入 18301900 起訖時間)— 正確標記為「SubTitle: Oct 20 Sun」

OriginalBroadcastDateTime: 2019-10-20T18:30:00
 RecordedDateTime: 0001-01-01T00:00:00
 SeriesPremiereDate: 0001-01-01T00:00:00
 CopyProtected: False
 SageTV FileID:
 SageTV MediaFileID:

2019-10-30T15:32:23 MCEBuddy.MetaData.VideoMetaData → Checking for metadata title and ID correction
 2019-10-30T15:32:23 MCEBuddy.MetaData.VideoMetaData → Checking for metadata type correction
 2019-10-30T15:32:23 MCEBuddy.MetaData.VideoMetaData → Forcing show type → Series
 INFORMATION> 2019-10-30T15:32:23 MCEBuddy.MetaData.VideoMetaData → Downloading Series details
 2019-10-30T15:32:23 MCEBuddy.MetaData.VideoMetaData → Overwrite title from internet → Default
 INFORMATION> 2019-10-30T15:32:23 MCEBuddy.MetaData.VideoMetaData → Skipping downloading Banner file
 INFORMATION> 2019-10-30T15:32:23 MCEBuddy.MetaData.VideoMetaData → Recording Type Show
 INFORMATION> 2019-10-30T15:32:23 MCEBuddy.MetaData.VideoMetaData → Checking TheTVDB
→ Looking for Premiere Year information in text
→ No episode name to match
→ Looking for Premiere Year information in text
→ Found series match on TVDB by Original Broadcast Date. Updated video tags →
 Title: NBC Nightly News With Lester Holt
 SubTitle: Oct 20 Sun

MCEBuddy 會因為檔名是否手動帶入時間,而對同一份檔案做出不同處理,即使檔名中的日期正確。

根據支援頁面:

Metadata Extraction and Renaming from Files and Downloading from the Internet

  1. 若找不到內嵌/抽取的中繼資料,MCEBuddy 會嘗試從檔名解析。目前支援的格式包括:

* SHOWNAME_AIRDATE_AIRTIME.<ext>,其中 AIRDATEYYYYMMDD 格式,AIRTIMEHHMMHHMM(起訖)格式(AIRTIME 可省略)。底線可替換為連字號。

文件說 AIRTIME 可省略,但若省略,每日固定日期的節目就會給出錯誤資訊(提早一天)。不確定是否與時區有關。我位於美國東岸(GMT-4),錄影開始時間為 18:30,MCEBuddy 於 19:02 開始處理。看起來像是日期/時間的 bug。

所有每日錄影的日期節目都會發生:

Rachel Maddow Show
Watch What Happens Live

謝謝。

我一定是漏掉了什麼。從你上傳的紀錄檔來看,原始播出日期/時間是從檔名解析出來的。

2019-10-21T09:10:41 MCEBuddy.MetaData.VideoMetaData → 嘗試從通用 nPVR 檔名詮釋資料提取 → NBC Nightly News With Lester Holt _20191020
2019-10-21T09:10:41 MCEBuddy.MetaData.VideoMetaData → 從檔名提取原始播出日期 → 2019-10-20
2019-10-21T09:10:41 MCEBuddy.MetaData.VideoMetaData → 從檔名提取標題 → NBC Nightly News With Lester Holt
2019-10-21T09:10:41 MCEBuddy.MetaData.VideoMetaData → 成功配對通用 NPVR 檔名詮釋資料
2019-10-21T09:10:41 MCEBuddy.MetaData.VideoMetaData → 在文字中尋找季/集資訊
2019-10-21T09:10:41 MCEBuddy.MetaData.VideoMetaData → 從檔案/名稱詮釋資料提取的影片標籤 →
標題: NBC Nightly News With Lester Holt
副標題:
描述: The latest news, going beyond the headlines to see how lives are affected by the world around them.
電視網: WTVJ-DT
電視網分支:
家長分級:
媒體製作人員:
類型: News
季: 0
集: 0
橫幅:
橫幅網址:
IMDB Id:
MovieDB Id:
TVDB Id:
是否為電影: False
是否為體育節目: False
原始播出日期時間: 2019-10-20T00:00:00
錄製日期時間: 0001-01-01T00:00:00
系列首播日期: 0001-01-01T00:00:00
受版權保護: False
SageTV 檔案ID:
SageTV 媒體檔案ID:

檔名是 2019-10-20,日期也確實如此。副標題中的 10 月 19 日 並非日期,而是 TVDB 提供的文字(顯然不正確,但它是來自 TVDB)。

我不確定你從哪裡看到資料被 MCEBuddy 更改了。

感谢你的快速回复!我看到的日期错误出现在两个地方:文件名本身,以及被 Plex 或任何播放软件读取的内嵌元数据。标题和元数据都比实际日期早了 1 天。

以我提供的例子来说,一条 10 月 20 日录制的新闻节目会显示成:

NBC Nightly News With Lester Holt\Season 2019\S2019E284-Oct 19 Sat.mp4

完整名称:C:\Users\rj\Videos\TV Shows\NBC Nightly News With Lester Holt\Season 2019\S2019E284-Oct 19 Sat.mp4
格式:MPEG-4
格式配置:Base Media
编解码器 ID:isom (isom/iso2/mp41)
文件大小:2.34 GiB
时长:22 分 28 秒
总码率模式:动态
总码率:14.9 Mb/s
合集:NBC Nightly News With Lester Holt
季:2019
集:284
轨道名称:Oct 19 Sat
类型:News
内容类型:TV Show
描述:NBC Nightly News is the daily evening news program for NBC News and broadcasts from the GE Building, Rockefeller Center in New York City.
录制日期:UTC 2019-10-20 12:00:00
写入应用:MCEBuddy
注释:NBC Nightly News is the daily evening news program for NBC News and broadcasts from the GE Building, Rockefeller Center in New York City.
分级:Explicit
电视网络名称:WTVJ-DT
长描述:NBC Nightly News is the daily evening news program for NBC News and broadcasts from the GE Building, Rockefeller Center in New York City.
录制时间戳:0001-01-01T12:00:00
IMDBID:tt0231035
TVDBID:139911
系列首播:1970-08-01T12:00:00
复制保护:False

文件名和元数据里的日期都比实际早了一天。节目是在 20 号录的,不是 19 号!这非常令人困惑,尤其是像《Watch What Happens Live》这种节目,不仅日期错了,连节目描述里列出的嘉宾也不是录制里真正出现的人。

你所說的「Oct 19th」並不是日期,而是該集副標題的名稱,這是由 TVDB 提供的文字行,與 MCEBuddy 或檔案詮釋資料無關。你需要在 TVDB 上修正這項資訊——它與檔案中的詮釋資料或 MCEBuddy 完全無關。

如果你不喜歡 TVDB 提供的劇集名稱,可以建立自己的自訂檔案命名模式,並使用原始播出日期與時間(顯示為 20 日)作為檔名。

如果真是這樣,那為什麼只要在檔名裡加上時間,檔名和 metadata 資訊就能顯示正確的日期?同一個節目、同一個檔案,唯一差別只是在檔名裡加入時間?

我真的搞不懂。你現在是說,時間欄位是取得正確 metadata 的必要條件嗎?

Robert,這些檔案的「metadata」裡其實儲存了不只一個日期。那個「Oct 19」並不是「date」欄位,而是節目的副標題。它其實也可以寫成「上週播出」或「季終集」。有可能你看到的,是 Plex(或你用的媒體伺服器)把這個副標題顯示出來,讓人以為那是播出日期。

順帶一提,這種情況在也會上傳到網路觀看的節目裡很常見:節目某天在無線電視首播,隔天再上線。所以,你覺得哪個日期才算「播出日」?製作單位在 TVDB 資料庫裡把「Oct 19」當成副標題,同時把「10/20/2019」填進節目的「air date」metadata 欄位。你是用 OTA 還是網路來源?我一點也不意外,線上來源會把「線上播出日」(比 OTA 首播晚)寫進檔案的「air date」metadata,卻保留副標題對應實際 OTA 首播日,也就是「對你來說是新的」。更亂的是,有些網站會把「下載或串流那天」寫成「air date」metadata(對廣告、統計、版稅很重要)。

我不知道要怎麼單獨關掉播放器裡的節目副標題顯示,改去顯示真正的播出日期欄位。我確定 MCEBuddy 做不到這件事。

你可以客氣地請求客製化,在特殊處理規則對話框裡加個選項,把節目副標題 metadata 清空,讓播放器沒東西可顯示,你就不會誤以為副標題是播出日。或者更個人化一點,讓 MCEBuddy 把副標題欄位直接換成「播出日期」metadata 的文字格式。至於值不值得開發者花時間,就不是我能決定的;你也可以自己出價贊助這個只對你有用的功能。

你得提供該檔案的轉換記錄,我才能檢視並比對有何不同;加入那額外資訊可能導致 mcebuddy 從不同網站查詢 metadata,而該網站的資料與 TVDB 不同。

2 个日志文件已附上。两个文件的唯一区别是:其中一个文件我在 MCEBuddy 处理前手动在文件名中添加了“_18301900”。

NBC Nightly News With Lester Holt _20191020_18301900.mp4-Convert to MP4-2019-10-30T15-32-20.9322336-04-00.log (1.0 MB)
NBC Nightly News With Lester Holt _20191020.mp4-Convert to MP4-2019-10-30T15-32-20.5885077-04-00.log (1.0 MB)

我在 Notepad++ 中对比了两份日志,能看出的唯一差异(非专业阅读)是在元数据提取阶段,带时间的文件名会多出两行:

2019-10-30T15:32:23 MCEBuddy.MetaData.VideoMetaData → 尝试从文件名提取原始播出日期和时间
2019-10-30T15:32:23 MCEBuddy.MetaData.VideoMetaData → 已从文件名提取原始播出日期和时间 → 10/20/2019 6:30:00 PM

因此,原始文件(文件名无时间)得到:
OriginalBroadcastDateTime: 2019-10-20T00:00:00

而手动加了录制时间的文件得到:
OriginalBroadcastDateTime: 2019-10-20T18:30:00

来自 TVDB 的原始文件匹配到:

→ 通过原始播出日期在 TVDB 找到系列匹配。已更新视频标签 →
Title: NBC Nightly News With Lester Holt
SubTitle: Oct 19 Sat
Description: NBC Nightly News 是 NBC 新闻的每日晚间新闻节目,从纽约市洛克菲勒中心 GE 大厦播出。
Network: WTVJ-DT
Network Affiliate:
Parental Rating:
Media Credits:
Genres: News
Season: 2019
Episode: 284
Banner:
Banner URL:
IMDB Id: tt0231035
MovieDB Id:
TVDB Id: 139911
Is Show Movie: False
Is Show Sports: False
OriginalBroadcastDateTime: 2019-10-20T00:00:00

而加了时间的文件匹配到:

→ 通过原始播出日期在 TVDB 找到系列匹配。已更新视频标签 →
Title: NBC Nightly News With Lester Holt
SubTitle: Oct 20 Sun
Description: NBC Nightly News 是 NBC 新闻的每日晚间新闻节目,从纽约市洛克菲勒中心 GE 大厦播出。
Network: WTVJ-DT
Network Affiliate:
Parental Rating:
Media Credits:
Genres: News
Season: 2019
Episode: 285
Banner:
Banner URL:
IMDB Id: tt0231035
MovieDB Id:
TVDB Id: 139911
Is Show Movie: False
Is Show Sports: False
OriginalBroadcastDateTime: 2019-10-20T18:30:00

此后,后台肯定还做了很多事,但最终结果对同一个录制文件来说差异巨大:文件名不同,嵌入的元数据也不同。

S2019E284-Oct 19 Sat.mp4
S2019E285-Oct 20 Sun.mp4

完整日志已附上供查阅。字幕字段里的内容不是我质疑的重点;我想知道的是,为何对完全相同的录制节目,文件名和元数据会不同。

感谢您的时间!

這是透過 OTA 天線從 HDHomeRun 調諧器取得 NBC 地方聯播台的訊號,並非來自網路。節目於 2019-10-20 下午 6:30 在邁阿密現場播出。

接著由 TVMosaic(前身為 DVBLogic)錄製,它會把部分錄製中繼資料寫進檔案,但只寫入「年份」欄位,也就是 2019;而 MCEBuddy 總是把日期顯示成 2019-05-05(奇怪又隨機的日期),所有集數都一樣。大約一年前,2.4.9 版做了改動,允許從檔名讀取錄製日期,這一年來都運作正常,直到我升級到 2.5.1 後,所有依日期命名的每日錄影節目都會把日期錯置,顯示成前一天的後設資料。

字幕不是問題所在,雖然在《Watch What Happens Live》上確實有字幕。我提起它,是因為這是我在日誌裡唯一能找到的、日期差了一天的紀錄。

希望這有幫助!也感謝您撥冗協助,非常感激!

感謝你提供的日誌,我可以看到這兩個檔案之間發生了什麼事。
當 MCEBuddy 嘗試從 TVDB 比對中繼資料時,它需要 2 項資訊 來完成配對,在你的情況下,這兩項分別是節目名稱與原始播出日期,用來「找出」正確的集數。

特別是這個節目屬於每日播出型態,每天都有一集新節目,請記住這點,因為這正是你會遇到下方所述問題的原因。

當 MCEBuddy 嘗試比對原始播出日期與時間時,它會同時比對本地時區與 UTC 時區。這是因為本地檔案與像 TVDB 這類網路資料庫儲存日期的方式不同。這正是你遇到問題的關鍵,再加上我上面提到的每日播出特性。

在第一種情況中,當檔案沒有時間資訊時,原始播出日期被儲存為 2019-10-20 上午 12:00(本地時區),但當它嘗試用 UTC 時區與 TVDB 比對時,日期會變成 2019-10-19 晚上 7:00,而因為你的節目每天都有新集數,TVDB 就會回傳一個配對結果,並將副標題名稱給為 10 月 19 日。

在第二種情況中,你的檔名包含了時間與日期,系統將其解析為 2019-10-20 晚上 6:30(本地時區),因此當 TVDB 嘗試比對時,無論是本地時區還是 UTC 時區,都顯示為 2019-10-20,因此回傳的副標題就是 10 月 20 日。

這會發生是因為你的節目每天都有新集數,如果它不是每日播出的節目,你就不會看到這個問題。

解決方法是確保 HDHomeRun 在檔名中包含時間與日期,這樣 TVDB 在比對日期時就不會混淆。希望這有幫助。

感謝您的確認。正如我們一年前就此議題的最後一次討論,我的檔案命名慣例一直是:

程式名稱_程式日期

這在過去一年運作得完美無缺。無論在我升級到 2.5.1 後發生了什麼變化,我在檔案名稱中加入了「程式時間」,一切又恢復正常,檔案中的日期與中繼資料都正確無誤。

程式名稱_程式日期_程式時間

感謝您花時間研究並找到解決方案。

1 个赞