Skip to content

youssefadly237/yt-comment-dl

 
 

Repository files navigation

yt-comment-dl

Simple script for downloading YouTube comments without using the YouTube API. The output is in JSON format.

Note: This project follows a different philosophy from the original.

  • The original (youtube-comment-downloader) is intentionally minimal and will be fixed if it breaks.
  • This fork (yt-comment-dl) focuses on maintainability, and modern tooling, while preserving the same core functionality.

Installation

Preferably inside and python virtual environment install this package via:

pip install yt-comment-dl

Or directly from the GitHub repository:

pip install git+https://github.com/youssefadly237/yt-comment-dl.git

Usage as command-line interface

$ yt-comment-dl --help
usage: yt-comment-dl [-h] [--output OUTPUT] [--pretty] [--limit LIMIT]
[--language LANGUAGE] [--sort {0,1}] url

Download YouTube comments without using the YouTube API

positional arguments:
  url                                    YouTube video URL or video ID

options:
  -h, --help                             Show this help message and exit
  --output OUTPUT, -o OUTPUT             Output filename (default: comments_<video_id>.json)
  --pretty, -p                           Pretty-print JSON output
  --limit LIMIT, -l LIMIT                Maximum number of comments to download
  --language LANGUAGE, -a LANGUAGE       YouTube generated text language (en)
  --sort {0,1}, -s {0,1}                 Sort by: 0=popular, 1=recent (default: 1)

Examples

Download comments using a YouTube URL:

yt-comment-dl "https://www.youtube.com/watch?v=ScMzIvxBSi4" --output ScMzIvxBSi4.json

Download comments using just the video ID:

yt-comment-dl ScMzIvxBSi4 --output ScMzIvxBSi4.json

Download the 50 most popular comments with pretty formatting:

yt-comment-dl ScMzIvxBSi4 --sort 0 --limit 50 --pretty

For YouTube IDs starting with - (dash), you may need to use quotes:

yt-comment-dl "-idwithdash"

Usage as library

You can also use this script as a library. For instance, if you want to print out the 10 most popular comments for a particular YouTube video you can do the following:

from itertools import islice
from yt_comment_dl import YoutubeCommentDownloader

downloader = YoutubeCommentDownloader()
comments = downloader.get_comments('ScMzIvxBSi4', sort_by=0)  # 0 = popular
for comment in islice(comments, 10):
    print(comment.to_dict())

Output format

The output is a JSON array containing comment objects. Each comment has the following structure:

[
  {
    "cid": "comment_id",
    "text": "Comment text",
    "time": "2 hours ago",
    "author": "Author Name",
    "channel": "author_channel_id",
    "votes": 42,
    "photo": "author_profile_photo_url",
    "heart": false,
    "reply": false,
    "time_parsed": 1234567890
  }
]

License

MIT License - see LICENSE file for details

About

Simple script for downloading Youtube comments without using the Youtube API

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages

  • Python 100.0%