Skip to contents

version 1.1.1

Bug Fixes and Improvements

This patch release addresses several critical bugs and improves documentation:

Critical Bug Fixes

  • PAGINATION: Fixed get_comment_threads() pagination bug where comments were duplicated instead of fetching unique results when max_results > 100 (issue #107)
  • PLAYLIST ITEMS: Fixed get_playlist_items() returning only metadata instead of actual video items (issue #95)
  • CHANNEL VIDEOS: Fixed list_channel_videos() returning only pageInfo instead of video details (issue #88)
  • AUTO-GENERATED CHANNELS: Improved error handling for YouTube auto-generated channels (music topics, etc.) with helpful guidance to use yt_search() instead (issue #118)

Documentation Improvements

  • VIDEO DETAILS: Added comprehensive examples for extracting specific fields from get_video_details() including Shiny application usage (issue #87)
  • UNLISTED VIDEOS: Documented OAuth authentication requirement for accessing unlisted video statistics (issue #80)
  • API REFERENCE: Fixed incorrect API documentation URL in get_playlist_items()

Under the Hood

  • Standardized pagination patterns across all functions following yt_search.R approach
  • Improved error handling with better user guidance
  • Enhanced deduplication logic in comment retrieval functions
  • Added safety breaks for API pagination edge cases

version 1.1.0

CRAN release: 2025-08-25

Major Bug Fixes and Performance Improvements

This release fixes critical issues that were causing the package to be unreliable for production use:

Critical Fixes

  • BREAKING BUG: Fixed OAuth token caching - authentication was completely broken (issues #135, #107, #64)
  • PERFORMANCE: Fixed O(n²) pagination in get_all_comments() - now scales linearly (issues #62, #111, #115)
  • RELIABILITY: Fixed username lookup failures in list_channel_resources() with retry logic (issue #73)
  • ERROR HANDLING: Added proper validation for videos with disabled/no comments (issue #115)

High-Priority Improvements

  • QUOTA MANAGEMENT: New comprehensive quota tracking system (issue #116)
  • PERFORMANCE: Optimized yt_search() to stop fetching when max_results reached (issues #66, #77)
  • BATCH API CALLS: Rewrote get_all_channel_video_stats() to use batch requests (50x fewer API calls)
  • CHANNEL ID LOGIC: Complete rewrite of channel ID handling (issues #95, #122)
    • Proper validation for UC/UU channel IDs
    • API-based fallback for brand channels and custom URLs
    • Clear error messages for unsupported channel types
  • UNICODE HANDLING: Standardized UTF-8 processing across all functions (issue #80)
  • ERROR HANDLING: Improved contentDetails processing with proper null checks (issue #79)

New Features

  • Added comprehensive quota management system
  • Added retry logic with exponential backoff for intermittent API failures
  • Added progress indicators for long-running operations
  • Added detailed error messages explaining common failure scenarios

Performance Improvements

version 1.0.1

CRAN release: 2025-04-01

  • Fixed the cross-ref checks

version 0.9.9.9000 (development version)

  • Added support for API key authentication with two new exported functions, yt_get_key() and yt_set_key(), and a new auth argument to the internal function tuber_GET(). Users can now pass auth = "key" to any function that uses tuber_GET() to enable API key authentication. The behavior of tuber_GET() remains unchanged when using the new default, auth = "token", which avoids breaking changes to previously written code (@gvelasq, #117).

version 0.9.8

CRAN release: 2019-06-26

  • allows for caption uploading
  • list_my_videos
  • list_captions

version 0.9.6

  • default of mine changed to NULL from FALSE thank to advice from Miguel Arribas

version 0.9.5

CRAN release: 2018-03-01

  • add some other util functions for getting details on all videos from a channel
  • mine = TRUE

version 0.9.4

CRAN release: 2018-02-13

  • fix bug(s) in get_all_comments

version 0.9.3

CRAN release: 2018-02-03

  • A new vignette for tuber that shows how to deal with emojis in tuber
  • A new function for fetching all the comments, including replies. Also fixes #43
  • Added the missing partner scope fixing #41.
  • New pkgdown documentation released with functions organized by purpose.
  • get_related_videos returns related video id in addition to other cols.

version 0.9.2

CRAN release: 2017-11-19

  • fixes list_channel_videos. it used to iterate over all the playlists. You don’t need to do that. All the uploaded videos of a channel are available in a playlist with the same id as channel id except the first two letters are switched.

  • fixes get_playlist_items. thanks to @TebanSierra. See #39.

version 0.9.1

CRAN release: 2017-09-20

  • get_video_detail doesn’t hardcode part = ‘snippet’.
  • get_playlists was trying to do argument matching w/ part which can be a comma separated list. So obviously it failed big time. Fixed now.

version 0.9.0

CRAN release: 2017-05-28

  • Extensive linting. Passes expect_lint_free
  • Removed support for caption tracks from old Youtube API as client should only be for V3. Changed the get_captions API.
  • support the deletes
  • translate_filter in get_comment_threads also supports pagetoken, which it didn’t.
  • removes cats (prints) from get_stats based on user feedback
  • list_channel_videos now supports getting all the videos from the playlists
  • get_playlist_items supports simplify, defaults to simplify, and also allows getting all the videos from the playlist easily.
  • get_comment_threads allows getting all the comment_threads

version 0.8.0

CRAN release: 2017-04-11

  • get_all — iterate through the results and get all supported for various functions. supported for yt_search(). prints removed from yt_search()
  • yt_search() for returns a data.frame with video_id when simplify is TRUE
  • When a resource with a particular ID is not found, the functions now issue a warning() rather than ‘cat’ out the problem.

version 0.7.0

CRAN release: 2016-11-21

  • No more invisible return
  • Rather than is.null checks, !is.character checks for args expected to be chars
  • using ldly for more robust rbind of data.frames
  • Specific functions:
    • get_playlists now supports simplify — allows for data.frame return
    • More consistent return for get_related_videos() — df with same cols. even if no results.
    • list_guidecats() and list_videocats() now return region_code as part of the returned data.frame
    • return when simplify is TRUE for yt_search() now gives a data.frame with 15 columns
    • nicer return and documentation for list_channel_activities()
    • better documentation for get_playlists()
    • fixed a bug in list_abuse_report_reasons() for part as snippet

version 0.6.0

CRAN release: 2016-11-11

  • Based on CRAN feedback, add comment about yt_outh to all man pages
  • video_id is returned as part of the list for get_stats, get_video_details
  • handles errors stemming from bad video id for get_stats, get_video_details
  • fixed bug in get_comment that delivers separate results for diff. filters, error handling for bad comment_id, and now comment_id returned as part of df
  • better returns when simplify is TRUE for get_related_videos, get_comment_threads
  • list_caption_tracks function added. updated get_captions to only return caption related to a particular caption_id or video_id

version 0.5.0

  • Added contributor code of conduct
  • yt_search takes a new argument simplify which if TRUE returns a dataframe with 7 elements. Otherwise it returns a list with all the information.

version 0.4.0 2016-10-04

CRAN release: 2016-10-04

  • Filtering by different facets is now supported. This is via passing a named vector.
  • Added a function to list_channel_videos
  • Added a function to get comment threads
  • Added to the vignette an example of how to get stats of all videos of a channel.

version 0.3.0 2016-08-04

CRAN release: 2016-08-04

  • Replaces list_channel_videos with list_channel_resources. Returns a list.
  • Supports and documents all optional params except onBehalfOfContentOwner, for list_guidecats, list_channel_activities, get_captions, list_channel_sections, get_comments, list_langs, list_regions
  • Adds get_playlists, get_playlist_items, get_subscriptions, get_videos
  • Renames get_channel with get_channel_stats
  • Standardize argument naming to snake_case

version 0.2.1 2016-06-20

CRAN release: 2016-06-20

  • Support the dots — allow for passing of extra arguments to httr GET and POST
  • More tests
  • Added list channel activities and list channel sections
  • Get details uses the abstract infrastructure
  • yt_oauth takes path to token file. removing file no longer supported

version 0.2.0 2016-01-16

  • Deprecated Freebase Topic Search
  • Supports many more functions of the API. For instance, list_langs, list_guidecats, list_videocats, list_regions
  • Supports more arguments for many of the functions. For instance, comments now supports maxResults, textFormat etc.
  • Return defaulted to a data.frame in many of the functions