5

タイムスタンプ付きの YouTube コメントを分析しています。一部のコメントは、mm:ss、m:ss、hh:mm:ss、または h:mm:ss のいずれかのピリオドを参照する可能性があるため、これらのケースに備える必要があります。次のコードは mm:ss と m:ss で機能しますが、時間のあるものは mm:ss であるかのように扱います。たとえば、02:24:30 は最初の 2 つの部分のみを分析しているため、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])

最初に時間、2 番目に分、最後に秒が含まれます。

時間が見つからない場合、時間は空になります。

于 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 に答える