Yıllar önce Adsense için blog’larken kendim için bu kodu yazmıştım, sanırım daha önce böyle bir kod paylaşan olmamıştır. En azından kendim yazmadan önce bakmıştım ama bulamamıştım. Aşağıdaki kod arama kriteriniz sonucu istediğiniz adet youtube video embed kodunu size veriyor. Temelinde sadece youtube’un arama sonuç sayfasının html’lerini inceleyip string ayrıştırma ile loop içinde dönüp istediğiniz kriterlerdeki verileri size dönüyor.
protected void btnSearch_Click(object sender, EventArgs e)
{
listUrl.Items.Clear();
try
{
for (int i = 1; i < = Convert.ToInt32(txtCount.Text)/20; i +=1)
{
string site = "http://www.youtube.com/results?search_query=" + (txtSearch.Text).Replace(' ', '+') + "&page="+i;
Uri MyUrl = new Uri(site);
WebRequest WebReq = WebRequest.Create(MyUrl);
HttpWebRequest HWebReq = (HttpWebRequest)WebReq;
WebResponse WebResp = WebReq.GetResponse();
Stream WebRespStream = WebResp.GetResponseStream();
StreamReader StrReader = new StreamReader(WebRespStream);
ArrayList WebDataArray = new ArrayList();
string line = null;
while ((line = StrReader.ReadLine()) != null)
{
if (line.Contains("/watch?v="))
WebDataArray.Add(line);
}
foreach (string myurl in WebDataArray)
{
getRecursiveVideo(myurl);
}
}
}
catch (Exception ex)
{
}
lblcount.Text = listUrl.Items.Count.ToString();
}
public void getRecursiveVideo(string imgUrl)
{
int StartPos, EndPos;
int TirnakPos;
if ((StartPos = imgUrl.IndexOf("/watch?v=")) != -1)
{
StartPos += 9;
TirnakPos = imgUrl.IndexOf('\"', StartPos);
EndPos = TirnakPos;
if (EndPos > StartPos)
{
string BulunanUrl = imgUrl.Substring(StartPos, EndPos - StartPos);
ListItem l = new ListItem();
l.Text = BulunanUrl;
if (!listUrl.Items.Contains(l))
{
listUrl.Items.Add(BulunanUrl);
urlHolder.InnerHtml += "Click" + "";
}
int uzunluk = imgUrl.Length;
string newurl = imgUrl.Substring(EndPos, uzunluk - EndPos);
if ((newurl.IndexOf("/watch?v=")) != -1)
getRecursiveVideo(newurl);
else
return;
}
}
}
Abdullahkuzhan.com gibi bir siteniz olduğunu düşünün. VDirectory1 isimli bir Application veya Virtual Folder yaratmak istediğinizi varsayacak olursak aşağıdaki kodu kullanabilirsiniz. Hosting firmaları tarafından verilen panellerde arayüzler ile otomatik oluşturduğunuz Virtual’lar kod ile aşağıdaki gibi oluşturulabilir. Bunu zamanında 50+ Virtual’ı olan bir siteyi bir başka makineye taşırken yazmıştım(IIS’te taşınabilir tabiki).
string strSchema = "IIsWebVirtualDir";
string strRootSubPath = "/W3SVC/1/Root";
DirectoryEntry deRoot = new DirectoryEntry("IIS://" + "localhost" + strRootSubPath);
try
{
deRoot.RefreshCache();
DirectoryEntry deNewVDir = deRoot.Children.Add("AbdullahKuzhan.com/"+"VDirectory1", strSchema);
deNewVDir.Properties["Path"].Insert(0, "d:\sites\abdullahkuzhan.com\MyFolder\");
deNewVDir.CommitChanges();
deRoot.CommitChanges();
if (strSchema == "IIsWebVirtualDir")
deNewVDir.Invoke("Create", true); // "AppCreate" dersen application olarak yaratır, "Create" dersen virtual folder olarak yaratır.
deNewVDir.CommitChanges();
deRoot.CommitChanges();
deNewVDir.Close();
deRoot.Close();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
Aşağıdaki method çağırımının sonucu “ben boş değerim” olacaktır.
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Kosul(null));
}
private string Kosul(string deger)
{
return deger ?? “ben boş değerim”;
}
Aşağıdaki method çağırımının sonucu “doluyum” olacaktır.
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Kosul(“doluyum”));
}
private string Kosul(string deger)
{
return deger ?? “ben boş değerim”;
}
if then else yapısıda aşağıdaki gibi kurulabilir;
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Kosul(“doluyum”));
}
private string Kosul(string deger)
{
return (deger==”doluyum”)?”doluyum zaten”:”boş değerim”;
}Aşağıdaki method çağırımının sonucu “ben boş değerim” olacaktır.
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Kosul(null));
}
private string Kosul(string deger)
{
return deger ?? "ben boş değerim";
}
Aşağıdaki method çağırımının sonucu “doluyum” olacaktır.
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Kosul("doluyum"));
}
private string Kosul(string deger)
{
return deger ?? "ben boş değerim";
}
if then else yapısıda aşağıdaki gibi kurulabilir;
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Kosul("doluyum"));
}
private string Kosul(string deger)
{
return (deger=="doluyum")?"doluyum zaten":"boş değerim";
}
follow: