記録

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


C# でYOUTUBEダウンロードもどきを作ってみました。
ライブラリを使用しているので、結局、楽に作れるわけです。
ホントに有り難いものです。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. 記録

    ファイナルファンタジー15が発売されました。_(:3」∠)_

    ファイナルファンタジー15が発売されました。_(:3」∠)_もうラ…

  2. 記録

    httpingのインストール方法。centOS7

    httpingのインストール方法ですけど。wgetを使用してダウンロ…

  3. 記録

    2016.03.30. 03:30:30

    2016.03.30. 03:30:30に自分は何をしていたか・・…

  4. 記録

    Adobeが新商品などを発表した。

    Adobeが新商品などを発表。徐々にAdobeが描く未来像が見えて…

  5. 記録

    この頃の疑問。性格診断や手相って当たるのか?

    名前占いや手相って当たるのか?なんとく当たっている気がするし、統計…

  6. 記録

    無関心:ブロガー続々引退していく?

    高知県を拠点として活動していたブロガー続々と引退していくのを見て思…

PAGE TOP