記録

C# でYOUTUBEダウンロードもどきを作ってみました。


C# でYOUTUBEダウンロードもどきを作ってみました。ライブラリを使用しているので、結局、楽に作れるわけです。ホントに有り難いものです。YOUTUBEやニコニコ動画をダウンロードするソフトが売られていますけど、おそらくソフトウェアプログラマーは買うことはないだろうなと言う印象を作ってみて思いましたね。

【表示する】buttonを押下後、【ダウンロードする】を押さないとダウンロード出来ない仕様に変更してます。

ライブラリにこちらのライブラリを使用しております。
https://www.nuget.org/packages/VideoLibrary/

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using VideoLibrary;
namespace YOUTUBEDownloadEv2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            webBrowser1.Navigate(textBox1.Text);
        }
        private void button2_Click(object sender, EventArgs e)
        {
            button1.Visible = false;
            button2.Visible = false;
            backgroundWorker1.RunWorkerAsync();
        }
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            backgroundWorker1.ReportProgress(10);
            webBrowser1.Navigate(textBox1.Text);
            backgroundWorker1.ReportProgress(30);
            string pat = @"\?v=([^&]+)";
            string YouTubeid = textBox1.Text;
            Regex r = new Regex(pat, RegexOptions.IgnoreCase);
            Match m = r.Match(YouTubeid);
            string Yid = m.Groups[1].ToString();
            webBrowser1.Navigate(textBox1.Text);
            backgroundWorker1.ReportProgress(50);
            if (Yid != "")
            {
                backgroundWorker1.ReportProgress(70);
                var VedioUrl = "https://www.youtube.com/embed/" + Yid + ".mp4";
                var youTube = YouTube.Default;
                var video = youTube.GetVideo(VedioUrl);
                System.IO.File.WriteAllBytes(video.FullName + ".mp4", video.GetBytes());
                backgroundWorker1.ReportProgress(80);
            }
            backgroundWorker1.ReportProgress(100);
        }
        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            button1.Visible = true;
            button2.Visible = true;
            MessageBox.Show("Download完了しました");
        }
        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            progressBar1.Value = e.ProgressPercentage;
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            // RunWorkerAsyncが呼び出された時に発生
            backgroundWorker1.DoWork +=
                new DoWorkEventHandler(backgroundWorker1_DoWork);
            // BackgroundWorkerでの処理が完了した時に発生
            backgroundWorker1.RunWorkerCompleted +=
                new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted);
            // 進捗があった時に発生
            backgroundWorker1.ProgressChanged +=
                new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
        }
    }
}

活動支援よろしくお願いします

毎日100人超ではないけれど大体100人アクセスで200超ビュー前のページ

言霊や態度次のページ

関連記事

  1. 記録

    プログラムでご飯を食べてる人の傾向(プログラマーの人柄)。

    プログラマーの人柄について語ってみました。自分はIT関係を転々し…

  2. 記録

    u-29のチャンネルが伸びしろかも。

    u-29というユーチューブチャンネルが伸びしろかもと思っていま…

  3. 記録

    mixiにログインしたのだけど。

    mixiにログインしたのだけど友達がいないので、つぶやきとアイコン…

  4. 記録

    最初から理想通りにはいかない。

    最初から理想通りにはいかない。illustratorの月々プランに…

  5. 記録

    お金を燃やすとどうなるか?

    日本の場合、他人のお金を燃やすとそれは罪になります。これは当た…

  6. 記録

    リクルートの人工知能API(A3rt)でトークボットを作ってみた。

    リクルートが提供している無料の人工知能APIを作ってみたなんか「簡…

PAGE TOP