## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = FALSE ) ## ----setup-------------------------------------------------------------------- # library(tubern) # # # First-time setup - shows setup guide # yt_oauth() # # # Or with your credentials # yt_oauth("your-client-id.apps.googleusercontent.com", "your-client-secret") ## ----dates-------------------------------------------------------------------- # # Get common date range options # get_common_date_ranges() # # # Use relative dates in reports # report <- get_report( # ids = "channel==MINE", # metrics = "views,likes", # start_date = "last_30_days" # End date calculated automatically # ) # # # More examples # get_report(ids = "channel==MINE", metrics = "views", start_date = "this_month") # get_report(ids = "channel==MINE", metrics = "views", start_date = "last_quarter") # get_report(ids = "channel==MINE", metrics = "views", start_date = "yesterday") ## ----channel_overview--------------------------------------------------------- # # Get comprehensive channel performance # overview <- get_channel_overview("last_30_days") # # # Customize what metrics to include # overview <- get_channel_overview( # "this_month", # include_engagement = TRUE, # include_subscribers = TRUE # ) ## ----top_videos--------------------------------------------------------------- # # Get top 10 videos by views # top_videos <- get_top_videos("last_7_days") # # # Get more videos with custom metrics # top_videos <- get_top_videos( # "last_30_days", # max_results = 25, # metrics = c("views", "likes", "comments", "shares", "estimatedMinutesWatched") # ) ## ----demographics------------------------------------------------------------- # # Full demographic breakdown # demographics <- get_audience_demographics("last_90_days") # # # Age groups only # age_data <- get_audience_demographics("this_month", dimension = "ageGroup") # # # Gender breakdown only # gender_data <- get_audience_demographics("this_quarter", dimension = "gender") ## ----geographic--------------------------------------------------------------- # # Top countries by views # geo_performance <- get_geographic_performance("last_30_days") # # # US states/provinces (requires filtering to US) # us_states <- get_geographic_performance( # "this_month", # dimension = "province", # filters = "country==US" # ) ## ----devices------------------------------------------------------------------ # # Performance by device type - use get_report directly # device_performance <- get_report( # ids = "channel==MINE", # metrics = "views,estimatedMinutesWatched", # dimensions = "deviceType", # start_date = "last_30_days" # ) # # # Operating system breakdown # os_performance <- get_report( # ids = "channel==MINE", # metrics = "views,estimatedMinutesWatched", # dimensions = "operatingSystem", # start_date = "this_month" # ) # # # Both device and OS # device_os <- get_report( # ids = "channel==MINE", # metrics = "views,estimatedMinutesWatched", # dimensions = "deviceType,operatingSystem", # start_date = "last_7_days" # ) ## ----daily-------------------------------------------------------------------- # # Daily performance trends # daily_data <- get_daily_performance("last_30_days") # # # With engagement metrics # daily_engagement <- get_daily_performance( # "this_month", # metrics = c("views", "likes", "comments", "shares") # ) ## ----revenue------------------------------------------------------------------ # # Set up OAuth with monetary scope first # yt_oauth("your-client-id", "your-client-secret", scope = "monetary") # # # Get revenue data # revenue <- get_revenue_report("last_month") # # # Revenue in different currency # revenue_eur <- get_revenue_report("this_quarter", currency = "EUR") ## ----validation--------------------------------------------------------------- # # Invalid metrics get helpful suggestions # # get_report(ids = "channel==MINE", metrics = "vews", start_date = "last_7_days") # # Error: Invalid metric(s): vews # # Did you mean: 'vews' -> 'views' # # # Check available metrics and dimensions # get_available_metrics() # get_available_metrics("view") # Filter by pattern # # get_available_dimensions() # get_available_dimensions("country|city") # Geographic dimensions ## ----dataframes--------------------------------------------------------------- # # Get data and convert to clean data.frame # report <- get_daily_performance("last_30_days") # df <- yt_to_dataframe(report) # head(df) # # # Convert to tibble (if tibble package installed) # tbl <- yt_to_tibble(report) # # # Keep original column names # df_orig <- yt_to_dataframe(report, clean_names = FALSE) ## ----export------------------------------------------------------------------- # # Export to CSV # report <- get_top_videos("last_7_days") # file_path <- yt_export_csv(report, "top_videos.csv") # # # Auto-generated filename with timestamp # file_path <- yt_export_csv(report) ## ----plots-------------------------------------------------------------------- # # Automatic plot creation (requires ggplot2) # daily_report <- get_daily_performance("last_30_days") # yt_quick_plot(daily_report) # Line plot over time # # # Bar chart for top videos # top_videos <- get_top_videos("last_7_days") # yt_quick_plot(top_videos, chart_type = "bar") # # # Custom x and y columns # geo_data <- get_geographic_performance("last_30_days") # yt_quick_plot(geo_data, x_col = "country", y_col = "views") ## ----summary------------------------------------------------------------------ # # Get summary statistics # report <- get_channel_overview("last_30_days") # summary <- yt_extract_summary(report) # print(summary) ## ----diagnostics-------------------------------------------------------------- # # Check if everything is set up correctly # diagnose_tubern() # # # Check API quota status # check_api_quota() ## ----errors------------------------------------------------------------------- # # tubern now provides helpful error messages and suggestions # # for authentication, API quota, parameter errors, etc. # # # Example: If OAuth token expires, tubern will suggest running yt_oauth() again # # Example: If API quota is exceeded, tubern will suggest ways to reduce usage ## ----workflow1---------------------------------------------------------------- # # Set up authentication # yt_oauth("your-client-id", "your-client-secret") # # # Get overview data # overview <- get_channel_overview("last_30_days") # overview_df <- yt_to_dataframe(overview) # # # Get daily trends # daily <- get_daily_performance("last_30_days") # daily_df <- yt_to_dataframe(daily) # # # Get top videos # top_videos <- get_top_videos("last_30_days", max_results = 10) # videos_df <- yt_to_dataframe(top_videos) # # # Get geographic performance # geo <- get_geographic_performance("last_30_days") # geo_df <- yt_to_dataframe(geo) # # # Create visualizations # yt_quick_plot(daily) # Daily trend # yt_quick_plot(top_videos) # Top videos # yt_quick_plot(geo) # Geographic performance # # # Export data # yt_export_csv(overview, "channel_overview.csv") # yt_export_csv(daily, "daily_performance.csv") # yt_export_csv(top_videos, "top_videos.csv") ## ----workflow2---------------------------------------------------------------- # # Demographic analysis # demographics <- get_audience_demographics("last_90_days") # demo_df <- yt_to_dataframe(demographics) # # # Device analysis # devices <- get_report( # ids = "channel==MINE", # metrics = "views,estimatedMinutesWatched", # dimensions = "deviceType", # start_date = "last_90_days" # ) # device_df <- yt_to_dataframe(devices) # # # Geographic analysis # geography <- get_geographic_performance("last_90_days", max_results = 50) # geo_df <- yt_to_dataframe(geography) # # # Combined analysis with dplyr (if available) # if (require(dplyr)) { # # Top countries by watch time # top_countries <- geo_df %>% # arrange(desc(estimated_minutes_watched)) %>% # head(10) # # print(top_countries) # } ## ----workflow3---------------------------------------------------------------- # # Analyze video performance over time # videos_monthly <- get_top_videos("this_month", max_results = 50) # videos_df <- yt_to_dataframe(videos_monthly) # # # Compare with previous month # videos_prev <- get_top_videos("last_month", max_results = 50) # videos_prev_df <- yt_to_dataframe(videos_prev) # # # Daily performance for trend analysis # daily_trends <- get_daily_performance( # "last_30_days", # metrics = c("views", "estimatedMinutesWatched", "likes", "comments") # ) # trends_df <- yt_to_dataframe(daily_trends) # # # Visualize trends # yt_quick_plot(daily_trends, x_col = "day", y_col = "views") ## ----------------------------------------------------------------------------- # # Run diagnostics # diagnose_tubern() # # # Re-authenticate # yt_oauth("your-client-id", "your-client-secret") ## ----------------------------------------------------------------------------- # # Check quota status # check_api_quota() # # # Reduce data scope # get_report(ids = "channel==MINE", metrics = "views", # start_date = "yesterday", max_results = 10) ## ----------------------------------------------------------------------------- # # Check available options # get_available_metrics() # get_available_dimensions() # # # Use helper functions for validation # get_channel_overview("last_7_days") # Pre-validated parameters