Les robots qui retweetent les tweets #rspatial et #BioImageAnalysis fonctionnent bien. Il est maintenant temps d’ajouter un peu de fonctionnalités avec le meilleur tweet retweeté du mois, une fonction ajoutée au paquet {tweetrbot}.
L’été dernier, avec Marion Louveaux, nous avons créé deux robots Twitter qui retweet #rspatial et #BioImageAnalysis. C’est notre façon de récupérer les nouvelles de nos communautés préférées. Si vous êtes intéressés, j’ai présenté dans cet article de blog comment “Créer un [tel] robot twitter sur un Raspberry Pi 3 avec R” J’ai spécialement créé le package {tweetrbot} pour que mon Raspberry Pi s’occupe de cette tâche de retweet. Aujourd’hui, j’ai ajouté une petite fonctionnalité qui permettra de tweeter un résumé mensuel.
Récupérer tous les tweets avec #rspatial
Inspiré par les posts de Marion sur l’“analyse de données Twitter avec R”, j’ai décidé qu’il était temps de commencer à utiliser les données stockées par nos robots. En effet, les fonctions de {tweetrbot} stockent tous les tweets avec leur hashtag respectif dans un fichier .rds
.
J’ai ajouté l’état actuel du jeu de données #rspatial
dans le package.
file <- system.file("complete_tweets_rspatial.rds", package = "tweetrbot")
all_tweets <- read_rds(file)
all_tweets %>%
select(created_at, screen_name, text)
## # A tibble: 1,568 x 3
## created_at screen_name text
## <dttm> <chr> <chr>
## 1 2020-09-10 13:41:43 PennMUSA "Have you seen the fire hydrant inspectio…
## 2 2020-09-10 13:40:32 StatnMap "🌍This is not #rspatial, but can be of in…
## 3 2020-09-10 00:23:40 taraskaduk "Hey #gischat,\nWhat's your world's bound…
## 4 2020-09-09 19:17:55 dpprdan "#rspatial https://t.co/Y0uuMDmQ3W"
## 5 2020-09-09 13:17:18 charliejhadley "How does {mapview} decide when to send i…
## 6 2020-09-09 10:24:15 MichaelDorman… "@tjukanov Nice! :-)\n\nlibrary(sf)\nx = …
## 7 2020-09-09 00:22:54 charles_gauvin "What do these buildings ecumene tell us …
## 8 2020-09-08 17:39:22 ambiogeo "Live online course on Geographical Infor…
## 9 2020-09-08 07:56:26 maurosc3ner "Bayesian Hierarchical Models+ICAR in #IN…
## 10 2020-09-07 15:32:40 ultrazool "@geospacedman do you have any recommenda…
## # … with 1,558 more rows
Trouvez le tweet le plus retweeté et autres explorations
Si vous voulez explorer ce jeu de données un peu plus en détail, n’hésitez pas ! Les articles de Marion peuvent vous inspirer sur la façon d’explorer un tel jeu de données Twitter : “Analyse de données Twitter avec R”, “Analyse des profils utilisateurs et relations entre utilisateurs” et “Exploration du contenu des tweets”.
Dans {tweetrbot}, j’ai décidé de montrer le nombre quotidien de contributeurs, les tweets les plus retweetés et les comptages du mois. Pour ça, j’utilise la fonction top_tweets()
. Ici, je mets post_tweet = FALSE
parce que je ne veux pas que mon article de blog tweet réellement. Le bot l’a déjà fait.
Voici les médias du tweet :
# remotes::install_github("statnmap/tweetrbot")
library(tweetrbot)
output <- top_tweets(all_tweets = all_tweets, post_tweet = FALSE, top_number = 5)
output$number_contributors
output$number_tweets
output$top_retweet
Et voici le texte du tweet :
output$text_tweet
Summary of August #rspatial: 1568 tweets, 420 different contributors.
Most retweeted: https://twitter.com/zevross/status/1224686455274070017 by @zevross.Régler le Raspi pour exécuter le script tous les mois
Comme dans “Créer un robot twitter sur un Raspberry Pi 3 avec R”, nous utiliserons cron pour tweeter régulièrement.
Créez le script R qui sera exécuté par CRON.
bash
mkdir ~/talk_rspatial
cd ~/talk_rspatial
vim rtweet_summary.R
Remplissez le fichier avec le code R. Celui-ci permet de lire les données recueillies par la fonction get_and_store()
et de créer le contenu du tweet.
R
library(tweetrbot)
# Most retweets
all_tweets <- readRDS("~/talk_rspatial/complete_tweets_rspatial.rds")
# Tweet this
top_tweets(all_tweets = all_tweets, post_tweet = TRUE, top_number = 5)
Permettre au Raspi de créer des graphiques
Le Raspi est un serveur sans interface graphique. Vous ne pouvez pas créer directement des graphiques en R sur un serveur distant. Le Raspi ne fait pas exception à la règle. Si vous essayez, vous pouvez obtenir le message suivant :
Error in X11(paste("png::", filename, sep = ""), g$width, g$height, pointsize, :
unable to start device PNG
Calls: png
In addition: Warning message:
In png("test.png", width = 900, height = 400) :
unable to open connection to X11 display ''
Execution halted
Il existe une solution. Comme répondu par Dirk Eddelbuettel sur SO, vous pouvez exécuter R avec le serveur virtuel framebuffer X11. Vous devrez d’abord l’installer :
bash
sudo apt install xvfb xauth xfonts-base
Puis exécuter xvfb-run R --no-save
pour lancer le script R qui crée les graphiques. De plus, avec {ggplot2}, vous pouvez faire face à des erreurs du type :
#> X11 font -adobe-helvetica-%s-%s---%d-------*, face 2 at size 11 could not be loaded
D’après la réponse sur askubuntu, vous pourriez devoir installer :
bash
sudo apt-get install t1-xfree86-nonfree ttf-xfree86-nonfree ttf-xfree86-nonfree-syriac xfonts-75dpi xfonts-100dpi
Mettre en place le CRON
Configurez CRON pour exécuter votre script une fois par mois et tweeter le top du mois précédent.
bash
sudo crontab -e
# if you want to run for a specific user
crontab -u yourusername -e
Dans le fichier crontab qui s’ouvre, vous pouvez ajouter une commande de la forme suivante :
Minute Hour Day-of-Month Month Day-Of-Week Command
Vous pouvez configurer le crontab pour qu’il lance le script le premier jour de chaque mois à 10h00 (*
pour tous) :
0 10 1 * * sudo xvfb-run $HOME/R/bin/Rscript ~/talk_rspatial/rtweet_summary.R
Un nouveau bot Twitter dans la famille
Lors de la rédaction du premier article “Créer un robot twitter sur un Raspberry Pi 3 avec R”, j’ai créé @talk_rspatial qui retweete les tweets #rspatial et @talk_BioImg qui retweete les tweets #BioImageAnalysis.
Ce nouvel article voit la naissance de @talk_rstatsfr qui retweete les tweets #RstatsFR. J’espère que ça va encore renforcer les liens de cette communauté francophone R déjà très active. Si vous parlez de R en français, utilisez #rstatsFR
pour être retweeté par le bot. Et suivez le bot @talk_rstatsfr pour vous tenir au courant de ce qui se passe dans cette communauté R francophone !
On se retrouve sur twitter ?
Citation :
Merci de citer ce travail avec :
Rochette Sébastien. (2020, May. 16). "Trouver le plus retweeté des tweets du bot #rspatial". Retrieved from https://statnmap.com/fr/2020-05-10-trouver-le-plus-retweete-des-tweets-du-bot-rspatial/.
Citation BibTex :
@misc{Roche2020Trouv,
author = {Rochette Sébastien},
title = {Trouver le plus retweeté des tweets du bot #rspatial},
url = {https://statnmap.com/fr/2020-05-10-trouver-le-plus-retweete-des-tweets-du-bot-rspatial/},
year = {2020}
}