특정 트윗에 대한 답글, Twitter API


답변:


52

내가 이해하는 바에 따르면 직접 수행 할 수있는 방법은 없습니다 (적어도 지금은 아닙니다). 추가해야 할 것 같습니다. 그들은 최근에 몇 가지 '리트 윗'기능을 추가했으며이 기능도 추가하는 것이 논리적으로 보입니다.

이 작업을 수행 할 수있는 한 가지 방법이 있습니다. 첫 번째 샘플 트윗 데이터 (에서 status/show) :

<status>
  <created_at>Tue Apr 07 22:52:51 +0000 2009</created_at>
  <id>1472669360</id>
  <text>At least I can get your humor through tweets. RT @abdur: I don't mean this in a bad way, but genetically speaking your a cul-de-sac.</text>
  <source><a href="http://www.tweetdeck.com/">TweetDeck</a></source>
  <truncated>false</truncated>
  <in_reply_to_status_id></in_reply_to_status_id>
  <in_reply_to_user_id></in_reply_to_user_id>
  <favorited>false</favorited>
  <in_reply_to_screen_name></in_reply_to_screen_name>
  <user>
    <id>1401881</id>
     ...

에서 status/show당신 사용자의 ID를 찾을 수 있습니다. 그런 다음 statuses/mentions_timeline사용자의 상태 목록을 반환합니다. 해당 반환 값을 구문 분석 in_reply_to_status_id하여 원래 트윗의 id.


user2가 user1의 트윗에 응답한다고 가정 해 보겠습니다. user1의 트윗에서이를 파악하려면 user1에 대한 멘션을 검색해야합니다. 하지만 user1로 인증 할 수없는 경우 어떻게해야합니까? 인증없이 공개적으로 액세스 할 수있는 멘션이 없습니까?
letronje 2010

@letronje 내가 아는 바는 아닙니다. 검색 API를 사용하여 트윗에서 '@ user1'을 찾을 수는 있지만을 사용하는 것만 큼 신뢰할 수 없다고 생각 status/mentions합니다.
Tim Lytle

1
? : 나는 검색 / 트윗 Q = @ ScreenName이 대신 구문 분석 것 때문에 동상처럼 보인다는 /, 사용되지 않습니다 언급한다 dev.twitter.com/docs/api/1.1/get/search/tweets
덩크

4
좋아 @Dunc 외모 단지로 변경 됐어요status/mentions_timeline
팀 라 이틀

@ 팀 좋은 지적. 그러나 내 사용 사례는 letronje의 경우와 유사합니다 (즉, 트윗은 누구 에게서나 올 수 있음). 대신 검색을 사용해야합니다.
Dunc 2014-08-14

51

트윗에 대한 답글을받는 절차는 다음과 같습니다.

  1. 트윗 저장소를 가져올 때 tweetId 즉, id_str
  2. 트위터 검색 API를 사용하여 다음 쿼리를 수행하십시오. [q="to:$tweeterusername", sinceId = $tweetId]
  3. 모든 결과를 반복합니다. 일치하는 결과 in_reply_to_status_id_str to $tweetid는 게시물에 대한 답글입니다.

10

여기 내 해결책이 있습니다. Abraham의 Twitter Oauth PHP 라이브러리를 사용합니다 : https://github.com/abraham/twitteroauth

Twitter 사용자의 screen_name 속성과 해당 트윗의 id_str 속성을 알아야합니다. 이렇게하면 임의 사용자의 트윗에서 임의의 대화 피드를 가져올 수 있습니다.

* 업데이트 : 객체 액세스 대 배열 액세스를 반영하는 새로 고침 된 코드 :

function get_conversation($id_str, $screen_name, $return_type = 'json', $count = 100, $result_type = 'mixed', $include_entities = true) {

     $params = array(
          'q' => 'to:' . $screen_name, // no need to urlencode this!
          'count' => $count,
          'result_type' => $result_type,
          'include_entities' => $include_entities,
          'since_id' => $id_str
     );

     $feed = $connection->get('search/tweets', $params);

     $comments = array();

     for ($index = 0; $index < count($feed->statuses); $index++) {
          if ($feed->statuses[$index]->in_reply_to_status_id_str == $id_str) {
               array_push($comments, $feed->statuses[$index]);
          }
     }

     switch ($return_type) {
     case 'array':
          return $comments;
          break;
     case 'json':
     default:
          return json_encode($comments);
          break;
     }

}

2
왜 이것이 투표를 거부 했습니까? 명시된대로 정확하게 작동하고 문제에 정확하게 답합니다. 또한 내 방법은 @vsubbotin과 다릅니다. 자신의 ID 대신 트위터의 ID를 사용할 수 있습니다.
lincolnberryiii

3
이것은 좋지만 귀중한 속도 제한 (oauth 당 180)을 소모 할 수 있습니다. 180 개의 트윗이이 방법으로 실행됩니다 ...
Mike Barwick

8

Twitter에는 related_results라는 문서화되지 않은 API가 있습니다. 지정된 트윗 ID에 대한 답변을 제공합니다. 실험적으로 얼마나 신뢰할 수 있는지 확실하지 않지만 이것은 트위터 웹에서 호출되는 것과 동일한 API 호출입니다.

자신의 책임하에 사용하십시오. :)

https://api.twitter.com/1/related_results/show/172019363942117377.json?include_entities=1

자세한 내용은 dev.twitter에서이 토론을 확인 하세요 : https://dev.twitter.com/discussions/293


34
이 API는 더 이상 활성화되지 않습니다
마티유

예. mathieu가 말했듯이 더 이상 활동적이지 않습니다. {u'message ': u'Sorry, that page does not exist', u'code ': 34}
shadab.tughlaq

7

여기에서는 특정 트윗의 답장을 가져 오는 간단한 R 코드를 공유하고 있습니다.

userName = "SrBachchan"

##fetch tweets from @userName timeline
tweets = userTimeline(userName,n = 1)

## converting tweets list to DataFrame  
tweets <- twListToDF(tweets)  

## building queryString to fetch retweets 
queryString = paste0("to:",userName)

## retrieving tweet ID for which reply is to be fetched 
Id = tweets[1,"id"]  

## fetching all the reply to userName
rply = searchTwitter(queryString, sinceID = Id) 
rply = twListToDF(rply)

## eliminate all the reply other then reply to required tweet Id  
rply = rply[!rply$replyToSID > Id,]
rply = rply[!rply$replyToSID < Id,]
rply = rply[complete.cases(rply[,"replyToSID"]),]

## now rply DataFrame contains all the required replies.


3

나는 이것을 다음과 같은 방식으로 구현했습니다.

1) 상태 / 업데이트는 마지막 상태의 ID를 반환합니다 (include_entities가 true 인 경우). 2) 그런 다음 상태 / 멘션을 요청하고 결과를 in_reply_to_status_id로 필터링 할 수 있습니다. 후자는 1 단계의 특정 ID와 동일해야합니다.


2

상태 satheesh대로 훌륭하게 작동합니다. 내가 사용한 REST API 코드는 다음과 같습니다.

ini_set('display_errors', 1);
require_once('TwitterAPIExchange.php');

/** Set access tokens here - see: https://dev.twitter.com/apps/ **/
$settings = array(
    'oauth_access_token' => "xxxx",
    'oauth_access_token_secret' => "xxxx",
    'consumer_key' => "xxxx",
    'consumer_secret' => "xxxx"
);



// Your specific requirements
$url = 'https://api.twitter.com/1.1/search/tweets.json';
$requestMethod = 'GET';
$getfield = '?q=to:screen_name&sinceId=twitter_id';

// Perform the request
$twitter = new TwitterAPIExchange($settings);
$b =  $twitter->setGetfield($getfield)
             ->buildOauth($url, $requestMethod)
             ->performRequest();

$arr = json_decode($b,TRUE);

echo "Replies <pre>";
print_r($arr);
die;

2

이전 related_tweets에 REST V1에서 엔드 포인트를 사용하고 있었기 때문에 몇 달 전에 직장에서 동일한 문제를 발견했습니다 .

그래서 여기에 문서화 한 해결 방법을 만들어야했습니다.
http://adriancrepaz.com/twitter_conversations_api Mirror - Github fork

이 수업은 당신이 원하는 것을 정확히해야합니다. 모바일 사이트의 HTML을 스크래핑하고 대화를 구문 분석합니다. 나는 그것을 한동안 사용해 왔고 매우 신뢰할 수있는 것 같습니다.

대화를 가져 오려면 ...

의뢰

<?php

require_once 'acTwitterConversation.php';

$twitter = new acTwitterConversation;
$conversation = $twitter->fetchConversion(324215761998594048);
print_r($conversation);

?>

응답

Array
(
    [error] => false
    [tweets] => Array
        (
            [0] => Array
                (
                    [id] => 324214451756728320
                    [state] => before
                    [username] => facebook
                    [name] => Facebook
                    [content] => Facebook for iOS v6.0 ? Now with chat heads and stickers in private messages, and a more beautiful News Feed on iPad itunes.apple.com/us/app/faceboo?
                    [date] => 16 Apr
                    [images] => Array
                        (
                            [thumbnail] => https://pbs.twimg.com/profile_images/3513354941/24aaffa670e634a7da9a087bfa83abe6_normal.png
                            [large] => https://pbs.twimg.com/profile_images/3513354941/24aaffa670e634a7da9a087bfa83abe6.png
                        )
                )

            [1] => Array
                (
                    [id] => 324214861728989184
                    [state] => before
                    [username] => michaelschultz
                    [name] => Michael Schultz
                    [content] => @facebook good April Fools joke Facebook?.chat hasn?t changed. No new features.
                    [date] => 16 Apr
                    [images] => Array
                        (
                            [thumbnail] => https://pbs.twimg.com/profile_images/414193649073668096/dbIUerA8_normal.jpeg
                            [large] => https://pbs.twimg.com/profile_images/414193649073668096/dbIUerA8.jpeg
                        )
                )
             ....             
        )
)

2

파이썬에서 twarc 패키지를 사용 하여 트윗에 대한 모든 답글을 수집 할 수 있습니다 .

twarc replies 824077910927691778 > replies.jsonl

또한 아래 명령을 사용하여 트윗에 대한 모든 회신 체인 (회신에 대한 회신)을 수집 할 수 있습니다.

twarc replies 824077910927691778 --recursive


자바 스크립트에서 이것을 수행하는 방법이 있습니까?
yashatreya

확실하지 않습니다. 확인하지 않았습니다. 무언가를 발견하면 알려 드릴 것입니다.
pouria babvey

1

statuses / mentions_timeline은 가장 최근의 멘션 20 개를 반환하므로 호출하기에 그다지 효율적이지 않으며 창당 요청 75 개 (15 분)와 같은 제한이 있으므로 user_timeline을 사용할 수 있습니다.

가장 좋은 방법은 : 1. status / show에서 screen_name 또는 user_id 매개 변수를 가져옵니다.
2. 이제 user_timeline
GET https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=screen_name&count=count 사용

(screen_name == 상태 / 쇼에서 얻은 이름)
(count == 1 ~ 최대 200)
count : 시도하고 검색 할 트윗 수를 지정합니다 (개별 요청 당 최대 200 개까지).

결과에서 원래 트윗의 ID와 일치하는 in_reply_to_status_id를 찾고 반환하는 구문을 분석하십시오.

분명히 이상적이지는 않지만 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.