使用Java/Maven通过Twitter4J获取推文的转发
我在一个项目中工作,该项目应该通过Twitter4J从Twitter获取推特、转发和关注者,然后将它们保存到本地Neo4J数据库 目前,我正试图弄清楚如何将转发到我获取的tweet上。 在我的结果中,我发现了一些被称为“RetweetdStatus”的东西作为Retweets?? 但即使有更多的转发,这也是唯一的。 我还尝试使用ResponseList和getRetweets()获取它们,但列表总是空的 下面是类中获取推文并应获取转发的部分:使用Java/Maven通过Twitter4J获取推文的转发,java,neo4j,twitter4j,Java,Neo4j,Twitter4j,我在一个项目中工作,该项目应该通过Twitter4J从Twitter获取推特、转发和关注者,然后将它们保存到本地Neo4J数据库 目前,我正试图弄清楚如何将转发到我获取的tweet上。 在我的结果中,我发现了一些被称为“RetweetdStatus”的东西作为Retweets?? 但即使有更多的转发,这也是唯一的。 我还尝试使用ResponseList和getRetweets()获取它们,但列表总是空的 下面是类中获取推文并应获取转发的部分: try { Query query
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
getRetweetsAPI将返回100个retweets,作为传入的statusId的ResponseList
列表;
reTweet是响应列表的类型,id应该是我从twitter API获得的Tweets id。下面是返回JSON的一小部分:“id”:861279463312465921,“lang”:“es”,“favorited”:false,“displayTextRangeEnd”:-1,好的。这个tweet id861279463312465921
有两个retweets。但是你在调用twitter后只收到一个。getRetweets
?通过getRetweets,我得到一个空列表。使用twitter4J.getweets,我在响应中得到一个retweeted状态,但这是唯一一个。我解决了问题。我发现我可以直接使用returned Status可获取Id等信息。使用此Id,我可以毫无问题地获取Retweed。此外,代码更容易理解。感谢您的帮助pete;)getRetweetsAPI将返回100条retweets,作为传入的Status Id的状态列表响应列表.IsjSONObject.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 id861279463312465921
有两个retweets。但是你在调用twitter后只收到一个。getRetweets
?通过getRetweets,我得到一个空列表。使用twitter4J.getweets,我在响应中得到一个retweeted状态,但这是唯一一个。我解决了问题。我发现我可以直接使用ret翻转状态以获取Id等信息。使用此Id,我可以毫无问题地获取Retweeds。此外,代码更容易理解。感谢您的帮助pete;)