I decided to write a program that downloads thumbnails from YouTube. But I ran into the problem that sometimes WebClient throws a 404 error.
I wanted to make it so that if the selected quality gives an error of 404, we take the link to the lower quality of the picture.
But for some reason it does not work.
public class Downloader { WebClient client = new WebClient(); public void Download(string ide, string quality, string filename, string path) { if (path == @"C:\Downloads") { Directory.CreateDirectory(@"C:\Downloads"); } string uri; if (quality == "maxresdefault")// Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π²ΡΠ±ΡΠ°Π½ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ { string[] maxDef = {//ΠΎΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ (ide - ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π²ΠΈΠ΄Π΅ΠΎ) "https://img.youtube.com/vi/" + ide + "/maxresdefault.jpg", "https://img.youtube.com/vi/" + ide + "/sddefault.jpg", "https://img.youtube.com/vi/" + ide + "/hqdefault.jpg", "https://img.youtube.com/vi/" + ide + "/mqdefault.jpg", "https://img.youtube.com/vi/" + ide + "/default.jpg" //Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ }; foreach (var i in maxDef)//Π·Π°ΠΏΠΈΡ
ΠΈΠ²Π°Ρ ΠΌΠ°ΡΡΠΈΠ² Π² ΡΠΈΠΊΠ» { uri = i;//ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅, ΠΈ ΠΏΠΎ ΠΏΡΠΎΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ //Π΅ΡΠ»ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΡΡΡΠ»ΠΊΡ ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ°Π·Ρ - ΠΊΠ°ΡΠ°Π΅Ρ, ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° Π½Π΅Ρ filename = path + "\\" + filename + ".jpg";//Π·Π°Π΄Π°Ρ ΠΏΡΡΡ ΠΈ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° try { client.DownloadFile(uri, filename);//ΠΏΡΡΠ°ΡΡΡ ΡΠΊΠ°ΡΠ°ΡΡ break;//Π΅ΡΠ»ΠΈ ΡΠΊΠ°ΡΠ°Π»ΠΎ Π²ΡΡ
ΠΎΠΆΡ ΠΈΠ· ΡΠΈΠΊΠ»Π° } catch { } }
... ΠΈΠ½ΠΎΠ³Π΄Π° WebClient Π²ΡΠΊΠΈΠ΄ΡΠ²Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ 404.Just in case I ask, is the error reproduced? Those. arises randomly or stably on a specificide? - default localehttp://img.youtube.com/vi/<ide>/default.jpg) aren't there? - default locale