Mustafa Turan

Temiz Günce: Bir öğrencinin web, yaşam, programlama, veritabanları, veriler üzerine kurşun kalemi.

C# Console açık kaynak kod video indirme uygulaması

Daha önce webrequest kullanımını göstermek için izleseneden video linkini almak için yaptığım programa download etme ve youtube'u da eklememle birlikle farklı bir açık kaynak kod program ortaya çıkardım. Programın kaynak kodunu yine sizlerle paylaşmaktan memnunum.

 

Kod özellikleri

  • C# Console Copy to Clipboard : konsole uygulamasından kopyalanmış text i okutma ve yazdırma
  • C# WebRequest : C# webrequest ile site içeriğini okutmak
  • C# WebClient : C# webclient ile http den dosya indirme

 

Program özellikleri v0.2

  • Dilerseniz indirme özelliği
  • Bağlantı hata düzeltmeleri

 

Program özellikleri v0.1

  • Youtube ve izlesene video indirme linkini almak
  • Videoyu indirmek

 

Açık Kaynak kodu

// gerekli headerlar
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Windows.Forms;

namespace Examples.System.Net
{
    public class WebRequestGetOrnek
    {
        // http://mustafaturan.net/
        [STAThread]
        public static void Main()
        {
            Console.Title = "IndirSakla.com";
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.BackgroundColor = ConsoleColor.Red;
            while (true)
            {
                // uri için istek belirtin.
                Console.WriteLine("Youtube.com & izlesene.com videolarını indirme programına hoşgeldiniz.");
                Console.Write("Linki kopyalayıp enter tuşuna basın!");
                Console.ReadLine();
                string v_link = "";
                try
                {
                    // linki clipboard dan almak (hafızadan)
                    v_link = Clipboard.GetText().ToString();
                }
                catch
                {
                    Console.Clear();
                    Console.WriteLine("Geçersiz link!");
                    continue;
                }
                WebRequest request;
                try
                {
                    request = WebRequest.Create(v_link);
                }
                catch
                {
                    Console.Clear();
                    Console.WriteLine("Geçersiz link!");
                    continue;
                }
                // Yanıtı alın. başına (HttpWebResponse) koyduk çünkü veri tipleri farklı
                HttpWebResponse response;
                try
                {
                    response = (HttpWebResponse)request.GetResponse();
                }
                catch (Exception e)
                {
                    Console.Clear();
                    
                    Console.WriteLine("HATA: \n" + e.Message.ToString() + "\n");
                    response = null;
                    continue;
                }
                // Durumu ekrana bastırın.
                Console.WriteLine(response.StatusDescription);
                // Sunucu tarafından gönderilen stream'i alın.
                Stream dataStream = response.GetResponseStream();
                // StreamReader ile stream i okutun
                StreamReader reader = new StreamReader(dataStream);
                // İçeriği okutun.
                string responseFromServer = reader.ReadToEnd();

                string download_link = "";
                string file_name = "";
                string video_id = "", sk, t;
                try
                {
                    if (v_link.Contains("youtube.com") && v_link.Contains("?v="))
                    {// youtube için
                        responseFromServer = responseFromServer.Substring(responseFromServer.IndexOf("var fullscreenUrl = "));
                        responseFromServer = responseFromServer.Substring(0, responseFromServer.IndexOf("';"));
                        video_id = responseFromServer.Substring(responseFromServer.IndexOf("video_id=") + 9, responseFromServer.IndexOf("&l=") - responseFromServer.IndexOf("video_id=") - 9);
                        sk = responseFromServer.Substring(responseFromServer.IndexOf("sk=") + 3, responseFromServer.IndexOf("&fmt_map=") - responseFromServer.IndexOf("sk=") - 3);
                        t = responseFromServer.Substring(responseFromServer.IndexOf("t=") + 2, responseFromServer.IndexOf("&hl=") - responseFromServer.IndexOf("t=") - 2);
                        download_link = "http://www.youtube.com/get_video.php?video_id=" + video_id + "&sk=" + sk + "&t=" + t;
                    }
                    else
                    {// izlesene için
                        download_link = responseFromServer.Substring(responseFromServer.IndexOf("so.addVariable(") + 24, responseFromServer.IndexOf(".flv") - responseFromServer.IndexOf("so.addVariable(") - 24) + ".flv";
                    }
                }
                catch
                {
                    Console.Clear();
                    Console.WriteLine("İndirme linki bulunamadı!");
                    continue;
                }
                // İçeriği gösterin.
                Console.Write("Linkiniz hazır dilediğiniz yere yapıştırabilirsiniz, ekranı temizlemek için bir tuşa basarak devam edin!\n\n");
                Console.WriteLine(download_link);
                // Stream'i ve yanıtları temizleyin(kapatın).
                reader.Close();
                dataStream.Close();
                response.Close();
                try
                {
                    Clipboard.SetText(download_link + ".flv");
                }
                catch
                {
                    Console.WriteLine("Lütfen tekrar deneyiniz. Link kopyalanamadı!");
                }
                try
                {
                    WebClient client = new WebClient();
                    client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
                    if (v_link.Contains("youtube.com") && v_link.Contains("?v="))
                    {
                        file_name = video_id + ".flv";

                    }
                    else
                    {// video görünen adı
                        file_name = download_link.Substring(download_link.LastIndexOf("/") + 1);
                    }
                    if (File.Exists(file_name))
                    {// video daha önce indirilmişse silinsin mi?
                        Console.WriteLine("Dosya " + file_name + " zaten mevcut!. Silinsin mi? e/h: ");
                        if (Console.ReadLine().Equals("e"))
                        {
                            File.Delete(file_name);
                        }
                        else
                        {
                            Console.Clear();
                            continue;
                        }
                    }

                    // indirmek için gerekli kod(download etmek)
                    Console.WriteLine("Dosya Adı: " + file_name + " İndirilsin mi? e/h: ");
                    if (Console.ReadLine().Equals("e"))
                    {
                        Console.WriteLine("İndiriliyor...");
                        client.DownloadFile(download_link, file_name);
                    }
                    else
                    {
                        client = null;
                        Console.Clear();
                        continue;
                    }
                    // temizlik yapalım
                    client = null;
                    // bilgi verelim
                    Console.WriteLine("Videonuz indi! İyi seyirler...");
                }
                catch
                {
                    // fazla söze gerek yok yola devam :)
                }
                Console.ReadLine();
                Console.Clear();
            }

        }
    }
}

Kopyalama Lisansları

GPL ve MIT

İndirme linkleri

Görüntülenme: 818 | 5/5 : 5

Yorumlar RSS

++ Yorum Ekle

©