YouTube Go: The Best Way to Download and Watch Videos Offline
The first in this command line hit parade is youtube-dl. You can get access to it via its own site, on GitHub, or your favorite package manager. It should be noted that the GitHub repository was taken down for a while due to an allegation of DMCA violations, but GitHub later reinstated it. There's a very interesting story about GitHub's reasoning and response you can read.
download-an youtube go
Some folks claim that youtube-dl is old hat and hasn't been updated in a while. That's not really true. I just visited its repo and the header said youtube-dl was updated two weeks ago. It looks like it's getting ongoing maintenance. That said, there's another open source project on GitHub, called yt-dlp, that claims to be a fork of youtube-dl with more features. I haven't tested it, use it at your own risk.
Both youtube-dl and yt-dlp offer a very, very wide range of features if you need them. Personally, I'm going to stick with ClipGrab, because I don't have time to turn YouTube downloading into a second or third full time job. But, 'tis up to you.
Note that -o has a dual function in that it also sets a template for how your output files will be named, using variables. In this example, it will output the title of the original downloaded video followed by the file extension, which is my personal preference. For all of the variables that can be used in a filename, have a look at the youtube-dl documentation here.
youtube-dl also allows use of a configuration file - a file that can be used to configure the switches you most frequently use so the program can pull them from there instead, saving you from having to explicitly call them each time you run it. This is what you'll need for the default download location that you're looking for. The configuration file can be used to set a default output destination so that you never have to explicitly set an output again.
Place youtube-dl options in the file as you'd normally use them on the command line with youtube-dl, placing each one on a new line. For example, for the output switch, you'd use: -o %USERPROFILE%\Desktop. For more on the Configuration file, read the documentation on it here.
You can configure youtube-dl by placing any supported command line option to a configuration file. On Linux and macOS, the system wide configuration file is located at /etc/youtube-dl.conf and the user wide configuration file at /.config/youtube-dl/config. On Windows, the user wide configuration file locations are %APPDATA%\youtube-dl\config.txt or C:\Users\\youtube-dl.conf. Note that by default configuration file may not exist so you may need to create it yourself.
Final Message:Create the config file, put it in a folder (directory) that you wish to refer to it. Go to your youtube-dl.exe file and pass the "parameters" listed above to it using your CMD or a batch file. Done. (contribution, and being kind)
If the App Store doesn't offer you an older version of YouTube that is compatible with your aging iPad 2 (which is from early 2011), you are out of luck. You can use youtube.com with Safari or any other internet browser as an alternative.
6. If the video doesn't play, try downloading this youtube.lua file from VLC's GitHub page. On a PC, paste the new file into the folder located at C:\Program Files\VideoLAN\VLC\lua\playlist and replace any existing file with the same name. You can then try steps 1-5 again.
How to download and watch videos with YouTube Go
YouTube Go app for Android - free download and install
YouTube Go APK latest version - download for offline viewing
YouTube Go review - a data-saving app for watching videos
YouTube Go vs YouTube - which one is better for you?
Download YouTube Go for PC - Windows 10/8/7 and Mac
YouTube Go tips and tricks - how to get the most out of it
YouTube Go features - discover, download, and share videos
YouTube Go alternatives - other apps to watch videos offline
YouTube Go problems and solutions - how to fix common issues
How to use YouTube Go on smart TV - stream videos without data
YouTube Go for iOS - is it available and how to get it
How to update YouTube Go app - keep it running smoothly
How to delete YouTube Go videos - free up space on your device
How to transfer YouTube Go videos to another device - share with friends
How to change YouTube Go settings - customize your preferences
How to download YouTube Go videos in HD quality - enjoy high resolution
How to watch YouTube Go videos on a bigger screen - cast to Chromecast or Roku
How to download YouTube Go videos faster - speed up the process
How to download YouTube Go videos with subtitles - understand different languages
How to download YouTube Go videos in MP3 format - listen to music offline
How to download YouTube Go videos with VPN - access geo-restricted content
How to download YouTube Go videos without ads - avoid interruptions
How to download YouTube Go videos in background - multitask while downloading
How to download YouTube Go videos with SD card - save more videos on external storage
How to download YouTube Go videos from other apps - use third-party tools
How to download YouTube Go videos on laptop - use an emulator or a web browser
How to download YouTube Go videos on iPhone - use a file manager or a downloader app
How to download YouTube Go videos on iPad - same as iPhone or use a web browser extension
How to download YouTube Go videos on Kindle Fire - sideload the app or use a downloader app
How to download YouTube Go videos on Samsung Galaxy - same as Android or use Samsung Smart Switch
How to download YouTube Go videos on Huawei phone - same as Android or use Huawei AppGallery
How to download YouTube Go videos on LG phone - same as Android or use LG SmartWorld
How to download YouTube Go videos on Sony phone - same as Android or use Sony Xperia Transfer Mobile
How to download YouTube Go videos on Motorola phone - same as Android or use Motorola Migrate
How to download YouTube Go videos on Nokia phone - same as Android or use Nokia Suite
How to download YouTube Go videos on HTC phone - same as Android or use HTC Sync Manager
How to download YouTube Go videos on Xiaomi phone - same as Android or use Mi PC Suite
How to download YouTube Go videos on Oppo phone - same as Android or use Oppo PC Suite
How to download YouTube Go videos on Vivo phone - same as Android or use Vivo PC Suite
How to download YouTube Go videos on OnePlus phone - same as Android or use OnePlus Switch
How to download YouTube Go videos on Realme phone - same as Android or use Realme Link
How to download YouTube Go videos on Google Pixel phone - same as Android or use Google Drive Backup and Sync
How to download YouTube Go videos on Apple TV - use AirPlay or a downloader app
How to download YouTube Go videos on Fire TV Stick - use Downloader app or a web browser
How to download YouTube Go videos on Roku TV - use Screen Mirroring or a downloader app
How to download YouTube Go videos on Chromecast TV - use Google Home app or a web browser extension
How to download YouTube Go videos on Smart TV (LG, Samsung, Sony, etc.) - use Smart Share, Smart View, Screen Mirroring, etc. or a downloader app
Quick tip: If you have command line or Terminal experience and would prefer not to use one of the official tools, we recommend trying youtube-dl, a safer open-source alternative to third-party sites and software.
The code sample calls the jobs.list method to retrieve a list of reporting jobs. It then calls the reports.list method with the jobId parameter set to a specific job ID to retrieve reports created by that job. Finally, the sample prints out the download URL for each report. #!/usr/bin/python##### This script retrieves YouTube Reporting API reports. Use cases:# 1. If you specify a report URL, the script downloads that report.# 2. Otherwise, if you specify a job ID, the script retrieves a list of# available reports for that job and prompts you to select a report.# Then it retrieves that report as in case 1.# 3. Otherwise, the list retrieves a list of jobs for the user or,# if specified, the content owner that the user is acting on behalf of.# Then it prompts the user to select a job, and then executes case 2 and# then case 1.# Usage examples:# python retrieve_reports.py --content_owner_id= --local_file=# python retrieve_reports.py --content_owner_id= --job_id= --local_file=# python retrieve_reports.py --content_owner_id= --report_url= --local_file=####import argparseimport osimport google.oauth2.credentialsimport google_auth_oauthlib.flowfrom googleapiclient.discovery import buildfrom googleapiclient.errors import HttpErrorfrom googleapiclient.http import MediaIoBaseDownloadfrom google_auth_oauthlib.flow import InstalledAppFlowfrom io import FileIO# The CLIENT_SECRETS_FILE variable specifies the name of a file that contains# the OAuth 2.0 information for this application, including its client_id and# client_secret. You can acquire an OAuth 2.0 client ID and client secret from# the Google Cloud Console at# .# Please ensure that you have enabled the YouTube Data API for your project.# For more information about using OAuth2 to access the YouTube Data API, see:# For more information about the client_secrets.json file format, see:# -client-library/python/guide/aaa_client_secretsCLIENT_SECRETS_FILE = 'client_secret.json'# This OAuth 2.0 access scope allows for read access to YouTube Analytics# monetary reports for the authenticated user's account. Any request that# retrieves earnings or ad performance metrics must use this scope.SCOPES = [' -analytics-monetary.readonly']API_SERVICE_NAME = 'youtubereporting'API_VERSION = 'v1'# Authorize the request and store authorization credentials.def get_authenticated_service(): flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRETS_FILE, SCOPES) credentials = flow.run_console() return build(API_SERVICE_NAME, API_VERSION, credentials = credentials)# Remove keyword arguments that are not set.def remove_empty_kwargs(**kwargs): good_kwargs = if kwargs is not None: for key, value in kwargs.iteritems(): if value: good_kwargs[key] = value return good_kwargs# Call the YouTube Reporting API's jobs.list method to retrieve reporting jobs.def list_reporting_jobs(youtube_reporting, **kwargs): # Only include the onBehalfOfContentOwner keyword argument if the user # set a value for the --content_owner argument. kwargs = remove_empty_kwargs(**kwargs) # Retrieve the reporting jobs for the user (or content owner). results = youtube_reporting.jobs().list(**kwargs).execute() if 'jobs' in results and results['jobs']: jobs = results['jobs'] for job in jobs: print ('Reporting job id: %s\n name: %s\n for reporting type: %s\n' % (job['id'], job['name'], job['reportTypeId'])) else: print 'No jobs found' return False return True# Call the YouTube Reporting API's reports.list method to retrieve reports created by a job.def retrieve_reports(youtube_reporting, **kwargs): # Only include the onBehalfOfContentOwner keyword argument if the user # set a value for the --content_owner argument. kwargs = remove_empty_kwargs(**kwargs) # Retrieve available reports for the selected job. results = youtube_reporting.jobs().reports().list( **kwargs ).execute() if 'reports' in results and results['reports']: reports = results['reports'] for report in reports: print ('Report dates: %s to %s\n download URL: %s\n' % (report['startTime'], report['endTime'], report['downloadUrl']))# Call the YouTube Reporting API's media.download method to download the report.def download_report(youtube_reporting, report_url, local_file): request = youtube_reporting.media().download( resourceName=' ' ) request.uri = report_url fh = FileIO(local_file, mode='wb') # Stream/download the report in a single request. downloader = MediaIoBaseDownload(fh, request, chunksize=-1) done = False while done is False: status, done = downloader.next_chunk() if status: print 'Download %d%%.' % int(status.progress() * 100) print 'Download Complete!'# Prompt the user to select a job and return the specified ID.def get_job_id_from_user(): job_id = raw_input('Please enter the job id for the report retrieval: ') print ('You chose "%s" as the job Id for the report retrieval.' % job_id) return job_id# Prompt the user to select a report URL and return the specified URL.def get_report_url_from_user(): report_url = raw_input('Please enter the report URL to download: ') print ('You chose "%s" to download.' % report_url) return report_urlif __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--content_owner', default='', help='ID of content owner for which you are retrieving jobs and reports') parser.add_argument('--job_id', default=None, help='ID of the job for which you are retrieving reports. If not ' + 'provided AND report_url is also not provided, then the script ' + 'calls jobs.list() to retrieve a list of jobs.') parser.add_argument('--report_url', default=None, help='URL of the report to retrieve. If not specified, the script ' + 'calls reports.list() to retrieve a list of reports for the ' + 'selected job.') parser.add_argument('--local_file', default='yt_report.txt', help='The name of the local file where the downloaded report will be written.') args = parser.parse_args() youtube_reporting = get_authenticated_service() try: # If the user has not specified a job ID or report URL, retrieve a list # of available jobs and prompt the user to select one. if not args.job_id and not args.report_url: if list_reporting_jobs(youtube_reporting, onBehalfOfContentOwner=args.content_owner): args.job_id = get_job_id_from_user() # If the user has not specified a report URL, retrieve a list of reports # available for the specified job and prompt the user to select one. if args.job_id and not args.report_url: retrieve_reports(youtube_reporting, jobId=args.job_id, onBehalfOfContentOwner=args.content_owner) args.report_url = get_report_url_from_user() # Download the selected report. if args.report_url: download_report(youtube_reporting, args.report_url, args.local_file) except HttpError, e: print 'An HTTP error %d occurred:\n%s' % (e.resp.status, e.content)retrieve_reports.py Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.