使用Java/Maven通过Twitter4J获取推文的转发

使用Java/Maven通过Twitter4J获取推文的转发,java,neo4j,twitter4j,Java,Neo4j,Twitter4j,我在一个项目中工作,该项目应该通过Twitter4J从Twitter获取推特、转发和关注者,然后将它们保存到本地Neo4J数据库 目前,我正试图弄清楚如何将转发到我获取的tweet上。 在我的结果中,我发现了一些被称为“RetweetdStatus”的东西作为Retweets?? 但即使有更多的转发,这也是唯一的。 我还尝试使用ResponseList和getRetweets()获取它们,但列表总是空的 下面是类中获取推文并应获取转发的部分: try { Query query

我在一个项目中工作,该项目应该通过Twitter4J从Twitter获取推特、转发和关注者,然后将它们保存到本地Neo4J数据库

目前,我正试图弄清楚如何将转发到我获取的tweet上。 在我的结果中,我发现了一些被称为“RetweetdStatus”的东西作为Retweets?? 但即使有更多的转发,这也是唯一的。 我还尝试使用ResponseList和getRetweets()获取它们,但列表总是空的

下面是类中获取推文并应获取转发的部分:

try {
        Query query = new Query("#" + input);
        QueryResult result;
        result = twitter.search(query);
        tweets = result.getTweets();

        System.out.println(result);
        //Get the result and convert it into JSONArray to safe it to DB
        JSONObject object = new JSONObject(result);
        JSONArray arrayTweets = object.getJSONArray("tweets");
        for (int i = 0; i < arrayTweets.length(); i++) {
            JSONObject jSONObject = (JSONObject) arrayTweets.get(i);
            reTweet = twitter.getRetweets(jSONObject.getLong("id"));
            System.out.println("Retweet ResponseList: "+reTweet);

            if (jSONObject.has("retweetedStatus")) {
                JSONObject retweet = jSONObject.getJSONObject("retweetedStatus");
                getReTweets(retweet);
                reTweets.put(retweet);

            }else{
                System.out.println("tweet has no retweet");
            }
            String textTweets = jSONObject.toString();

            System.out.println("Search Textfile " + i + " successful saved");
            Files.write(Paths.get("./searchTweets" + i + ".txt"), textTweets.getBytes());


        }    
试试看{
查询查询=新查询(“#”+输入);
查询结果;
结果=twitter.search(查询);
tweets=result.getTweets();
系统输出打印项次(结果);
//获取结果并将其转换为JSONArray以将其安全地保存到DB
JSONObject对象=新的JSONObject(结果);
JSONArray arrayTweets=object.getJSONArray(“tweets”);
对于(int i=0;i
之后,我使用Neo4J创建节点,并希望将转发与尚未完美运行的tweet关联起来。以下是代码的一部分:

//Safe the retrieved data to own Neo4j DB
void safeToDb(JSONArray tweet,JSONArray retweet, String from) throws MalformedURLException, IOException, JSONException {

    System.out.println("||||||||||||||||||||||||");
    System.out.println("Started to safe data to DB");
    System.out.println("|||||||||||||||||||||||||");

    //Here the transaction happens
    try (Transaction tx = db.beginTx()) {
        Label myLabel = TWEET;
        System.out.println("||||||||||||||||||||||||");
        System.out.println("Transaction started");
        System.out.println("|||||||||||||||||||||||||");
        // Database operations go here
        //Create Nodes of all the retrieved Data
        for (int i = 0; i < tweet.length(); i++) {
            JSONObject jSONObjectTweet = (JSONObject) tweet.get(i);
            String textTweet = jSONObjectTweet.toString();

            System.out.println("DB Tweet Textfile " + i + " successful saved");
            Files.write(Paths.get("./safeTweetToDb" + i + ".txt"), textTweet.getBytes());

            createEntityTweets(jSONObjectTweet);

        }

        for (int i = 0; i < retweet.length(); i++) {
            JSONObject jSONObjectReTweet = (JSONObject) retweet.get(i);
            String textReTweet = jSONObjectReTweet.toString();

            System.out.println("DB Retweet Textfile " + i + " successful saved");
            Files.write(Paths.get("./safeRetweetToDb" + i + ".txt"), textReTweet.getBytes());

            createEntityRetweets(jSONObjectReTweet);



        }
        relationship = this.tweet.createRelationshipTo(this.retweet, RelationshipTypes.IS_RETWEET_OF);

        //relationship.setProperty("message", "brave Neo4j ");
        tx.success();
    }
//保护检索到的数据以拥有Neo4j DB
void safeToDb(JSONArray tweet、JSONArray retweet、String from)抛出畸形的durlexception、IOException、JSONException{
System.out.println(“| |||||||||||||||||”);
System.out.println(“开始将数据安全保存到数据库”);
System.out.println(“| |||||||||||||||||”);
//这里发生了交易
try(事务tx=db.beginTx()){
标签myLabel=推特;
System.out.println(“| |||||||||||||||||”);
System.out.println(“事务已启动”);
System.out.println(“| |||||||||||||||||”);
//数据库操作在这里进行
//创建所有检索到的数据的节点
对于(int i=0;i
getRetweets
API将返回100个retweets,作为传入的
statusId的
ResponseList
列表
reTweet是响应列表的类型,id应该是我从twitter API获得的Tweets id。下面是返回JSON的一小部分:“id”:861279463312465921,“lang”:“es”,“favorited”:false,“displayTextRangeEnd”:-1,好的。这个tweet id
861279463312465921
有两个retweets。但是你在调用
twitter后只收到一个。getRetweets
?通过getRetweets,我得到一个空列表。使用twitter4J.getweets,我在响应中得到一个retweeted状态,但这是唯一一个。我解决了问题。我发现我可以直接使用returned Status可获取Id等信息。使用此Id,我可以毫无问题地获取Retweed。此外,代码更容易理解。感谢您的帮助pete;)getRetweets
API将返回100条retweets,作为传入的
Status Id的
状态列表
响应列表
.Is
jSONObject.getLong(“id”)
是状态id?在
reTweet=twitter.getRetweets(jSONObject.getLong(“id”);
reTweet是响应列表的类型,id应该是我从twitter API获得的Tweets id。下面是返回的JSON的一小部分:“id”:861279463312465921,“lang”:“es”,“favorited”:false,“displayTextRangeEnd”:-1,好的。这个tweet id
861279463312465921
有两个retweets。但是你在调用
twitter后只收到一个。getRetweets
?通过getRetweets,我得到一个空列表。使用twitter4J.getweets,我在响应中得到一个retweeted状态,但这是唯一一个。我解决了问题。我发现我可以直接使用ret翻转状态以获取Id等信息。使用此Id,我可以毫无问题地获取Retweeds。此外,代码更容易理解。感谢您的帮助pete;)