8000 Tags · alexta69/metube · GitHub
[go: up one dir, main page]

Skip to content

Tags

Tags

2026.11.06

Toggle 2026.11.06's commit message
Merge PR #1119: keep the custom name prefix on playlist and channel d…

…ownloads

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

2026.11.01

Toggle 2026.11.01's commit message
fix: queue each video of a channel added without a tab (closes #1111)

yt-dlp returns a channel URL without a tab (youtube.com/@name) as a
playlist of its tabs: Videos, Live, Shorts, each a playlist itself. The
playlist loop forced every entry to a video, so each tab became one row
that downloaded the whole tab in a single process, and one failure failed
the row. Retrying it re-added the tab, which then expanded per video under
the playlist template instead of the channel one, so every file was
downloaded again into a differently named folder.

Add a nested playlist entry as a playlist: each tab's videos are queued as
the tab's own URL would queue them, with the channel's folder and context.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

2026.10.27

Toggle 2026.10.27's commit message
upgrade yt-dlp from 2026.10.21 to 2026.10.26

2026.10.25

Toggle 2026.10.25's commit message
fix: report yt-dlp extractor crashes as errors instead of a 500 (closes 

#1108)

yt-dlp wraps its own failures in YoutubeDLError but lets an extractor
bug out as-is. GloboArticle claims every *.globo.com URL, and on a
direct m3u8 link with a live token it fetches the playlist as its
"webpage" and crashes on .strip() of a missing title. The add path
caught only YoutubeDLError, so the AttributeError reached aiohttp as a
bare "500 Server got itself in trouble".

Each place that runs yt-dlp now also catches any other exception, logs
the traceback, and reports it the same way as an extraction error:
- add: a failed entry in Completed with the message
- download: an error status with a message, instead of none
- browse and subscribe: an error response, instead of a 500
- subscription check: recorded on the subscription, so it shows the
  error and waits its interval instead of re-checking every tick

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

2026.10.23

Toggle 2026.10.23's commit message
fix: don't mark private playlist videos seen in subscription scans (c…

…loses #1105)

A video added to a playlist while still private was listed by the scan,
marked seen, failed to download, and was never queued once published.
Scans now pass yt-dlp's no-youtube-unavailable-videos compat option, which
leaves the hidden private/deleted placeholders out of the listing, so such a
video is new on the first check after it goes public. It is added to any
compat_opts the user configured. The Browse dialog shares the scan and no
longer lists those placeholders either.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

2026.10.22

Toggle 2026.10.22's commit message
upgrade yt-dlp from 2026.8.19 to 2026.10.21

2026.10.20

Toggle 2026.10.20's commit message
build: upgrade Python and frontend dependencies

aiohttp 3.14.3 -> 3.14.5 fixes Dependabot alerts 272-274 (unbounded
memory/CPU on crafted requests, no timeout before the first request
byte, Secure not enforced on the shared cookie). Everything else moves
to its latest release in range: Angular 22.2.3, angular-eslint 22.6,
vitest 5.0.5, multidict 7, and the transitive source-map-js 1.2.2 that
pnpm audit flagged under jsdom. typescript stays on ~6.0: Angular 22.2
and typescript-eslint both still require < 6.1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

2026.10.19

Toggle 2026.10.19's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #1100 from alexta69/claude/fervent-lamport-zfc98y

Fixes from the codebase review: 14 bugs, robustness, request object, UI split

2026.10.09

Toggle 2026.10.09's commit message
Merge PR #1091: browse a playlist and pick entries before queuing (cl…

…oses #1030)

# Conflicts:
#	app/main.py

2026.09.29

Toggle 2026.09.29's commit message
fix: apply the connect-time address guard to playlist/channel metadat…

…a files

The feed-level metadata pass runs yt-dlp in the main process, outside the
download subprocess's socket guard, and the thumbnail it fetches is saved
into the download directory. Its URL comes from the feed, so it was only as
trustworthy as the site that served it.

socket_guard_scope applies the same guard to the calling thread for the
duration of that pass, with the same proxy and PO token provider
allowances as a download. A refused thumbnail is a yt-dlp warning; the
add and the other metadata files are unaffected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
0