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
Vous pouvez retrouver le jeu de données à jour de tous les tweets ici et les données de la timeline (followers) là
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, mai. 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}
}