[JAVA] Une histoire sur un étudiant qui a été épargné en raison de l'épidémie de SRAS-CoV-2 et a finalement créé une application Twitter et a finalement atteint la limite de l'API Twitter.

introduction

Lorsque vous rencontrez un problème, vous êtes sur Google, non? Cette fois, j'ai recherché sur Google quand j'étais restreint par l'API, mais il n'y a pas beaucoup d'informations en japonais qui sortent. .. ..

Par conséquent, j'ai décidé d'écrire cet article dans l'espoir qu'il aiderait quelqu'un qui est tombé dans la même situation que moi. (** Ce sera dommage, mais **) (Malgré **, il y a pas mal de choses que je veux écrire ) ( En d'autres termes, il y a tellement d'histoires **)

Cette histoire est un record pour tout le monde à réaliser "** Attaquez la balle avec des pierres d'autres montagnes **". Je prie pour que vous ne suiviez pas la même ornière que moi. .. ..

(** Si vous avez seulement besoin de savoir comment supprimer les restrictions sur l'API Twitter **, il suffit de lire uniquement Résumé)

Mars 2020

Un nouveau virus corona appelé SARS-CoV-2 est devenu répandu. J'espère que la personne qui lit ceci dira "Cela s'est passé" En raison de l'influence de ce virus, les écoles de tout le pays ont pris des mesures pour fermer.

En conséquence, moi, élève de deuxième année du secondaire (troisième année du secondaire en 2020), je ne pouvais pas non plus aller à l'école. Mon école est une école autoproclamée, mais je n'ai donné aucun travail et j'ai pris la position de «faire de votre mieux en étudiant par vous-même».

Avril 2020

Le 27 février (n'est-ce pas?), Le Premier ministre Abe a demandé la fermeture des écoles dans tout le pays, et la période a été encore prolongée, et la fermeture des écoles s'est poursuivie même après avril. Comme prévu, mon école a également envoyé les devoirs par la poste, et c'est devenu une forme «d'étude à domicile».

14 avril 2020 minuit-15 avril, aube

Immédiatement avant d'entrer en vacances scolaires, quelques mots ont été dits aigres dans la bouche et douloureux dans les oreilles.

"** Si vous êtes un étudiant de cette école, consultez Classi et le site Web de l'école tous les jours !! **"

(À part: La concentration de l'accès dans cette tourmente et la combinaison de Accès non autorisé ont nui à la réputation de l'étudiant pour Classi.)

Bien sûr, je suis également élève de "cette école", donc je lis ces deux choses tous les jours sans faute. Mais,

**…Ouaip. C'est ennuyant. ** **

Puis, soudainement avant l'aube du 15 (vers 1h00), ** Créons un service qui surveille le site Web de l'école et vous avertit de sa mise à jour! J'ai décidé de **.

15 avril 2020 matin

J'ai immédiatement commencé à mettre cette idée en forme.

"Est-ce Java après tout?" (← ** Presque seul Java peut être utilisé **) "Utiliser Gradle" (← ** Gradle je ne comprends pas mais c'est pratique **) "S'il est mis à jour pour que tout le monde puisse le voir, il sera publié sur Twitter" (← ** Important ici **)

En pensant à diverses choses, j'ai fini de le faire rapidement en une heure environ (selon mon vague souvenir). Les spécifications sont comme ça ↓

・ En supposant un fonctionnement constant sur Raspberry Pi
・ Accédez au site Web de l'école toutes les quelques minutes
・ Comparez avec les données acquises la dernière fois, tweetez s'il y a un changement

J'ai utilisé Twitter4J-4.0.7 pour accéder à l'API Twitter.

Après cela, nous avons effectué un test en utilisant la section actualités de Yahoo! JAPAN, détecté les mises à jour normalement et confirmé que nous pouvions tweeter.

15 avril 2020 vers 10:00

Je ne suis pas encore passé à Raspberry Pi et j'ai commencé une opération d'essai ciblant l'école HP avec un MacBook pour le développement. Le site Web de l'école est rarement mis à jour par rapport à Yahoo! JAPAN (sans parler de la section actualités), je l'ai donc laissé dans cet état pendant un moment.

À ce stade, le compte de Bot était verrouillé et seuls moi et mon ami proche A pouvions le voir.

15 avril 2020 15:16

J'ai posté un tweet disant "Librahack Je suis un peu inquiet ()". Après tout, il n'y avait aucun problème.

15 avril 2020 17:34

** School HP a été mis à jour! !! !! ** ** Oui, j'ai enfin eu le contrôle de fonctionnement! !! Vous pouvez également tweeter normalement! !! J'ai fait une pose des tripes au contenu de mon cœur.

15 avril 2020 19:00

(** J'ai oublié ce que j'ai fait **) Il semble que j'ai fait de la maintenance dans le passé. De plus, nous avons ajouté une fonction ludique pour dire bonjour matin et soir ~~ inutile ~~.

Mon ami A et moi avons tous les deux activé la notification de Bot Dirt afin que je puisse immédiatement remarquer le tweet de Bot, mais j'ai oublié de le désactiver même si mon ami A avait désactivé la notification pour maintenance. C'était avec un bonus () Grâce à cela, beaucoup de notifications de tweets de test pendant la maintenance ...

15 avril 2020 21:40

Après avoir terminé la maintenance, j'ai déverrouillé la saleté Bot et l'ai diffusée dans le monde entier. Lorsque j'ai fait de la publicité avec mon ami A, de nombreuses personnes m'ont immédiatement suivi. Certaines personnes ont dit que c'était «compétent». (J'étais si heureux)

Date et heure inconnues

J'ai oublié la date et l'heure exactes, mais j'ai probablement ajouté la possibilité de DM les détails de l'erreur sur mon compte Twitter si une erreur se produit dans le Bot ici **. (Politique C'est une histoire que vous pouvez lire correctement. Je veux me raconter dans le passé.)

16 avril 2020 vers 16:30

La maintenance a été ajoutée au site Web de l'école et je suis temporairement incapable de me connecter. Je ne savais pas ce que je faisais ...

Le Bot a craché ʻUnknownHostException` et a appris l'erreur quand le DM est arrivé. Jusqu'à ce moment, je pensais: "Cette fonction est géniale!" (** Je veux frapper **)

J'ai été informé à l'avance sur le HP que la maintenance serait effectuée, alors j'ai décidé de laisser comme "Attendez un peu et je vais le réparer."

16 avril 2020 vers 16:45

J'étais un peu inquiet parce que je continuais à lancer des erreurs par intermittence, alors j'ai arrêté le Bot.

16 avril 2020 16:52

J'ai redémarré le Bot et confirmé qu'il pouvait se connecter normalement à HP. Je me demande pourquoi il ne s'est pas connecté ...

16 avril 2020 17:06

Le moment fatidique est enfin arrivé. Je m'inquiétais de savoir si cela fonctionnait correctement, alors je l'ai remarqué lorsque j'ai redémarré le Bot à 16h52 et regardé fréquemment le journal.

**cette? J'obtiens une erreur Twitter4J ...? ** **

403:The request is understood, but it has been refused. An accompanying error message will explain why. This code is used when requests are being denied due to update limits (https://support.twitter.com/articles/15364-about-twitter-limits-update-api-dm-and-following).
message - Application cannot perform write actions. Contact Twitter Platform Operations through https://support.twitter.com/forms/platform
code - 261

Relevant discussions can be found on the Internet at:
	http://www.google.co.jp/search?q=796590e6 or
	http://www.google.co.jp/search?q=802fbd73
TwitterException{exceptionCode=[796590e6-802fbd73], statusCode=403, message=Application cannot perform write actions. Contact Twitter Platform Operations through https://support.twitter.com/forms/platform, code=261, retryAfter=-1, rateLimitStatus=null, version=4.0.7}
	at twitter4j.HttpClientImpl.handleRequest(HttpClientImpl.java:170)
	at twitter4j.HttpClientBase.request(HttpClientBase.java:57)
	at twitter4j.HttpClientBase.post(HttpClientBase.java:86)
	at twitter4j.TwitterImpl.post(TwitterImpl.java:2138)
	at twitter4j.TwitterImpl.sendDirectMessage(TwitterImpl.java:577)
	at twitter4j.TwitterImpl.sendDirectMessage(TwitterImpl.java:611)
	at twitter4j.TwitterImpl.sendDirectMessage(TwitterImpl.java:616)

Apparemment, c'est malade au stade du tweet.

Pour le moment, j'ai arrêté Bot et j'étais vraiment impatient, pensant "** Mais j'ai pu tweeter normalement ...? **" pour le moment [page Twitter Developers Apps](https://developer.twitter.com/en / apps) a été accédé.

200419-0001.png

** RESTRICTED TO API READ ACCESS UNIQUEMENT ** ... (Traduction: ** Votre application est soumise à des restrictions en écriture. Elle peut être lue. **)

Vous êtes encore plus impatient. Bien sûr Guguru.

screencapture-google-search-2020-04-20-13_17_35.png

Il n'y a que trois pages qui ressemblent à cela en japonais. Je suis encore plus impatient.

Pour le moment, accédez à Comment débloquer l'application Twitter | Service public net affiché en haut.

Apparemment, vous pouvez nous contacter à partir de Twitter API Policy Support.

screencapture-help-twitter-forms-platform-2020-04-20-13_24_41.png

Dans la section "Détails", j'ai rempli ce qui suit (** Ceci est une image avec une mémoire vague **) et d'autres éléments nécessaires et je l'ai envoyé.

Cette application est un bot qui surveille un site Web spécifique et tweete lorsqu'il est mis à jour. Lorsqu'une erreur s'est produite, j'ai implémenté une fonction pour envoyer le contenu de l'erreur par DM à un autre compte que je possède, mais comme un grand nombre d'erreurs s'est produit, il a été jugé qu'une grande quantité de DM était envoyée et la fonction Je pense que c'était limité. À l'avenir, nous prendrons des mesures pour augmenter l'intervalle d'envoi de DM afin d'éviter que cela ne se produise, veuillez donc supprimer la restriction.

Oui. J'avais une idée terrible de la cause de la restriction, alors j'ai envoyé un message que je regrettais.

Accédez directement au dossier de messagerie.

** ... N'y a-t-il rien à venir? ** **

Je n'ai même pas reçu l'e-mail de réponse automatique. Revenir à la précédente page de Net Zouzen-san ...

  • Il se peut que vous ne soyez pas gelé quelques heures après avoir postulé, ou que vous soyez décongelé quelques jours plus tard, ou que des questions supplémentaires vous soient posées.

Dans mon cas, il a été congelé accidentellement environ 3 fois, mais il a été annulé 5 heures après ma demande.

** Hmm. Eh bien, les gens sur Twitter travaillent également à domicile. J'étais convaincu que ** et j'ai décidé d'attendre tranquillement.

16 avril 2020 vers 20:00

** Vous ne pouvez pas tweeter, mais exécutez-le localement pour vous-même! J'ai pensé ** et j'ai essayé de le démarrer,

** Bot "Unknown HostException" **

J'ai juste atteint la limite, mais maintenant je ne peux pas me connecter au site Web de l'école. C'est exactement ** une abeille sur un visage qui pleure **.

Essayez d'y accéder avec Chrome sur votre MacBook. ... tu peux le voir. Connectez-vous à Raspberry Pi avec ssh et envoyez un ping à l'école HP. … ʻHôte inconnu. Ping sur votre MacBook. … ʻHôte inconnu.

Qu'y a-t-il dans ma tête ici? ?? ?? est devenu. Pourquoi ne puis-je pas le voir dans Chrome et lui envoyer un ping?

**… Peut-être le cache du navigateur? ** **

Flash, supprimez tout le cache de Chrome → accès en mode secret.

200420-0002.png

DNS_PROBE_FINISHED_NXDOMAIN…?? Apparemment, quelque chose s'est passé lors de la résolution du nom avec DNS.

~ Temps d'essais et d'erreurs après avoir recherché diverses choses ~

… Résolu. Apparemment, quelque chose s'est passé autour du DNS en raison de la maintenance qui est entrée dans l'école HP vers 16h30 le 16 avril, et le cache DNS du routeur (dont 192.168.11.1) était obsolète. Après avoir utilisé Google Public DNS (8.8.8.8), je peux me connecter normalement.

(** Excusez-moi d'être dérangé par le sujet principal **)

17 avril 2020 vers 0:20

J'utilise un MacBook avec un client ssh et je ne parviens pas à me connecter entre MacBook --Raspberry Pi.

Voici mon tweet en ce moment.

pour aggraver les choses, 卍 n'est plus connecté à Saba

C'est étrange parce que j'ai deux abeilles sur mon visage qui pleure et que je suis tendu à minuit, mais ne vous inquiétez pas.

Comme la zone réseau est clairsemée, je suis allé au ** outrage ** pour éteindre l'alimentation de Raspberry Pi et réinstaller Raspbian. (La bonne chose à propos de Raspberry Pi est que vous pouvez le faire facilement.)

17 avril 2020 vers 17:00

De plus, comme le MacBook - Raspberry Pi était mort, je suis à nouveau indigné **.

À propos, après avoir résolu les problèmes liés au DNS le 16 avril Déplacer le bot localement → Publier manuellement sur Twitter si des mises à jour sont détectées en consultant le journal J'ai continué à fonctionner avec ce sentiment.

Cela fait un jour que j'ai demandé à lever les restrictions, mais je n'ai pas reçu un seul e-mail, encore moins de lever les restrictions. ** **

19 avril 2020 0:13

Deux jours après l'application, il n'y avait pas de son et j'étais complètement paralysé, j'ai donc décidé de contacter à nouveau depuis Twitter API Policy Support.

** Cependant, en anglais. ** **

Rappelez-vous que lorsque vous vous êtes inscrit à Twitter Developer, c'était écrit en anglais? Rappelant que, ** Peut-être que les développeurs sont limités à l'anglais? .. J'étais inquiet pour **, alors j'ai utilisé la capacité de ~~ ** Eiken 2e année, CECR B1 ** ~~ (C'est un mensonge DeepL J'ai entré le champ de détails en anglais et l'ai envoyé.

I sent the same message in Japanese a few days ago, but I would like to send it in English as well, just in case. I apologize for the duplication. Cette application est un robot qui surveille un site Web spécifique et tweete lorsqu'il détecte une mise à jour. J'avais implémenté une fonction pour envoyer un DM à un autre compte que je possède (@username) lorsqu'une erreur se produit, mais en raison du grand nombre d'erreurs , Je pense qu'il a été jugé que ce robot a envoyé un grand nombre de messages de marque et a été restreint. Pour éviter que cela ne se produise à l'avenir, j'ai supprimé cette fonctionnalité, veuillez donc supprimer la restriction. Thank you.

Accédez directement à votre dossier de messagerie.

Hello,

Thanks for reaching out. Your app has been restricted or suspended due to one or more violations of our Developer Agreement and Policy,AutomationRules,DisplayRequirementsand/orTwitterRules. Common reasons for this happening include:

・ Les utilisateurs signalant le contenu publié via votre application comme spam (Tweets, RT, favoris, DM, etc.) ・ Utilisation abusive d'automatisations, comme le suivi / désabonnement automatique ・ Utilisation suspecte de l'API, telle que l'atteinte répétée des limites de taux ・ Afficher les violations concernant la façon dont vous devez afficher les Tweets

This list is not exhaustive, so review our policy documentation to ensure that your app and your app’s users are following all of our rules.

Please respond to this email if you need further clarification, but note that we will only consider a request to lift this restriction after you provide us with the following information:

・ Identifiant d'application et clé client ・ Lien et instructions sur la façon de se connecter à votre application pour vérifier sa conformité ・ Une liste des modifications spécifiques que vous avez apportées pour résoudre la non-conformité à la politique

We will not respond to requests to lift restrictions that do not include this information.

Regards,

Twitter Platform Operations

** La réponse automatique est arrivée! !! !! !! ** **

À ce stade, je suis déjà excité. ** À un niveau où le sourire ne s'arrête pas. ** ** Cependant, je ne sais pas ce que dit Twitter, donc ** traduction **.

Merci de me contacter. Je l'ai limité, car votre application a enfreint certaines règles. Il semble qu'il soit souvent restreint à ces moments.

・ Quand quelqu'un signale cette application comme spam ・ Lorsque vous abusez de l'automatisation, comme le suivi ou le désabonnement automatique ・ Lorsque vous êtes coincé dans la limite de l'API plusieurs fois ・ Lorsque vous enfreignez les règles d'affichage des tweets sur votre propre site Web

Raisons de la limitation Ce n'est pas la seule raison. Réfléchissez bien à ce que vous avez fait.

Si vous avez des questions, veuillez répondre à cet e-mail. Mais si nous ne donnons pas ces informations, nous ne lèverons pas les restrictions.

・ Identifiant d'application et clé client ・ Comment se connecter à l'application ・ Ce qui a été changé pour ne pas être limité

Veuillez noter que nous ne répondrons pas aux e-mails qui n'incluent pas ces personnes, tels que «Veuillez lever les restrictions».

Des personnes sur Twitter

**… Je suis content d'avoir autant écrit dans la colonne "Détails"! !! ** **

Je vais donc vous envoyer ce que j'ai écrit dans la colonne des détails presque tel quel. (J'ai copié et sauvegardé ce que j'ai écrit au cas où)

Hello. I'm Japanese, so I'm not good at English. I apologize for it.

・ Identifiant d'application et clé client App ID: < App ID > Consumer Key: < Consumer Key >

・ Lien et instructions sur la façon de se connecter à votre application pour vérifier sa conformité This app has no website. It just tweets. Mon profil est:

・ Une liste des modifications spécifiques que vous avez apportées pour résoudre la non-conformité à la politique J'avais implémenté une fonction pour envoyer un DM à un autre compte que je possède (@username) lorsqu'une erreur se produit, mais en raison du grand nombre d'erreurs, je pense qu'il a été jugé que ce bot a envoyé un grand nombre de DM et a été restreint Pour éviter que cela ne se produise à l'avenir, j'ai supprimé cette fonctionnalité.

Sincerely,

<Nom réel>

… Huh.

19 avril 2020 vers 14:10

Depuis Déplacer le bot localement → Publier manuellement sur Twitter si des mises à jour sont détectées en consultant le journal J'ai continué à le faire fonctionner comme ça, mais il est difficile de voir les journaux avec diligence.

J'ai donc décidé de l'exécuter en tant que Discord Bot jusqu'à ce que la restriction d'écriture soit levée.

J'ai utilisé JDA-4.0.0_39 pour accéder à l'API Discord, et l'implémentation s'est terminée en quelques heures.

21 avril 2020 vers 12:00

Jusqu'à présent, Twitter (bien que toujours restreint) et Discord sont pris en charge, mais pour une raison quelconque, je souhaite également prendre en charge LINE. Après avoir cherché un peu, j'ai trouvé quelque chose qui s'appelle LINE Messaging API SDK for Java, donc je l'ai implémenté en environ une heure.

Au fait, je n'ai pas encore reçu de réponse de Twitter.

4 juin 2020 7:50

Oui, environ un mois et demi après avoir répondu à l'email, j'ai finalement reçu une réponse de Twitter ce matin.

Bonjour @ username,

Thank you for reaching out. We have reviewed your request and have reactivated your API key. Going forward, carefully ensure that your application adheres to Twitter’s policies:

Contrat et politique du développeur

Règles d'automatisation

Règles Twitter

Please note, applications found to be violating policy again may be subject to permanent suspension.

Regards,

Twitter Platform Operations

↓ Traduit.

@Username, Chiss.

Merci de me contacter. J'ai lu ce que vous disiez et j'ai supprimé les restrictions de l'API. Ce que je veux faire en observant correctement cette règle.

Contrat et politique du développeur

Règles d'automatisation

Règles Twitter

Sachez que si vous enfreignez à nouveau la politique à l'avenir, vous pourrez peut-être utiliser ce compte pour toujours.

Ensuite.

Twitter Platform Operations

** D'accord! !! ** ** Cette ↓ qui était affichée sur la page Twitter Developers Apps a également disparu.

200419-0001.png

Après cela, j'ai changé le paramètre pour que Bot tweeté, et j'ai pu confirmer que je pouvais tweeter fermement. Ainsi, la bataille «I VS Twitter» s'est terminée. .. ..

Résumé

Que faire si vous êtes limité par l'API Twitter

screencapture-help-twitter-forms-platform-2020-04-20-13_24_41.png

Autres cours

** ・ Lisez la politique correctement ** ** ・ N'utilisez pas la fonction DM sauf si quelque chose ne va pas ** ** ・ Le monde des programmeurs doit être reconnu comme un anglais de base **

Page qui a été prise en charge

Comment débloquer l'application Twitter | Service public netComment débloquer l'application Twitter | 56stationAutorisation d'écriture de l'API Twitter Frozen Summer 2019 --QiitaL'histoire de passer 7 jours de nouvelle année inconfortable en raison du gel du compte Twitter et des applications --Qiita

Recommended Posts

Une histoire sur un étudiant qui a été épargné en raison de l'épidémie de SRAS-CoV-2 et a finalement créé une application Twitter et a finalement atteint la limite de l'API Twitter.
Une histoire sur l'utilisation de l'API League Of Legends avec JAVA
L'histoire de l'oubli de fermer un fichier en Java et de l'échec
Une histoire à laquelle j'étais accro lors du test de l'API à l'aide de MockMVC
Implémentons une fonction pour limiter le nombre d'accès à l'API avec SpringBoot + Redis