5

我正在分析带有时间戳的 YouTube 评论。因为有些注释可能会引用 mm:ss、m:ss、hh:mm:ss 或 h:mm:ss 中的句点,所以我需要为这些情况做好准备。以下代码适用于 mm:ss 和 m:ss,但仍将带有小时数的代码视为 mm:ss。例如,02:24:30 返回 144,因为它只分析前两个部分。这是代码:

var timePattern = /(([0-5][0-9])|[0-9])\:[0-9]{2,2}/;
var seconds = "";

for (var i = 0; i < comments.length; i++) {
    var matches = comments[i].match(timePattern);
    var matched = matches[0];
    var a = matched.split(':');
    if(matched.length == 7 || matched.length == 8) {
        seconds = (+a[0])*60*60 + (+a[1])*60 + a[2];        
    } else {
        seconds = (+a[0])*60 + (+a[1]); 
    }
    times.push(seconds);
}   
4

2 回答 2

8

尝试不同的正则表达式。

(?:([0-5]?[0-9]):)?([0-5]?[0-9]):([0-5][0-9])

第一个包含小时,第二个包含分钟,最后一个包含秒。

如果没有找到小时数,小时数将为空。

于 2012-06-16T22:42:11.717 回答
1

如果您使用 API,您还可以在评论提要中获取此信息:https ://developers.google.com/youtube/2.0/developers_guide_protocol#Comments

评论提要有一个published元素,其中包含可用于解析秒数的日期和时间信息。

于 2012-06-16T22:48:42.033 回答