Пакет R fouRplebsAPI позволяет исследователям запрашивать базу данных 4chan, заархивированную на 4plebs.org. Эта база данных представляет собой крупнейший постоянный архив постоянно исчезающих постов на имиджборде 4chan. С помощью этого пакета исследователи могут использовать функции детального поиска, предлагаемые 4plebs, и получать структурированные данные сообщений на 4chan.
Пакет основан на документации API 4plebs.
Если fouRplebsAPI полезен для вашего исследования, укажите:
Бюлинг, К. (2022). fouRplebsAPI: пакет R для доступа к сообщениям 4chan через API 4plebs.org (версия 0.9.0). https://doi.org/10.5281/zenodo.6637440
Вы можете установить fouRplebsAPI с GitHub с помощью:
# install.packages("devtools")
devtools :: install_github( " buehlk/fouRplebsAPI " )
Доски 4chan, которые в настоящее время обслуживаются 4plebs:
Board.name | Аббревиатура |
---|---|
Политически некорректно | пол |
Высокое разрешение | час |
Традиционные игры | тг |
Телевидение и кино | телевизор |
Паранормальное явление | х |
Черт, 4chan говорит | s4s |
Авто | о |
Совет | реклама |
Путешествовать | трв |
Вспышка | ж |
Спорт | сп |
Моя маленькая политика | млпол |
Механика и Авто | мес. |
Хотя этот пакет включает в себя несколько функций, которые позволяют исследователям запрашивать и проверять определенные сообщения 4chan (get_4chan_post) или темы (get_4chan_thread), исследователи, желающие собрать данные из архива 4plebs, вероятно, будут заинтересованы в сборе большего объема данных.
Первый способ сбора данных — это сбор последних потоков на данной доске. Допустим, вас интересуют 20 последних тем с доски «Советы» (исключая комментарии, сопровождающие вступительное сообщение). Один из способов запроса данных:
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 ...
Описание вывода можно найти в документации к функциям. Теоретически с помощью этой функции можно было бы очистить обширные диапазоны архива, даже несмотря на то, что API имеет ограничение скорости API, которое замедляет процесс запроса.
Второй способ сбора данных 4chan с помощью этого пакета — это функция поиска. 4plebs позволяет осуществлять очень подробный поиск со множеством поисковых фильтров. Я покажу только простые примеры данных, которые можно собрать с помощью fouRplebsAPI.
Пример, который я показываю здесь, довольно веселый, потому что я хотел бы избежать более спорных тем, которыми славится 4chan, особенно доска /pol/. Исследователи, например те, кто интересуется политической коммуникацией акторов со спорными идеологиями, легко адаптируют этот пример. Но это про отпуск.
Найдем сообщение на доске «Путешествия», в котором обсуждается Майорка, Испания.
Во-первых, чтобы получить первое представление о результатах поиска, можно просмотреть фрагмент из 25 последних сообщений, содержащих поисковый запрос «майорка».
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 ...
Обратите внимание, что функция search_4chan_snippet() также выводит общее количество результатов поиска и примерное время их получения с помощью search_4chan(). Эта оценка основана на лимите API 5 запросов в минуту.
Пользователи, которых интересует только количество результатов, могут просто получить их, изменив параметр result_type на «results_num». Теперь можно сравнить количество постов с упоминанием Майорки в разные периоды времени. Например, до пандемии и после пандемии:
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
Кажется, этот остров упоминался чаще, поскольку люди предпочитали оставаться дома.
Исследователи, заинтересованные в сборе большего количества данных, чем просто фрагменты сообщений, могут использовать функцию search_4chan(). Возвращаясь к примеру публикаций, в которых упоминается Майорка с течением времени, можно задаться вопросом, изменился ли имидж Майорки во время пандемии. Помимо простого получения всех сообщений, в которых упоминается поисковый запрос, можно, например, отфильтровать сообщения, содержащие данные изображения:
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"
Столбец media_link содержит ссылки на загружаемые изображения полученных сообщений.
Если fouRplebsAPI полезен для вашего исследования, укажите:
Бюлинг, К. (2022). fouRplebsAPI: пакет R для доступа к сообщениям 4chan через API 4plebs.org (версия 0.9.0). https://doi.org/10.5281/zenodo.6637440