为了感兴趣,我想将视频持续时间从YouTubes转换ISO 8601为秒.为了将来证明我的解决方案,我选择了一个非常长的视频来测试它.
API提供此期限 - "duration": "P1W2DT6H21M32S"
我尝试使用stackoverflow.com/questions/969285中的dateutil建议解析此持续时间.
import dateutil.parser
duration = = dateutil.parser.parse('P1W2DT6H21M32S')
Run Code Online (Sandbox Code Playgroud)
这引发了一个例外
TypeError: unsupported operand type(s) for +=: 'NoneType' and 'int'
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
如何解析我认为是ISO 8601的youtube持续时间格式
这个请求
https://www.googleapis.com/youtube/v3/videos?id=Kdgt1ZHkvnM&part=contentDetails&key={API_KEY}
Run Code Online (Sandbox Code Playgroud)
返回
{
"kind": "youtube#videoListResponse",
"etag": "\"QVyS2yjpsZ-tKkk4JvgYeO_YkzY/Do26Zx0a-KfdN4FPvoMAgqiFNRA\"",
"pageInfo": {
"totalResults": 1,
"resultsPerPage": 1
},
"items": [
{
"kind": "youtube#video",
"etag": "\"QVyS2yjpsZ-tKkk4JvgYeO_YkzY/yZ-09PZbpkEHSEcQeekJuGOCbJY\"",
"id": "Kdgt1ZHkvnM",
"contentDetails": {
"duration": "PT20M1S",
"dimension": "2d",
"definition": "hd",
"caption": "false",
"licensedContent": false
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
是否有图书馆为.Net 解析这种格式" PT20M1S "?
我是从youtube API请求获取此数组,但在我看来,持续时间格式非常少见.他们为什么不在那里扔几秒钟?无论如何,这是阵列
[duration] => PT2M3S
[dimension] => 2d
[definition] => sd
[caption] => false
Run Code Online (Sandbox Code Playgroud)
有没有办法在PHP中将此持续时间转换为"H:i:s"格式?
在此先感谢您的帮助