Contributing

Developer Guide

The following section outlines the basic procedure for people who want to assist in development.

Add features, fix bugs or write documentation

  1. Fork this repository.

  2. Clone the forked repository with:

    $ git clone git@github.com:YOUR_GITHUB_USERNAME/chat-downloader.git
    
  3. Start a new branch with:

    $ cd chat-downloader
    $ git checkout -b name
    
  4. Set up your environment by installing the developer dependencies:

    $ pip install -e .[dev]
    
  5. Make changes. See below for common changes to be made.

  6. Test your changes with pytest:

    Depending on the changes made, run the appropriate tests to ensure everything still works as intended.

    1. To run all tests:

      $ pytest -v
      
    2. To run tests for all sites:

      $ pytest -v tests/test_chat_downloader.py::TestChatDownloader
      
    3. To run the tests for a specific site:

      $ pytest -v tests/test_chat_downloader.py::TestChatDownloader::test_YourChatDownloader_TestNumber
      

      e.g.

      $ pytest -v tests/test_chat_downloader.py::TestChatDownloader::test_YouTubeChatDownloader_1
      
  7. Make sure your code follows our coding conventions and check the code with flake8:

    $ flake8 path/to/code/to/check.py
    

    While we encourage users to follow flake8 conventions, some warnings are not very important and can be ignored, e.g:

    $ flake8 path/to/code/to/check.py --ignore E501,W503,W504
    
  8. When the tests pass, add the new files and commit them and push the result, like this:

    $ git add path/to/code.py
    $ git commit -m 'message'
    $ git push origin name
    
  9. Finally, create a pull request. We’ll then review and merge it.

Starting templates

When adding new features, we encourage developers to use these templates as starting points. This helps ensure consistency across the codebase.

New site

Coming soon

Testing

If you are unable to write code but still wish to assist, we encourage users to run commands with the --testing flag included. This will print debugging messages and pause once something unexpected happens (e.g. when an unknown item is being parsed). If something happens, please raise an issue and we will fix it or add support for it as soon as possible! For example:

$ chat_downloader https://www.youtube.com/watch?v=5qap5aO4i9A --testing

Some extractors use undocumented endpoints and as a result, users may encounter items which will not be parsed correctly. Increased testing will help find these items and ultimately improve functionality of the software for other users. Note that this will not affect any output you write to files (using --output).