Python Youtube视频到Django模型的持续时间
从youtube视频中获取信息并保存到数据库的最简单方法是什么 例如,我想从youtube视频中获取持续时间 我的模型:Python Youtube视频到Django模型的持续时间,python,django,video,youtube,Python,Django,Video,Youtube,从youtube视频中获取信息并保存到数据库的最简单方法是什么 例如,我想从youtube视频中获取持续时间 我的模型: class Video(models.Model): video_id = models.CharField(max_length=150) title = models.CharField(max_length=150) slug = AutoSlugField(populate_from="title") description = mo
class Video(models.Model):
video_id = models.CharField(max_length=150)
title = models.CharField(max_length=150)
slug = AutoSlugField(populate_from="title")
description = models.TextField(blank=True)
#duration = models.CharField(max_length=10 , default=video_duration)
views = models.PositiveIntegerField(default=0)
likes = models.PositiveIntegerField(default=0)
category = models.ForeignKey("VideoCategory")
tags = models.ManyToManyField("Tag")
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
"""
My idea:
def get_video_duration():
xml = "http://gdata.youtube.com/feeds/api/videos/" + video_id
open xml
parse
s = take duration from xml in seconds
import datetime
video_duration = str(datetime.timedelta(seconds=s)) in h:m:s
"""
def __str__(self):
return self.title
有人能帮我吗
先谢谢你
编辑:
谢谢您的回答,所以我尝试了使用json的方法,但未定义I get error video_持续时间
class Video(models.Model):
video_id = models.CharField(max_length=150)
title = models.CharField(max_length=150)
slug = AutoSlugField(populate_from="title")
description = models.TextField(blank=True)
duration = models.CharField(max_length=10, default=video_duration)
views = models.PositiveIntegerField(default=0)
likes = models.PositiveIntegerField(default=0)
category = models.ForeignKey("VideoCategory")
tags = models.ManyToManyField("Tag")
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
def video_duration():
h = httplib2.Http()
url = "http://gdata.youtube.com/feeds/api/videos/%sv=2&alt=json" % video_id
respose = h.request(url)
res = json.loads(respose[1])
video_duration = res['entry']['media$group'][
'media$content'][0]['duration']
return video_duration
从youtube获取视频的持续时间非常简单。您只需要分析api调用的响应。 我是用httplib2做的 最好使用json而不是xml 请求url中的videoID是youtube视频的id
import httplib2
import json
h = httplib2.Http()
respose = h.request("http://gdata.youtube.com/feeds/api/videos/videoID?v=2&alt=json")
res = json.loads(respose[1])
duration = res['entry']['media$group']['media$content'][0]['duration']
您的伪代码是正确的。您需要使用XML解析器,如。您遇到的具体问题是什么?tree=ET.parsexml->错误无效参数:。我需要在那个路径中指定.xml吗?或者?你能帮我在我的模型上实现吗?检查我编辑的问题please@John你得到这个错误是因为函数应该在模型定义之上,你的意思是这样的?视频持续时间未定义。。。我认为它必须先获取视频id,然后再使用它。给定id->url->您的代码->返回持续时间,并将其保存到数据库中。我使用Pafy library来完成此操作,下面是实现我所需的代码: