2014-08-31 138 views
0

我已经实施了以下Bash脚本,并试图将视频上传到我的Dailymotion帐户。所有curl请求都会返回官方API文档页面上列出的JSON响应。但是,我的视频未能显示在我的帐户中。我在这里做错了什么?使用curl将视频上传到DailyMotion,所有请求都会成功返回,但视频仍未上传

#!/bin/bash 


    curl -s --output out.txt --data 'grant_type=password&client_id=<My-ID>&client_secret=<My-Secret>&username=<My-Username>&password=<My-password>&scope=read+write' https://api.dailymotion.com/oauth/token 

    var1=$(grep "access_token" out.txt | cut -d: --complement -f1) 
    acc_token=$(echo $var1 | cut -d, -f1 | cut -d\" --complement -f1 | cut -d\" -f1) 

    curl -s --output out.txt -i https://api.dailymotion.com/file/upload?access_token="$acc_token"   
    upload_url=$(grep "upload_url" out.txt | cut -d: --complement -f1 | cut -d\" --complement -f1 | cut -d\" -f1 | sed 's/\\//g') 

    curl -s --output out.txt -F '[email protected]/home/zahaib/video.mp4' "$upload_url" 
    video_url=$(grep "url" out.txt | cut -d: --complement -f1-10 | cut -d\" --complement -f1 | cut -d# -f1) 

    curl -s --output out.txt -d $video_url https://api.dailymotion.com/me/videos?access_token="$acc_token" 
    video_id=$(grep "id" out.txt | cut -d: --complement -f1 | cut -d\" --complement -f1 | cut -d\" -f1) 

    curl -s --output out.txt -d 'title=Vid&channel=sport&tags=was' https://api.dailymotion.com/video/"$video_id"/access_token="$acc_token" 
    curl -s --output out.txt -d 'published=true' https://api.dailymotion.com/video/"$video_id"/access_token="$acc_token" 

回答

1

有一个在你的脚本中的错字上的最后两行:

https://api.dailymotion.com/video/"$video_id"/access_token="$acc_token" 

相反的:

https://api.dailymotion.com/video/"$video_id"/?access_token="$acc_token" 

它就在那里,在你的out.txt:

{ 
    "error":{ 
     "code":501, 
     "message":"Invalid method name: POST \/video\/<xid>\/access_token=<redated>.", 
     "type":"invalid_method" 
    } 
} 
+0

感谢您指出,我做了更改,但仍然无法显示视频在我的视频列表中。我想我可能没有正确对待'curl -F'[email protected]/home/zahaib/video.mp4'“$ upload_url”'返回的响应。 JSON返回一个url字段,其中包含一个散列(#),然后是一串长字符。我不确定是否应该在散列处截断URL或在$ video_url中包含整个字符串。 – 2014-09-01 16:42:10

+1

返回的所有内容都是上传URL的一部分。 – Dailymotion 2014-09-02 09:27:44

+0

太棒了!它现在有效。我可能会通过Github提供这个功能,以防有人想要一个简单的Bash脚本来上传视频。 – 2014-09-02 23:48:17