2011-10-08 2 views
5

사용자가 내 해시 태그에 게시물을 올릴 때 twitpic의 사진을 자동으로 표시하는 .Net WPF 응용 프로그램에서 기능을 구현하려고합니다.C#의 트위터에서 사진을 가져 오시겠습니까?

Twitterizer2 API 라이브러리를 사용하고 있습니다. 내 검색에서 오는 모든 트윗은 t.co 링크로 링크되어 있습니다 (트위터에서 온 것 같습니다). 이 링크를 구문 분석하여 이미지를 사용자에게 보내도록하는 방법을 모르겠습니다.

답변

0

나는 당신이 두 가지 방법으로 문제를 해결할 수 있다고 생각하는 방법을 Twitterizer2의 API 작동하지만 모르는 : 구문 분석 같은 링크를하는 데 도움이 공식 트위터 API 뭔가에

  1. 검색 (Tweet Entities보고);
  2. URL의 콘텐츠를 직접 다운로드 받아 구문 분석하십시오.

    private static Uri GetPicture(string twitterUri) 
    { 
        using (var webClient = new WebClient()) 
        { 
         string html = webClient.DownloadString(twitterUri); 
         int imgIndex = html.IndexOf("<img class=\"photo\" id=\"photo-display\""); 
         int srcStartIndex = html.IndexOf("src", imgIndex) + 5; 
         int srcEndIndex = html.IndexOf("\"", srcStartIndex); 
         string imgSrc = html.Substring(srcStartIndex, srcEndIndex - srcStartIndex); 
         return new Uri(imgSrc); 
        } 
    } 
    
    : 나는 아래의 기능과 같이 제안 두 번째 방법의 경우

(이 분석은 내 다음 사람에서 발견 한 첫 번째 사진을 기반으로는 TwitPic 이미지에서만 작동 그래서 짹짹) 당신이 사용을 상상할 수있는 것처럼

이다 : 당신은 트위터에서 반환하는 미디어 엔티티 데이터에 의존 할 수

Uri imgUri = GetPicture("http://t.co/RQu9hZn8"); // this is a real image 
+0

이 작업은 (twitpic의 경우) 작동하지만 각 이미지에 대해 웹 호출을 수행 할 것이므로 시간과 대역폭을 소트 할 것이라는 점에 유의하십시오. –

+0

웹 콜을하지 않고 어떻게 이미지를 다운로드하겠습니까? 방금 * 인코딩 된 링크에서 추출하는 방법을 제안했습니다. * 그가 보여주는 이미지는 어떻게 처리합니까? –

+0

이미지 데이터를 다운로드하라는 웹 호출을 계산하는 경우 코드는 각 이미지에 대해 2 개의 웹 콜을 수행합니다. 당신이하는 일은 이미지 데이터를 추출하는 것이 아니라 클라이언트가 다운로드 할 url에 대한 또 다른 호출을해야하는 이미지에 대한 URL을 추출하는 것입니다. 그것이 제가 말하고있는 것입니다. 여러분은 1 개의 추가 웹 호출을하고 있습니다. 내가 트위터에서 직접 URL을 얻을 샘플 코드에 대한 링크를 게시했습니다. 데이터는 이미 결과에 포함되어 있습니다. –

2

.

당신은 내가 다시 여기에 잠시 게시 샘플 및 explaination 볼 수 있습니다 : 샘플이 포함되어 있지 않습니다 http://www.twitterizer.net/528/finding-urls-hashtags-and-mentions-using-entities/

을하지만, 이미지와 동영상에 대한 정보를 제공하는 새로운 TwitterMediaEntity 클래스가있다.

+0

MediaEntity에서 업데이트 해 주셔서 감사합니다. 이미 Twitterizer의 일부였습니다. – SelAromDotNet

+0

전체 소스 코드 샘플을 사용하는 최종 해결책이 있습니까? – Kiquenet

0

내가합니다 (Twitterizer nuget package와) 같은 것을 모두가 어떤 트윗 미디어 및 오디오 URL 엔티티 미디어 을 \ 미디어는 포스트하다면 첨부 항목의 배열이됩니다에있을 것입니다 부착

li.Text = tweet.text; 
foreach(Twitterizer.Entities.TwitterEntity te in tweet.Entities) 
{ 
    if(te.GetType() == (typeof(Twitterizer.Entities.TwitterMediaEntity))) 
    { 
     var b = (Twitterizer.Entities.TwitterMediaEntity) te; 
     li.Text += "<img src=\"" + b.MediaUrl + "\" />"; 
    } 
} 
0

을 사용 당신은 당신의 트윗 중 일부는이 없기 때문에

foreach (dynamic t in enumerableTwitts) 
      { 
dynamic media = t["entities"]["media"]; 
         string media_url = media[0]["media_url"].ToString(); 
} 

는 당신이 시도 - 캐치를 사용해야 될 것입니다 수있는 당신이 당신의 트윗 enumerableTwitts 에 저장 한 가정으로 첫 번째 첨부 항목의 경로를 얻으려면 ttach 파일