如何使用c#?在Dailymotion上上传视频??有人有完整的密码吗?
我希望用c代码上传dailymotion上的视频,但dailymotion不提供用c代码上传视频的c代码 我在dailymotion文档api上搜索,发现这不是显式的curl代码:如何使用c#?在Dailymotion上上传视频??有人有完整的密码吗?,c#,asp.net,C#,Asp.net,我希望用c代码上传dailymotion上的视频,但dailymotion不提供用c代码上传视频的c代码 我在dailymotion文档api上搜索,发现这不是显式的curl代码: curl -F 'access_token=...' \ -F 'url=http://upload-02.dailymotion.com/files/5ccb48b8e8aef3fcb8959739f993e1b9.3gp' \ https://api.dailymotion.com/me/vi
curl -F 'access_token=...' \
-F 'url=http://upload-02.dailymotion.com/files/5ccb48b8e8aef3fcb8959739f993e1b9.3gp' \
https://api.dailymotion.com/me/videos
我试着转置,但不起作用:
string contentFile = "c:\name_of_my_video_file.flv";
byte[] byteArray = Encoding.ASCII.GetBytes(contentFile);
MemoryStream fs = new MemoryStream(byteArray);
// Provide the WebPermission Credintials
// Create a request using a URL that can receive a post.
string uri = "https://api.dailymotion.com/me/videos";
WebRequest request = WebRequest.Create(uri);
// Set the Method property of the request to POST.
request.Method = "POST";
request.Credentials = new NetworkCredential("logindailymotion","passworddailymotion");
// Create POST data and convert it to a byte array.
string postData = "access_token=my_api_key&url=http://upload-02.dailymotion.com/files/name_of_my_video_file.flv";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
// Set the ContentType property of the WebRequest.
request.ContentType = "application/x-www-form-urlencoded";
// Set the ContentLength property of the WebRequest.
request.ContentLength = byteArray.Length;
// Get the request stream.
// Notify the server about the size of the uploaded file
request.ContentLength = fs.Length;
// The buffer size is set to 2kb
int buffLength = 2048;
byte[] buff = new byte[buffLength];
int contentLen;
// Opens a file stream (System.IO.FileStream) to read the file to be uploaded
//FileStream fs = fileInf.OpenRead();
try
{
// Stream to which the file to be upload is written
Stream strm = request.GetRequestStream();
// Read from the file stream 2kb at a time
contentLen = fs.Read(buff, 0, buffLength);
// Till Stream content ends
while (contentLen != 0)
{
// Write Content from the file stream to the FTP Upload Stream
strm.Write(buff, 0, contentLen);
contentLen = fs.Read(buff, 0, buffLength);
}
// Close the file stream and the Request Stream
strm.Close();
fs.Close();
}
catch (Exception ex)
{
throw ex;
}
}
有更好的c代码文档吗
有人的代码正确吗?我创建了一个完整的示例来回答您的问题并上传视频。现在可以使用了 编辑:我使用可用的API信息解释如何执行和 以下是除从JSON反序列化的对象之外的所有代码: 代码
static void Main(string[] args)
{
var accessToken = GetAccessToken();
Authorize(accessToken);
Console.WriteLine("Access token is " + accessToken);
var fileToUpload = @"C:\Program Files\Common Files\Microsoft Shared\ink\en-US\join.avi";
Console.WriteLine("File to upload is " + fileToUpload);
var uploadUrl = GetFileUploadUrl(accessToken);
Console.WriteLine("Posting to " + uploadUrl);
var response = GetFileUploadResponse(fileToUpload, accessToken, uploadUrl);
Console.WriteLine("Response:\n");
Console.WriteLine(response + "\n");
Console.WriteLine("Publishing video.\n");
var uploadedResponse = PublishVideo(response, accessToken);
Console.WriteLine(uploadedResponse);
Console.WriteLine("Done. Press enter to exit.");
Console.ReadLine();
}
private static UploadResponse GetFileUploadResponse(string fileToUpload, string accessToken, string uploadUrl)
{
var client = new WebClient();
client.Headers.Add("Authorization", "OAuth " + accessToken);
var responseBytes = client.UploadFile(uploadUrl, fileToUpload);
var responseString = Encoding.UTF8.GetString(responseBytes);
var response = JsonConvert.DeserializeObject<UploadResponse>(responseString);
return response;
}
private static UploadedResponse PublishVideo(UploadResponse uploadResponse, string accessToken)
{
var request = WebRequest.Create("https://api.dailymotion.com/me/videos?url=" + HttpUtility.UrlEncode(uploadResponse.url));
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.Headers.Add("Authorization", "OAuth " + accessToken);
var requestString = String.Format("title={0}&tags={1}&channel={2}&published={3}",
HttpUtility.UrlEncode("some title"),
HttpUtility.UrlEncode("tag1"),
HttpUtility.UrlEncode("news"),
HttpUtility.UrlEncode("true"));
var requestBytes = Encoding.UTF8.GetBytes(requestString);
var requestStream = request.GetRequestStream();
requestStream.Write(requestBytes, 0, requestBytes.Length);
var response = request.GetResponse();
var responseStream = response.GetResponseStream();
string responseString;
using (var reader = new StreamReader(responseStream))
{
responseString = reader.ReadToEnd();
}
var uploadedResponse = JsonConvert.DeserializeObject<UploadedResponse>(responseString);
return uploadedResponse;
}
private static string GetAccessToken()
{
var request = WebRequest.Create("https://api.dailymotion.com/oauth/token");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
var requestString = String.Format("grant_type=password&client_id={0}&client_secret={1}&username={2}&password={3}",
HttpUtility.UrlEncode(SettingsProvider.Key),
HttpUtility.UrlEncode(SettingsProvider.Secret),
HttpUtility.UrlEncode(SettingsProvider.Username),
HttpUtility.UrlEncode(SettingsProvider.Password));
var requestBytes = Encoding.UTF8.GetBytes(requestString);
var requestStream = request.GetRequestStream();
requestStream.Write(requestBytes, 0, requestBytes.Length);
var response = request.GetResponse();
var responseStream = response.GetResponseStream();
string responseString;
using (var reader = new StreamReader(responseStream))
{
responseString = reader.ReadToEnd();
}
var oauthResponse = JsonConvert.DeserializeObject<OAuthResponse>(responseString);
return oauthResponse.access_token;
}
private static void Authorize(string accessToken)
{
var authorizeUrl = String.Format("https://api.dailymotion.com/oauth/authorize?response_type=code&client_id={0}&scope=read+write+manage_videos+delete&redirect_uri={1}",
HttpUtility.UrlEncode(SettingsProvider.Key),
HttpUtility.UrlEncode(SettingsProvider.CallbackUrl));
Console.WriteLine("We need permissions to upload. Press enter to open web browser.");
Console.ReadLine();
Process.Start(authorizeUrl);
var client = new WebClient();
client.Headers.Add("Authorization", "OAuth " + accessToken);
Console.WriteLine("Press enter once you have authenticated and been redirected to your callback URL");
Console.ReadLine();
}
private static string GetFileUploadUrl(string accessToken)
{
var client = new WebClient();
client.Headers.Add("Authorization", "OAuth " + accessToken);
var urlResponse = client.DownloadString("https://api.dailymotion.com/file/upload");
var response = JsonConvert.DeserializeObject<UploadRequestResponse>(urlResponse).upload_url;
return response;
}
static void Main(字符串[]args)
{
var accessToken=GetAccessToken();
授权(accessToken);
Console.WriteLine(“访问令牌为”+accessToken);
var fileToUpload=@“C:\Program Files\Common Files\Microsoft Shared\ink\en US\join.avi”;
WriteLine(“要上传的文件是”+fileToUpload);
var uploadUrl=GetFileUploadUrl(accessToken);
Console.WriteLine(“发布到”+上传URL);
var response=GetFileUploadResponse(fileToUpload、accessToken、uploadUrl);
Console.WriteLine(“响应:\n”);
Console.WriteLine(响应+“\n”);
Console.WriteLine(“发布视频。\n”);
var uploadedResponse=PublishVideo(响应,accessToken);
Console.WriteLine(上传响应);
控制台。WriteLine(“完成。按enter键退出”);
Console.ReadLine();
}
私有静态UploadResponse GetFileUploadResponse(字符串fileToUpload、字符串accessToken、字符串uploadUrl)
{
var client=new WebClient();
client.Headers.Add(“授权”、“OAuth”+accessToken);
var responseBytes=client.UploadFile(uploadUrl,fileToUpload);
var responseString=Encoding.UTF8.GetString(responseBytes);
var response=JsonConvert.DeserializeObject(responseString);
返回响应;
}
私有静态UploadedResponse PublishVideo(UploadResponse UploadResponse,string accessToken)
{
var request=WebRequest.Create(“https://api.dailymotion.com/me/videos?url=“+HttpUtility.UrlEncode(uploadResponse.url));
request.Method=“POST”;
request.ContentType=“application/x-www-form-urlencoded”;
添加(“授权”、“OAuth”+accessToken);
var requestString=String.Format(“title={0}&tags={1}&channel={2}&published={3}”,
HttpUtility.UrlEncode(“某些标题”),
HttpUtility.UrlEncode(“tag1”),
HttpUtility.UrlEncode(“新闻”),
HttpUtility.UrlEncode(“true”);
var requestBytes=Encoding.UTF8.GetBytes(requestString);
var requestStream=request.GetRequestStream();
Write(requestBytes,0,requestBytes.Length);
var response=request.GetResponse();
var responseStream=response.GetResponseStream();
弦乐;
使用(变量读取器=新的流读取器(responseStream))
{
responseString=reader.ReadToEnd();
}
var uploadedResponse=JsonConvert.DeserializeObject(responseString);
返回上传的响应;
}
私有静态字符串GetAccessToken()
{
var request=WebRequest.Create(“https://api.dailymotion.com/oauth/token");
request.Method=“POST”;
request.ContentType=“application/x-www-form-urlencoded”;
var requestString=String.Format(“grant_type=password&client_id={0}&client_secret={1}&username={2}&password={3}”,
HttpUtility.UrlEncode(设置Provider.Key),
HttpUtility.UrlEncode(SettingsProvider.Secret),
HttpUtility.UrlEncode(设置Provider.Username),
HttpUtility.UrlEncode(SettingsProvider.Password));
var requestBytes=Encoding.UTF8.GetBytes(requestString);
var requestStream=request.GetRequestStream();
Write(requestBytes,0,requestBytes.Length);
var response=request.GetResponse();
var responseStream=response.GetResponseStream();
弦乐;
使用(变量读取器=新的流读取器(responseStream))
{
responseString=reader.ReadToEnd();
}
var oauthResponse=JsonConvert.DeserializeObject(responseString);
返回oauthResponse.access_令牌;
}
私有静态无效授权(字符串accessToken)
{
var authorizeUrl=String.Format(“https://api.dailymotion.com/oauth/authorize?response_type=code&client_id={0}&scope=read+write+manage_videos+delete&redirect_uri={1}“,
HttpUtility.UrlEncode(设置Provider.Key),
HttpUtility.UrlEncode(setingsprovider.CallbackUrl));
WriteLine(“我们需要上传权限。按enter键打开web浏览器。”);
Console.ReadLine();
进程启动(authorizeUrl);
var client=new WebClient();
client.Headers.Add(“授权”、“OAuth”+accessToken);
WriteLine(“在您通过身份验证并被重定向到回调URL后按enter键”);
Console.ReadLine();
}
私有静态字符串GetFileUploadUrl(字符串accessToken)
{
var client=new WebClient();
client.Headers.Add(“授权”、“OAuth”+accessToken);
var urresponse=client.DownloadString(“https://api.dailymotion.com/file/upload");
var response=JsonConvert.DeserializeObject(urlResponse).upload\u url;
返回响应;
}
同样,.我不知道上传部分,但您是否使用ASCII作为视频文件??-使用File.ReadAllBytes()不是更好吗?我编译并执行了您的代码,程序处理得很好,没有错误(请参阅:)上的控制台结果。但没有发生任何事情:没有上传视频。@user101869