我要上传使用的GData宝石YouTube视频(我已经看到了youtube_g宝石,但想使之与纯粹的GData如果可能的工作),但我不断收到此错误:

的GData ::客户:: BadRequestError在“MyProject的谷歌:: :: YouTube的上传应该在实际的视频到YouTube(一旦它,嘲笑这种测试出来)” 请求错误400:无在上传请求中找到的文件

我使用这个代码:


def metadata
  data = <<-EOF
<?xml version="1.0"?>
<entry xmlns="http://www.w3.org/2005/Atom"
  xmlns:media="http://search.yahoo.com/mrss/"
  xmlns:yt="http://gdata.youtube.com/schemas/2007">
  <media:group>
    <media:title type="plain">Bad Wedding Toast</media:title>
    <media:description type="plain">
      I gave a bad toast at my friend's wedding.
    </media:description>
    <media:category scheme="http://gdata.youtube.com/schemas/2007/categories.cat">People</media:category>
    <media:keywords>toast, wedding</media:keywords>
  </media:group>
</entry>
EOF
end

@yt = GData::Client::YouTube.new
@yt.clientlogin("name", "pass")
@yt.developer_key = "myKey"
url = "http://uploads.gdata.youtube.com/feeds/api/users/name/uploads"
mime_type = "multipart/related"
file_path = "sample_upload.mp4"
@yt.post_file(url, file_path, mime_type, metadata)

什么是将影片上传到YouTube与红宝石推荐/标准的方式,你有什么方法?

更新

应用更改到wrapped_entry后,其产生的字符串如下所示:


--END_OF_PART_59003
Content-Type: application/atom+xml; charset=UTF-8
<?xml version="1.0"?>
<entry xmlns="http://www.w3.org/2005/Atom"
  xmlns:media="http://search.yahoo.com/mrss/"
  xmlns:yt="http://gdata.youtube.com/schemas/2007">
  <media:group>
    <media:title type="plain">Bad Wedding Toast</media:title>
    <media:description type="plain">
      I gave a bad toast at my friend's wedding.
    </media:description>
    <media:category scheme="http://gdata.youtube.com/schemas/2007/categories.cat">People</media:category>
    <media:keywords>toast, wedding</media:keywords>
  </media:group>
</entry>

--END_OF_PART_59003
Content-Type: multipart/related
Content-Transfer-Encoding: binary

...和检查请求和响应是这样的:

请求:


<GData::HTTP::Request:0x1b8bb44 @method=:post
@url="http://uploads.gdata.youtube.com/feeds/api/users/lancejpollard/uploads"
@body=#<GData::HTTP::MimeBody:0x1b8c738 @parts=[#<GData::HTTP::MimeBodyString:0x1b8c058 @bytes_read=0
@string="--END_OF_PART_30909\r\nContent-Type: application/atom+xml; charset=UTF-8\r\n\r\n
<?xml version=\"1.0\"?>\n<entry xmlns=\"http://www.w3.org/2005/Atom\"\n  xmlns:media=\"http://search.yahoo.com/mrss/\"\n  xmlns:yt=\"http://gdata.youtube.com/schemas/2007\">\n  <media:group>\n    <media:title type=\"plain\">Bad Wedding Toast</media:title>\n    <media:description type=\"plain\">\n      I gave a bad toast at my friend's wedding.\n    </media:description>\n    <media:category scheme=\"http://gdata.youtube.com/schemas/2007/categories.cat\">People</media:category>\n    <media:keywords>toast
wedding</media:keywords>\n  </media:group>\n</entry>
\n\r\n--END_OF_PART_30909\r\nContent-Type: multipart/related\r\nContent-Transfer-Encoding: binary\r\n\r\n">
#<File:/Users/Lance/Documents/Development/git/thing/spec/fixtures/sample_upload.mp4>
#<GData::HTTP::MimeBodyString:0x1b8c044 @bytes_read=0
@string="\r\n--END_OF_PART_30909--">]
@current_part=0
@boundary="END_OF_PART_30909">
@headers={"Slug"=>"sample_upload.mp4"
"User-Agent"=>"GoogleDataRubyUtil-AnonymousApp"
"GData-Version"=>"2"
"X-GData-Key"=>"key=AI39si7jkhs_ECjF4unOQz8gpWGSKXgq0KJpm8wywkvBSw4s8oJd5p5vkpvURHBNh-hiYJtoKwQqSfot7KoCkeCE32rNcZqMxA"
"Content-Type"=>"multipart/related; boundary=\"END_OF_PART_30909\""
"MIME-Version"=>"1.0"}>

响应:


#<GData::HTTP::Response:0x1b897e0 @body="No file found in upload request."
@headers={"cache-control"=>"no-cache
no-store
must-revalidate"
"connection"=>"close"
"expires"=>"Fri
01 Jan 1990 00:00:00 GMT"
"content-type"=>"text/plain; charset=utf-8"
"date"=>"Fri
11 Dec 2009 02:10:25 GMT"
"server"=>"Upload Server Built on Nov 30 2009 13:21:18 (1259616078)"
"x-xss-protection"=>"0"
"content-length"=>"32"
"pragma"=>"no-cache"}
@status_code=400>

仍然没有工作,我将不得不与这些变化更多的检查了。

有帮助吗?

解决方案

不知道如果你解决了这个问题,但我相信在mime_typepost_file PARAM应设置到视频的MIME_TYPE - 你得把它设置为“multipart /相关的”在你的样本代码。

其他提示

我只是链接道歉,但我觉得这可能助阵 linky

我有同样的问题与GDATA宝石。

此固定对我来说。

C:\红宝石\ lib中\红宝石\宝石\ 1.8 \宝石\ GDATA-1.1.1 \ lib中\ GDATA \ HTTP

在 “类MimeBody” 与此代码替换 “wrap_entry” 来修复它。

“DEF wrap_entry(条目,file_mime_type)         wrapped_entry = “ - #{@边界} \ r \ n” 个         wrapped_entry + =“内容类型:应用/原子+ xml的; 字符集= UTF-8 \ r \ n \ r \ n”个         wrapped_entry + =条目         wrapped_entry + = “\ r \ N - #{@边界} \ r \ n” 个         wrapped_entry + = “内容类型:#{file_mime_type} \ r \ n” 个         wrapped_entry + = “内容传输编码:二进制\ r \ n \ r \ n” 个搜索         返回MimeBodyString.new(wrapped_entry)       端“

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top