Extindeți-vă rețeaua Bluesky cu R (repost)

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

(Acest articol a fost publicat pentru prima dată pe Terminarea geneticiiși cu amabilitate a contribuit la R-bloggeri). (Puteți raporta problema legată de conținutul acestei pagini aici)


Doriți să vă distribuiți conținutul pe R-bloggeri? dați clic aici dacă aveți un blog, sau aici dacă nu aveți.

Acesta este repostat din original la https://blog.stephenturner.us/p/expand-your-bluesky-network-with-r.

Îi încurajez pe toți cei pe care îi cunosc online să se alăture comunității științifice pe Bluesky.

Bluesky pentru Știință

În acea postare, fac link la mai multe pachete de început — liste de conturi care postează despre un subiect pe care îl puteți urmări individual sau pe toate odată pentru a începe să vă completați rețeaua.

Am început să urmăresc relatări ale unor oameni pe care îi cunoșteam de la X și din câteva pachete de început pe care le-am întâlnit. O modalitate de a vă extinde rețeaua este să luați toate conturile pe care le urmăriți, să vedeți pe cine ei urmăresc dar tu nu. Puteți clasa această listă în descreștere după numărul de urmăritori care le urmăresc și să utilizați acea listă ca o modalitate de a vă completa rețeaua.

Codul de mai jos face acest lucru. Mai întâi se va autentifica cu o parolă pentru aplicație. Apoi preia toate conturile pe care le urmăriți. Apoi, primește cine toți aceste urmăresc conturile și elimină conturile pe care le urmăriți deja.

library(dplyr)
library(atrrr)

# Authenticate first (switch out with your username)
bsky_username <- "youraccount.bsky.social"

# If you already have an app password:
bsky_app_pw <- "change-me-change-me-123"
auth(user=bsky_username, password=bsky_app_pw)

# Or be guided through the process
auth()

# Get the people you follow
f <- get_follows(actor=bsky_username, limit=Inf)

# Get just their handles
fh <- f$actor_handle

# Get who your follows are following
ff <-
  fh |>
  lapply(get_follows, limit=Inf) |>
  setNames(fh)

# Make it a data frame
ffdf <- bind_rows(ff, .id="follow")

# Get counts, removing ppl you already follow
ffcounts <-
  ffdf |>
  count(actor_handle, sort=TRUE) |>
  anti_join(f, by="actor_handle") |>
  filter(actor_handle!="handle.invalid")

# Join back to account info, add URL
ffcounts <-
  ffdf |>
  distinct(actor_handle, actor_name) |>
  inner_join(x=ffcounts, y=_, by="actor_handle") |>
  mutate(url=paste0("https://bsky.app/profile/",
                    actor_handle))

Aceasta returnează un cadru de date cu toate conturile urmărite de persoanele pe care le urmăriți, dar pe care nu le urmăriți deja, în descreștere cu numărul de conturi pe care le urmăriți și care le urmăresc (bucătură chiar acolo).

Opțional, dar puteți face acest lucru mai frumos folosind gt pachet pentru a face un tabel frumos cu un link pe care se poate face clic.

# Optional, clean up and create a nice table
library(gt)
library(glue)
top <- 20L
ffcounts |>
  head(top) |>
  rename(Handle=actor_handle, N=n, Name=actor_name) |>
  mutate(Handle=glue("({Handle})({url})")) |>
  mutate(Handle=lapply(Handle, gt::md)) |>
  select(-url) |>
  gt() |>
  tab_header(
    title=md(glue("**My top {top} follows' follows**")),
    subtitle="Collected November 19, 2024") |>
  tab_style(
    style="font-weight:bold",
    locations=cells_column_labels()
  ) |>
  cols_align(align="left") |>
  opt_row_striping(row_striping = TRUE)

Nu pot încorpora un fișier HTML aici, dar iată cum arată acea ieșire. Puteți face clic pe oricare dintre nume și puteți urmări contul dacă vi se pare util.

Poate faceți acest lucru în mod iterativ – adăugați urmările de top, apoi reluați procesul de câteva ori pentru a descoperi eventual conexiuni necunoscute de gradul doi.

Codul de aici reproduce în esență ce @theo.iolui Analizor de rețea Bluesky se desfășoară, dar toate la nivel local folosesc R. Aplicația web este mai rapidă și mai ușor de utilizat și efectuează memorarea în cache și o limitare inteligentă pentru a evita limitele ratei API. Consultați nota de subsol pentru mai multe.

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.