Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 1
1

Загрузка превью видео с youtube

06.01.2017, 20:36. Показов 2236. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Скажите,пожалуйста:Этот код работает асинхронно или все выполняется в одном потоке?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
using System;
using System.IO;
using System.Net.Http;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
 
 
namespace YoutubePreviewer
{
    class Node
    {
        public string Path { get; private set; }
        public string Title { get; private set; }
        public string Source { get; private set; }
        public string Id { get; private set; }
        public Previews Previews { get; set; }
 
        public Node(string p,string t,string s,string i)
        {
            Path = p;
            Title = t;
            Source = s;
            Id = i;
        }
        
    }
 
    class Previews
    {
     public string[] Urls { get; private set; }
 
       
        public static Previews Get(Node n)
        {
            string[] resolutions = { "default", "hqdefault", "mqdefault", "maxresdefault" };
            for (int i = 0; i < resolutions.Length; i++)
            {
                string end = resolutions[i] + ".jpg";
                resolutions[i] = "https://img.youtube.com/vi/"+n.Id+"/"+resolutions[i] + ".jpg";
            }
            Previews pr=new Previews();
            pr.Urls = resolutions;
            return pr;
        }
    }
 
    static class Operations
    {
        public static async Task<string> DownloadUrl(string address)
        {
            HttpClient http=new HttpClient();
            return await http.GetStringAsync(address);
        }
        public static async Task<Node> Build(string url)
        {
           var source = await Operations.DownloadUrl(url);
           var title = Regex.Match(source, "<title>(.*)</title>").Groups[1].Value;
            var id = Regex.Match(url, @"watch\?v=(.+)").Groups[1].Value;
            Node node = new Node(url, title, source, id);
            node.Previews = Previews.Get(node);
            return node;
        }
 
        public static async Task WriteToDisk(Node n,string path="C:/Downloads")
        {
            Console.WriteLine($"Starting downloading {n.Path} previews");
            var securedName= string.Join("_", n.Title.Split(Path.GetInvalidFileNameChars()));
 
            Directory.CreateDirectory(Path.Combine(path, securedName));
            HttpClient http=new HttpClient();
            foreach (var preview in n.Previews.Urls)
            {
                try
                {
                    var arr = await http.GetByteArrayAsync(preview);
                    await Task.Delay(100);
                    string name = preview.Substring(preview.LastIndexOf("/") + 1);
                    using (FileStream fs = new FileStream(Path.Combine(path, securedName, name), FileMode.Create,
                            FileAccess.ReadWrite))
                    {
                        await fs.WriteAsync(arr, 0, arr.Length);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine($"Can't download and save preview  {preview}");
                    Console.WriteLine(e.Message);
                    Console.WriteLine(new string('*',12));
                }
                Console.WriteLine($"{preview} is saved!");
            }
              
        }
 
        public static async Task Load(params string []urls)
        {
         
            foreach (var url in urls)
            {
              Node n =await Build(url);
              await  WriteToDisk(n);
               
            }
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
 
            Task t = Operations.Load(File.ReadAllLines("data.txt"));
            t.Wait();
 
            Console.WriteLine("Done");
            Console.ReadKey();
        }
    }
 
   
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.01.2017, 20:36
Ответы с готовыми решениями:

Работа с видео на youtube, нужен массив [ссылка на видео, название видео]
Собственно с одной стороны есть экселевский документ с номерами, с другой стороны канал на ютубе....

Загрузка видео на Youtube
Здравствуйте. Хочу написать прогу которая будет заливать видосы на Youtube.com на C# в windows...

Превью видео с youtube
У меня видео встраивается в описание товара автоматом. Парсится с ютуб. Я могу при помощи метода...

Вывод превью картинки из Youtube видео
как можно такое реализовать , что бы выводилась только эта картинка (без добавления миниатюры) ?

1
22 / 20 / 3
Регистрация: 12.10.2016
Сообщений: 62
06.01.2017, 21:05 2
Oleg3456, конкретно здесь никакой асинхронности нет т.к. на самом верху цепочки всё равно синхронное ожидание завершения таска. Это Вам ещё повезло, что консольное приложение а не WPF или Asp .Net где есть контексты синхронизации. Потому что, если не ошибаюсь, в таком случае этот код в дэдлок бы попал
0
06.01.2017, 21:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.01.2017, 21:05
Помогаю со студенческими работами здесь

Загрузка видео на YouTube
Здравствуйте. Возникла необходимость загрузки видео на хостинг Ютуб. Можно это как-то реализовать?...

Тормозит загрузка видео - только youtube.com
Windows 7 64 bit. Браузер Chrome. (В других браузерах тоже самое). ПК достаточно мощный. Вирусы не...

Загрузка видео через youtube api
Доброго времени суток! Я новичок в этом деле, сейчас изучаю документацию по добавлению видео с...

Загрузка процессора 99-100% при открытии Opera и переходе на страницу YouTube даже без запуска видео
Всем доброго времени суток! Не знал где правильнее будет создавать эту тему, так как ситуация...

JQuery табы и видео с youtube, как остановить видео при переключении?
Дорогие друзья, нужна очень ваша помощь, ума не приложу как реализовать следующую задачу, есть...

превью к видео
Подскажите чем лучше создавать превью для flv файлов на стороне сервера,сейчас делаю это средствами...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru