
Downloading Channel Media
download-media.RmdIntroduction
This vignette shows how to download media (photos/videos/documents)
from a Telegram channel using download_channel_media().
Offline Demo (No Telegram Connection)
To keep this vignette fully reproducible, the output below is
generated from a small bundled sample dataset. The commands shown are
real; if you have credentials and a live session, you can run them by
setting eval=TRUE in your environment.
Setup and Authentication
library(telegramR)
library(dplyr)
# Replace these with your own API ID and Hash
api_id <- 123456
api_hash <- "0123456789abcdef0123456789abcdef"
client <- TelegramClient$new("my_session", api_id, api_hash)
client$start()Download Media
# Download media into ./downloads
media <- download_channel_media(
client,
"telegram",
limit = 200,
media_types = c("photo", "video"),
start_date = "2025-01-01",
end_date = "2025-02-01",
out_dir = "downloads"
)
# Inspect results
media
#> # A tibble: 2 × 9
#> message_id channel_id channel_username channel_title date
#> <dbl> <dbl> <chr> <chr> <dttm>
#> 1 28508 1149277960 ShrikeNews Шрайк Ньюс 2026-03-06 11:22:24
#> 2 28495 1149277960 ShrikeNews Шрайк Ньюс 2026-03-06 08:48:16
#> # ℹ 4 more variables: media_type <chr>, file_path <chr>,
#> # original_filename <chr>, error <chr>
photo_path <- media %>%
filter(media_type == "photo") %>%
slice(1) %>%
pull(file_path)
pkg_path <- paste0("../", photo_path)
knitr::include_graphics(pkg_path)
Common Columns
The result is a tibble with one row per downloaded media item. Typical columns include:
-
message_id,channel_id,channel_username,channel_title -
date,text,media_type -
file_path,error
Tips
- Use
start_date/end_dateto restrict the window and speed up downloads. - Use
media_typesto select only photos or only videos. - If you hit rate limits, add a small
wait_time(e.g.,wait_time = 1). - Some channels send photos as documents (
image/*).download_channel_media()treatsimageas a photo-type alias whenphotois requested.