Hallo, ist eine Person der Technologie verantwortlich für Zucker Haato Support Bot. "Shuga Heart" ist der Spitzname von "Sato Shin", der Figur, die in den Idol Master Cinderella Girls vorkommt.
Shuga Heart Support Bot ist ein inoffizieller Bot, der Satos Herz unterstützt.
Da ich ein Programm für automatische RT und automatisches Twittern auf Twitter4J erstellt habe, werde ich einen Artikel veröffentlichen, damit er als Referenz für andere Ps oder als Referenz verwendet werden kann, wenn ich ihn später erstelle.
Von einem Bekannten, der den Bot betreibt "Ich möchte, dass Sie automatisch RT-Tweets mit den Wörtern" #Satoshin "und" Shugaha "senden." "Ich möchte, dass du das Bild erst um 8:10 twitterst." Ich wurde gefragt.
Ersteres kann leicht mit RTbot und letzteres mit Botbird erreicht werden. ・ RTbot funktioniert nicht gut ・ Ich möchte eine andere Funktion als nur Suche und RT (schwarze Liste usw.) ・ Es ist schwierig, Tweets einzeln in Botbird zu registrieren. ・ Ich hasse es, seltsame URLs zu haben, wenn ich Bilder twittere ・ Ich benutze nicht gerne mehrere Webdienste Aus diesem Grund habe ich beschlossen, meinen eigenen Bot zu machen. ~~ Es ist ein Ärger, aber es ist nicht gut ~~
Der allgemeine Ablauf besteht darin, die API zu registrieren → den Code zu schreiben.
Informationen zur API-Registrierung finden Sie unter hier oder hier oder bei Google .. Obwohl es auf Englisch geschrieben ist, habe ich mein Bestes versucht, etwas wie "Ich möchte einen Bot machen, um Shugaha zu einem Aschenputtel-Mädchen zu machen und so etwas wie das zu tun, was ich in ↑ geschrieben habe" zu schreiben. Ich habe es geschafft, Englisch auf Highschool-Niveau zu bekommen, also musste ich nicht zu gut vorbereitet sein. Im schlimmsten Fall denke ich, ich sollte mein Bestes mit Google Übersetzung oder so etwas tun.
Ich hätte vorerst eine Textaufnahme machen sollen ...
Ich arbeite viel mit Java bei der Arbeit, deshalb habe ich beschlossen, es mit Twitter4J zu erstellen, das die Twitter-API von Java aus verarbeiten kann.
Die Verwendung ist auf der obersten Seite beschrieben, und alle einfachen Vorgänge sind in Codebeispiel geschrieben. Schauen Sie also bitte dort nach. Es ist eine Bibliothek, die es schon seit 310 Jahren gibt. Wenn Sie also googeln, können Sie so viele Informationen erhalten, wie Sie möchten.
Sie können die Suchergebnisse von Tweets mit dem folgenden Code erhalten.
SearchTweet.java
Twitter twitter = TwitterFactory.getSingleton();
Query query = new Query(searchWord);
query.setCount(count);
QueryResult result = null;
try {
result = twitter.search(query);
// System.out.println("Ich habe nach Tweets gesucht.");
} catch (TwitterException e) {
e.printStackTrace();
System.err.println("Suche nach Tweets fehlgeschlagen.");
}
Sie können die Anzahl der mit Query # setCount (int) durchsuchten Tweets ändern. Die Obergrenze liegt bei 100. Normalerweise liegt die Obergrenze bei 100, aber es scheint, dass Sie durch Angabe der Seite bis zu 1500 erreichen können. Es ist in [hier] geschrieben (http://www.mwsoft.jp/programming/java/twitter4j.html). Ich habe es nicht erwähnt, weil ich dachte, ich müsste nicht zu diesem Punkt zurückkehren, um nach dem Support-Bot zu suchen.
Sie können RT auch von QueryResult mit dem folgenden Code ausführen. (Ich mache auch automatische Likes)
RTTweet.java
Twitter twitter = TwitterFactory.getSingleton();
for (Status status : result.getTweets()) {
long tweetId = status.getId();
// if (!isAllowed(status)) {
// continue;
// }
try {
twitter.createFavorite(tweetId);
} catch (TwitterException e) {
// e.printStackTrace();
}
try {
twitter.retweetStatus(tweetId);
System.out.println("RT die folgenden Tweets");
System.out.println("tweetID:" + tweetId);
System.out.println(status.getUser().getName() + ":" + status.getText());
return true;
} catch (TwitterException e) {
// e.printStackTrace();
}
//Warten Sie 1 Sekunde, damit Sie sich nicht über die Twitter-API ärgern
Thread.sleep(1000);
}
Es wird wie folgt auf der Konsole angezeigt.
RT die folgenden Tweets
tweetID:1065539453798637568
Sushiko?illustrator?:Dereste Shugaha! (Letztes Bild)
#Dereste#Shin Sato https://t.co/EUdJBZQ0YQ
Übrigens, wenn Sie versuchen, einen Tweet, den Sie bereits RT / gemocht haben, zu RT / mögen, tritt eine Ausnahme auf. Wenn Sie es automatisch drehen, tritt es häufig auf, also drücke ich es. Es scheint, dass Sie sehen können, ob RT mit Status # isRetweetedByMe () abgeschlossen wurde, aber wenn Sie Status aus den Tweet-Suchergebnissen holen, funktioniert dies nicht gut. (Bitte sag mir, wie es geht > <)
Dies war genug, als ich RT der Tweet mit "#Sato Shin" war, aber als ich RT den Tweet mit "Shugaha" startete, geriet der Bot außer Kontrolle und ich schrieb den folgenden Code vor RT Ich habe es reingelegt.
//Spielen Sie Tweets ab, die keine Tweets mit Bildern sind
if (status.getMediaEntities().length == 0) {
continue;
}
//Ich spiele auch die Lippe
if (status.getInReplyToScreenName() != null) {
continue;
}
In isAllowed (Status), das zuvor im Code von RTTweet.java auskommentiert wurde, wird Jackson verwendet, um Tweets abzuspielen oder nicht abzuspielen.
SearchTweet#isAllowed(Status)
if (status.isRetweet()) {
status = status.getRetweetedStatus();
}
String user = status.getUser().getScreenName();
for (JsonNode node : blackListUtil.getNGUsers()) {
if (user.equals(node.asText())) {
return false;
}
}
long tweetId = status.getId();
for (JsonNode node : blackListUtil.getNGTweetId()) {
if (tweetId == node.asLong()) {
return false;
}
}
String tweetText = status.getText();
for (JsonNode node : blackListUtil.getNGWord()) {
if (tweetText.contains(node.asText())) {
return false;
}
}
return true;
BlackListUtil.java
private ObjectMapper mapper;
private JsonNode root;
public BlackListUtil() {
mapper = new ObjectMapper();
try {
root = mapper.readTree(new File("WEB-INF/blacklist.json"));
} catch (JsonProcessingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public JsonNode getNGUsers() {
return root.get("users");
}
public JsonNode getNGTweetId() {
return root.get("tweetId");
}
public JsonNode getNGWord() {
return root.get("word");
}
NG-Benutzer, NG-Tweet-ID, NG-Wort werden in der JSON-Datei festgelegt, NG-Benutzer ist er selbst und NG-Wort ist "R18" oder "NSFW". Es ist ein Bot für alle Altersgruppen, daher kann man ihm nicht helfen. (Ursprünglich habe ich der NG-Tweet-ID NSFW-Tweets hinzugefügt, aber ich verwende sie jetzt nicht.)
Übrigens sind die ersten 3 Zeilen von SearchTweet # isAllowed (Status), aber bei der Suche nach Tweets scheint nicht nur der RT-Quell-Tweet, sondern auch "ein anderer Benutzer RT dieser Tweet" im Status enthalten zu sein, also die RT-Quelle Der Tweet und die Tweet-ID sowie der Benutzer sind unterschiedlich und können durchrutschen. In diesem Fall versuche ich, den RT-Original-Tweet zu erhalten.
Um 8:10 twittere ich das folgende Bild.
Sie können ein Bild mit dem folgenden Code twittern.
TweetSender.java
Twitter twitter = TwitterFactory.getSingleton();
StatusUpdate update = new StatusUpdate(text);
update = update.media(new File(picPath));
Status status = twitter.updateStatus(update);
Die Bilder werden zusammen in einem geeigneten Ordner gespeichert, und die Dateinamen der getwitterten Bilder werden in einem Array in der JSON-Datei gespeichert, damit sich die Bilder nicht überlappen.
python
//Bringen Sie eine Liste der Bilddateinamen in das Verzeichnis
File dir = new File(folderPath);
File[] fileList = dir.listFiles();
//Bringen Sie eine Liste von json mit und ordnen Sie sie nicht verwendeten Bildern zu
String picPath = null;
out : for (File file : fileList) {
for (JsonNode node : root.get("tweetedFile")) {
if (node.asText().equals(file.getName())) {
continue out;
}
}
if (used) {
}
picPath = file.toString();
//Schreiben Sie an json
ObjectNode objectNode = root.deepCopy();
ArrayNode arrayNode = root.withArray("tweetedFile");
arrayNode.add(file.getName());
objectNode.set("tweetedFile", arrayNode);
ObjectWriter writer = mapper.writer();
writer.writeValue(Paths.get("WEB-INF/picUtil.json").toFile(), objectNode);
// System.out.println("picUtil.JSON-Ausgabe OK!");
}
break;
}
return picPath;
Alles was Sie tun müssen, ist den obigen automatischen RT / automatischen Tweet zu einem bestimmten Zeitpunkt zu erstellen. Im Fall des Shuga Heart Support-Bots wird beispielsweise automatisch um 8:10 Uhr getwittert, danach alle 30 Minuten automatisch RTs gesendet und gegen 25:00 Uhr gestoppt. (Code weggelassen)
Der Code mag ein wenig schlecht sein, aber selbst Anfänger von Java können Bots erstellen, während sie sich Beispiele ansehen und googeln. Daher sollten andere Idol-Ps auf jeden Fall Bots erstellen und die Nachbarschaft des verantwortlichen Idols beleben. Bitte versuche. Wenn möglich, stimmen Sie bitte für ** Shin Sato bei den allgemeinen Wahlen zum Cinderella Girl und für Sanan Miyoshi, der für die Technologie bei den allgemeinen Wahlen verantwortlich ist. ** ** **