gpt4 book ai didi

c# - 使用C#应用下载youtube文件会产生UnauthorizedAccessException

转载 作者:行者123 更新时间:2023-12-03 05:54:57 30 4
gpt4 key购买 nike

我正在尝试实现一个程序,该程序将从youtube下载视频文件。我已经编写了这个具有两个文件的小型Windows控制台应用程序。

Downloader.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using VideoLibrary;
using System.IO;

namespace AsyncAwait
{
public class Downloader
{

public Task DownloadFilesAsync()
{
// In the Real World, we would actually do something...
// For this example, we're just going to print file 0, file 1.
//this will execute the function in a strictly sequential manner.

//await DownloadFile0();
//await DownloadFile1();

//var task1 = DownloadFile0();
//var task2 = DownloadFile1();
//return Task.WhenAll(task1, task2);

//var tasks = new Func<Task>[]
//{
// () => DownloadFile(1),
// () => DownloadFile(2),
// () => DownloadFile(3),
// () => DownloadFile(4),
// () => DownloadFile(5)
//};
//return Task.WhenAll(tasks.Select(task => task()).ToArray());

var tasks2 = new Func<Task>[]
{
() => DownloadYoutubeVideo("https://www.youtube.com/watch?v=OGxgnH8y2NM"),
() => DownloadYoutubeVideo("https://www.youtube.com/watch?v=FNQxxpM1yOs"),
};
return Task.WhenAll(tasks2.Select(task => task()).ToArray());
}

private void SaveVideoToDisk(string link)
{
var youTube = YouTube.Default; // starting point for YouTube actions
var video = youTube.GetVideo(link); // gets a Video object with info about the video
File.WriteAllBytes(@"C:\" + video.FullName, video.GetBytes());
}

public async Task DownloadYoutubeVideo(string link)
{
await Task.Run(() => SaveVideoToDisk(link));
}

public async Task DownloadFile(int TaskNumber)
{
int count = 0;
while (count < 100)
{
Console.WriteLine("Downloading File {0,2} ----> {1,3}%", TaskNumber, count);
await Task.Delay(100);
count++;
}
await Task.Delay(100);
}
}
}

Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AsyncAwait
{
class Program
{
static void Main(string[] args)
{
Downloader d = new Downloader();
d.DownloadFilesAsync().Wait();
Console.WriteLine("finished");
}
}
}

我在这里收到以下错误。
Unhandled Exception: System.AggregateException: One or more errors occurred. ---> System.UnauthorizedAccessException: Access to the path 'C:\Practical Machine Learning Tutorial with Python Intro p.1 - YouTube.mp4' is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.File.InternalWriteAllBytes(String path, Byte[] bytes, Boolean checkHost)
at System.IO.File.WriteAllBytes(String path, Byte[] bytes)
at AsyncAwait.Downloader.SaveVideoToDisk(String link) in C:\Software\csharppen\AsyncAwait\AsyncAwait\Downloader.cs:line 50
at AsyncAwait.Downloader.<>c__DisplayClass2_0.<DownloadYoutubeVideo>b__0() in C:\Software\csharppen\AsyncAwait\AsyncAwait\Downloader.cs:line 55
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
at AsyncAwait.Downloader.<DownloadYoutubeVideo>d__2.MoveNext() in C:\Software\csharppen\AsyncAwait\AsyncAwait\Downloader.cs:line 55
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.Wait()
at AsyncAwait.Program.Main(String[] args) in C:\Software\csharppen\AsyncAwait\AsyncAwait\Program.cs:line 14

为什么会发生此错误。我正在使用 libvideo下载youtube视频

最佳答案

您创建此目录了吗?

“带有Python入门p.1的C:\ Practical Machine Learning教程-YouTube.mp4”

框架正在尝试访问此路径

关于c# - 使用C#应用下载youtube文件会产生UnauthorizedAccessException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46695055/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com