Skip to content

Releases: Killian42/QTube

v1.10.0 - Non-subscribed channels support

02 Mar 21:26
Compare
Choose a tag to compare

Non-subscribed channels support

This release adds support for non-subscribed YT channels (Issue #3). Extra channels can now be checked for new videos using the include_extra_channels and the extra_channel_handles parameters. This is implemented similarly to how caption filtering has been implemented in v1.8.0.

include_extra_channels: Triggers the check for extra channels. If set to True, the channels listed in the following parameter will be taken into account in the rest of the program, even if you're not subscribed to them.
extra_channel_handles: Additional YT channels to check. Channels are identified by their handle. Videos from these channels will be processed in the same way as videos from channels you're subscribed to.

Like in v1.8.0, extra_channel_handles is an optional parameter, but the program won't start if it is not defined and include_extra_channels is set to True at the same time.

The example section of the ReadMe for this project has also been improved with more examples.

v1.9.0 - Greater title filtering flexibility

09 Feb 19:56
Compare
Choose a tag to compare

Greater title filtering flexibility

This release introduces 3 new parameters: ignore_title_emojis, ignore_title_punctuation and ignore_title_case. These parameters affect how the original title filtering parameters (i.e., required_in_title and banned_in_title) work. To understand how they are used, let's consider the hypothetical case of a video called Gardening DIY: 🪴Tips for Growing Your Own Vegetables and Herbs with required_in_title set to ["DIY","Tips"] and banned_in_title set to ["gardening"].

-ignore_title_emojis: Determines whether emojis are ignored in video titles when checking with the required_in_title and banned_in_title lists. If set to False (default), the video will not be added because of the plant emoji next to the word Tips. If set to True, the emoji would be ignored and the video would be added to the playlist.

-ignore_title_punctuation: Determines whether punctuation is ignored in video titles when checking with the required_in_title and banned_in_title lists. If set to False (default), the video will not be added because of the colon character next to the word DIY. If set to True, the colon would be ignored and the video would be added to the playlist. All of these symbols are considered punctuation "#$%&'()*+,-./:;<=>?@[\]^_`{|}~.

-ignore_title_case: Determines whether case is ignored in video titles when checking with the required_in_title and banned_in_title lists. If set to False (default), the video will be added because gardening is not capitalized in the banned list, contrary to the title. If set to True, this would not matter and the video would be added to the playlist.

v1.8.0 - Caption filtering

03 Feb 20:08
Compare
Choose a tag to compare

Caption filtering

Videos can now be filtered out based on their captions (Issue #12). This feature uses two parameters: require_captions and caption_options. ⚠️ If you used QTube before this release, you need to recreate your credentials by deleting the token.pickle file ⚠️. This is necessary because another scope (https://www.googleapis.com/auth/youtube.force-ssl) has been added to enable caption filtering. Retrieving captions for a video costs 50 quota units, which can become quite expensive, so watch your quota usage.

-require_captions: Triggers caption filtering. For a given video, if none of its captions match with the values of the following parameter, this video will not be added.
-caption_options: Captions properties to check. Supported properties are: trackKind, languages, audioTrackType, isCC, isLarge, isEasyReader, isAutoSynced and status. See the Youtube captions docs for what their values can be. Except for languages, default values for these parameters should work for the majority of users.

caption_options is an optional parameter, but the program won't start if it is not defined and require_captions is set to True at the same time.

Side note: Further optimizations have been made to reduce the number of API calls and typos have been fixed as well.

v1.7.1 - Projection filtering

19 Dec 19:44
Compare
Choose a tag to compare

Projection filtering

Shortly after releasing v1.7.0, I noticed that I missed a video property regarding their projection in the YT API documentation. This is corrected in this release with in the introduction of the preferred_projections parameter. This parameter filters out videos based on their projection, i.e., if it is rectangular (regular videos) or 360 (best enjoyed with a VR headset).

v1.7.0 - Video Quality filtering

15 Dec 22:57
Compare
Choose a tag to compare

Video Quality filtering

Videos can now be filtered out based on their quality (Issue #11). This feature uses 4 new parameters: lowest_resolution, lowest_framerate, lowest_definition and preferred_dimensions.
The first two rely on another package (pytube) and can take quite some time (30s on average for 5 videos on my machine) to run compared to "native" parameters. I would use them only if they are absolutely necessary for your needs (that's why they are set to null in the template).
The last two rely directly on the YT API like previous parameters.

-lowest_resolution: Lowest resolution you consider acceptable. For example, if set to 1080p, videos 720p or lower will not be added to your playlist.
-lowest_framerate: Lowest framerate you consider acceptable. For example, if set to 60, 30fps videos will not be added to your playlist.
-lowest_definition: Lowest definition you consider acceptable. For example, if set to HD, SD videos will not be added to your playlist. Setting this parameter to HD does the same thing as setting lowest_resolution to 720p, but is much faster to run.
-preferred_dimensions: 2D videos are regular videos and 3D videos are videos using anaglyph 3D (red-cyan videos). This parameter currently cannot search for 360° videos.

Side note: The names of the parameters used for title filtering have been changed to be more consistent with the other parameters.

v1.6.0 - Upload date filtering

02 Dec 09:23
Compare
Choose a tag to compare

Upload date filtering

Videos can now be filtered out based on the day they were uploaded to YouTube (Issue #6). This new functionality uses the run_frequency parameter, which handles two types of input: a selection of strings or any positive integer.
The string can be any of the following:

  • daily (keeps only videos from the previous day)
  • weekly (keeps only videos from the last 7 days)
  • monthly (keeps only videos from the last 30 days)

The integer is interpreted as the cutoff number of days that the software considers (i.e., using 7 would give the same result as using weekly).

Important note: For now, only the day is relevant, and not the full upload time with hours and minutes. This means that a day here is not a rolling 24-hour period. Let's say that the software runs at 8pm on April 1st with the run_frequency=daily parameter. In this case, only videos uploaded between March 31st 0am and March 31st 12pm would be taken into account, and not videos uploaded between March 31st 8pm and April 1st 8pm.

v1.5.1 - Description and tags filtering

17 Nov 20:13
Compare
Choose a tag to compare

Description and tags filtering

Videos can now be filtered out based on the content of their description (Issue #8) and of their associated tags (Issue #9). Both of these work the same way as video title filtering: two lists of strings define what is required and banned for each.
See the ReadMe for more information.

The release also includes a revamped ReadMe, with a better looking design and additional sections containing new information.

v1.4.0 - Duplicates checking and language filtering

05 Nov 11:36
Compare
Choose a tag to compare

Duplicates checking and language filtering

Prior to adding the videos to the playlist, the software now performs a duplicate check (i.e., checks if the video is already in the playlist or not) depending on the values of the keep_duplicates parameter (Issue #7). This prevents the same video from appearing multiple times in a playlist, for example if it was added manually before the software runs.

Videos can now be filtered out based on their language (Issue #5). Languages are specified by their ISO 639-1 codes (see this wikipedia page) in the preferred_languages parameter. The language of the video is determined first by the audio language (if provided) and then by the title language (if provided). If neither is provided, the video language is marked as unknown. Videos with an unknown language are not filtered out, unless they break any of the other rules.
In the future, a way to algorithmically recover the language of the title may be implemented to circumvent the issue of videos with unknown languages.

v1.3.0 - Video Duration Filtering

19 Oct 19:25
Compare
Choose a tag to compare

Video Duration Filtering

Videos can now be filtered out based on their duration!
To do so, use the allowed_durations parameter by specifying a lower and upper limit for video durations (see the ReadMe for more information).

Important note: Since the YT Data API unfortunately doesn't provide any information about the type of content ("normal" videos, shorts, livestreams...), the code to detect if a video is a short or not (enabled by the keep_shorts parameter) relies entirely on its duration (if the video is shorter than 65 seconds, it is flagged as a short). This leads to unwanted results if the keep_shorts parameter is set to True and the lower bound of the allowed_durations parameter is less than this 65 seconds threshold. Namely, all videos shorter than 65 seconds will be discarded, whatever that lower bound is. When (if ?) an alternative way of identifying shorts becomes available, it will be implemented to avoid such problems.

v1.2.0 - Video Title Filtering

13 Oct 18:35
Compare
Choose a tag to compare

Video Title Filtering

A new way to filter videos has been added: video title filtering.
This works in a similar way to the channel name filtering: two lists of words can be defined so that their content is either required or banned in video titles, allowing for even more customization.
See the ReadMe for more information.