Le package R fouRplebsAPI permet aux chercheurs d'interroger la base de données 4chan archivée par 4plebs.org. Cette base de données est la plus grande archive continue des publications en constante disparition sur l'imageboard 4chan. Avec ce package, les chercheurs peuvent utiliser les fonctionnalités de recherche détaillées offertes par 4plebs et récupérer des données structurées de la communication sur 4chan.
Le package est basé sur la documentation de l'API 4plebs.
Si fouRplebsAPI est utile pour votre recherche, veuillez citer comme suit :
Buehling, K. (2022). fouRplebsAPI : package R pour accéder aux publications 4chan via l'API 4plebs.org (Version 0.9.0). https://doi.org/10.5281/zenodo.6637440
Vous pouvez installer la fouRplebsAPI depuis GitHub avec :
# install.packages("devtools")
devtools :: install_github( " buehlk/fouRplebsAPI " )
Les forums 4chan actuellement couverts par 4plebs sont :
Nom du tableau. | Abréviation |
---|---|
Politiquement incorrect | pol |
Haute résolution | heure |
Jeux traditionnels | tg |
Télévision et cinéma | TV |
Paranormal | x |
Merde 4chan dit | s4s |
Auto | o |
Conseil | adv |
Voyage | trv |
Éclair | f |
Sportif | sp |
Ma petite politique | mlpol |
Méca et automobile | mo |
Bien que ce package comprenne plusieurs fonctions qui permettent aux chercheurs d'interroger et d'inspecter des publications 4chan spécifiques (get_4chan_post) ou des fils de discussion (get_4chan_thread), les chercheurs souhaitant collecter des données à partir de l'archive 4plebs seront probablement intéressés par la collecte d'une plus grande quantité de données.
La première façon de collecter des données consiste à collecter les derniers threads d'un forum donné. Disons que vous êtes intéressé par les 20 derniers fils de discussion du forum « Conseils » (à l'exclusion des commentaires accompagnant le message d'ouverture), une façon d'interroger les données est :
library( fouRplebsAPI )
recentAdv <- get_4chan_board_range( board = " adv " , page_start = 1 , page_stop = 2 , latest_comments = FALSE )
str( recentAdv , vec.len = 1 , nchar.max = 60 )
# > 'data.frame': 20 obs. of 15 variables:
# > $ thread_id : chr "26681983" ...
# > $ doc_id : chr "12984655" ...
# > $ num : chr "26681983" ...
# > $ subnum : chr "0" ...
# > $ op : num 1 1 ...
# > $ timestamp : int 1655111247 1655110365 ...
# > $ fourchan_date : chr "6/13/22(Mon)5:07" ...
# > $ name : chr "Anonymous" ...
# > $ title : logi NA ...
# > $ referencing_comment: logi NA ...
# > $ comments : chr "I have a very good friend. Maybe one of my "| __truncated__ ...
# > $ poster_country : logi NA ...
# > $ nreplies : logi NA ...
# > $ formatted : logi FALSE ...
# > $ media_link : logi NA ...
La description de la sortie peut être trouvée dans les documentations des fonctions. Théoriquement, il serait possible de parcourir de vastes étendues de l'archive avec cette fonction, même si l'API a une limite de débit API, ce qui ralentit le processus d'interrogation.
Une deuxième façon de collecter des données 4chan avec ce package est la fonction de recherche. 4plebs permet une recherche très détaillée avec de nombreux filtres de recherche. Je ne montrerai que des exemples simples de données pouvant être collectées avec fouRplebsAPI.
L'exemple que je montre ici est plutôt joyeux, car j'aimerais éviter les sujets les plus controversés pour lesquels 4chan, en particulier le forum /pol/, est célèbre. Les chercheurs, par exemple ceux qui s’intéressent à la communication politique d’acteurs aux idéologies controversées, trouveront facile d’adapter cet exemple. Mais celui-ci concerne les vacances.
Retrouvons la communication dans le forum « Voyage » qui traite de Majorque, Espagne.
Tout d’abord, pour avoir une première impression des résultats de la recherche, on peut consulter un extrait des 25 articles les plus récents contenant le terme de recherche « majorque ».
mallorca_snippet <- search_4chan_snippet( boards = " trv " , start_date = " 2021-01-01 " , end_date = " 2022-12-31 " , text = " mallorca " )
# > The 1 - 25 oldest posts of the 78 total search results are shown.
# > Scraping all 78 results would take ~ 1.33 minutes.
str( mallorca_snippet , vec.len = 1 , nchar.max = 60 )
# > 'data.frame': 25 obs. of 15 variables:
# > $ thread_id : chr "1938850" ...
# > $ doc_id : chr "1113628" ...
# > $ num : chr "1938924" ...
# > $ subnum : chr "0" ...
# > $ op : num 0 1 ...
# > $ timestamp : int 1610611412 1611403974 ...
# > $ fourchan_date : chr "1/14/21(Thu)3:03" ...
# > $ name : chr "Anonymous" ...
# > $ title : chr NA ...
# > $ referencing_comment: chr "1938909n" ...
# > $ comments : chr ">got murdered and/or raped in shitholes ove"| __truncated__ ...
# > $ poster_country : logi NA ...
# > $ nreplies : int NA 13 ...
# > $ formatted : logi FALSE ...
# > $ media_link : chr NA ...
Notez que la fonction search_4chan_snippet() imprime également le nombre total de résultats de recherche et le temps estimé pour les récupérer avec search_4chan(). Cette estimation est basée sur une limite API de 5 requêtes par minute.
Les utilisateurs uniquement intéressés par le nombre de résultats peuvent simplement les récupérer en changeant le paramètre result_type en « results_num ». Il est désormais possible de comparer le nombre de messages mentionnant Majorque entre différentes périodes. Par exemple, avant la pandémie et après la pandémie :
mallorca_pre <- search_4chan_snippet( boards = " trv " , start_date = " 2018-01-01 " , end_date = " 2019-12-31 " , text = " mallorca " , result_type = " results_num " )
mallorca_post <- search_4chan_snippet( boards = " trv " , start_date = " 2020-01-01 " , end_date = " 2021-12-31 " , text = " mallorca " , result_type = " results_num " )
data.frame ( " Years " = c( " 2018 & 2019 " , " 2020 & 2021 " ),
" Total results " = c( mallorca_pre [ " total_found " ], mallorca_post [ " total_found " ])
)
# > Years Total.results
# > 1 2018 & 2019 86
# > 2 2020 & 2021 99
Il semble que cette île ait été davantage mentionnée car les gens avaient tendance à rester chez eux.
Les chercheurs souhaitant collecter plus de données qu’un simple extrait de publication peuvent utiliser la fonction search_4chan(). En restant avec l’exemple des posts mentionnant Majorque au fil du temps, on pourrait être enclin à se demander si l’image de Majorque a changé pendant la pandémie. En plus d'obtenir simplement tous les articles mentionnant un terme de recherche, il est par exemple possible de filtrer les articles contenant des données d'image :
mallorca_pre_pics <- search_4chan( boards = " trv " , start_date = " 2018-01-01 " , end_date = " 2019-12-31 " , text = " mallorca " , show_only = " image " )
# > [1] "Approximate time: 0.33 minutes."
mallorca_post_pics <- search_4chan_snippet( boards = " trv " , start_date = " 2018-01-01 " , end_date = " 2019-12-31 " , text = " mallorca " , show_only = " image " )
# > The 1 - 16 oldest posts of the 16 total search results are shown.
# > Scraping all 16 results would take ~ 0.33 minutes.
head( mallorca_post_pics $ media_link )
# > [1] "http://i.4pcdn.org/trv/1521713616876.jpg"
# > [2] "http://i.4pcdn.org/trv/1525249686528.jpg"
# > [3] "http://i.4pcdn.org/trv/1527534752103.jpg"
# > [4] "http://i.4pcdn.org/trv/1527865867839.jpg"
# > [5] "http://i.4pcdn.org/trv/1533082869505.jpg"
# > [6] "http://i.4pcdn.org/trv/1547062117808.jpg"
La colonne media_link fournit les liens d'images téléchargeables des articles récupérés.
Si fouRplebsAPI est utile pour votre recherche, veuillez citer comme suit :
Buehling, K. (2022). fouRplebsAPI : package R pour accéder aux publications 4chan via l'API 4plebs.org (Version 0.9.0). https://doi.org/10.5281/zenodo.6637440