【问题标题】:Using curl to upload video to DailyMotion, all requests returning successful but video still not uploaded使用 curl 将视频上传到 DailyMotion,所有请求都返回成功但视频仍未上传
【发布时间】:2014-09-01 16:47:27
【问题描述】:

我已经实现了以下 Bash 脚本,我正在尝试将视频上传到我的 Dailymotion 帐户。所有curl 请求都会返回官方 API 文档页面上列出的 JSON 响应。但是,我的视频无法显示在我的帐户中。我在这里做错了什么?

#!/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 'file=@/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"

【问题讨论】:

    标签: dailymotion-api


    【解决方案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"
        }
    }
    

    【讨论】:

    • 感谢您指出这一点,我进行了更改,但视频仍然无法显示在我的视频列表中。我想我可能没有正确处理curl -F 'file=@/home/zahaib/video.mp4' "$upload_url" 返回的响应。 JSON 返回一个 url 字段,其中包含一个哈希 (#),然后是一长串字符。我不确定是否应该在哈希处截断 URL 或在 $video_url 中包含整个字符序列。
    • 返回的所有内容都是上传 URL 的一部分。
    • 太棒了!现在可以了。我可能也会通过 Github 提供它,以防有人想要一个简单的 Bash 脚本来上传视频。
    猜你喜欢
    • 2017-04-20
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多