Commit 2be7266
authored
feat: migrate to denoland/deno base image and integrate bgutil-ytdlp-pot-provider for YouTube POToken support (#7)
Integrate bgutil-ytdlp-pot-provider to enable YouTube POToken
authentication, avoiding bot detection. This requires deno runtime,
necessitating a base image change.
## Changes
- **Base image**: `alpine:3` → `docker.io/denoland/deno:alpine` for deno
runtime support
- **yt-dlp version**: `2025.08.22` → `2025.12.08`
- **POToken integration**:
- Copy bgutil-pot server binary to `/usr/bin/`
- Copy bgutil-ytdlp-pot-provider plugin to
`/etc/yt-dlp-plugins/bgutil-ytdlp-pot-provider`
- Create plugin directory with proper permissions
## Verification
Running `yt-dlp -v` in the built image confirms:
- deno runtime available and used by yt-dlp
- bgutil-pot found in PATH
- POToken providers registered (bgutil:cli, bgutil:http)
- Plugin directory correctly detected
```
[debug] JS runtimes: deno-2.6.0
[debug] [youtube] [pot:bgutil:cli] Found bgutil-pot in PATH
[debug] [youtube] [pot] PO Token Providers: bgutil:cli-1.2.2 (external), bgutil:http-1.2.2 (external)
```
<!-- START COPILOT CODING AGENT SUFFIX -->
<!-- START COPILOT ORIGINAL PROMPT -->
<details>
<summary>Original prompt</summary>
> Our `Dockerfile` currently uses `alpine:3` as the base image in the
final stage. Your task is to change the final stage's base image to
`docker.io/denoland/deno:alpine` and integrate both the client and
server of `jim60105/bgutil-ytdlp-pot-provider-rs` into this Dockerfile.
And also, change yt-dlp ARG to version 2025.12.08
>
> To add bgutil-ytdlp-pot-provider-rs, use:
>
> ```Dockerfile
> # Copy POToken server (bgutil-pot)
> COPY --link --chown=$APP_UID:0 --chmod=775
--from=ghcr.io/jim60105/bgutil-pot:latest /bgutil-pot /usr/bin/
>
> # Copy POToken client plugin
> COPY --link --chown=$APP_UID:0 --chmod=775
--from=ghcr.io/jim60105/bgutil-pot:latest /client
/etc/yt-dlp-plugins/bgutil-ytdlp-pot-provider
> ```
>
> How to verify:
>
> Run the built image temporarily with entrypoint="/usr/bin/yt-dlp" and
cmd="-v IgYHzexgMJg". The output must indicate that it is using the
bgutil POT provider bin and deno as the JS backend. If you see "deno not
found" or it does not mention using bgutil POT provider bin, then this
setup has failed and must be fixed. Note that these temporary changes to
entrypoint and cmd are only for testing; do not include them in your
Dockerfile.
>
> You cannot run LivestreamRecorderService because your development
environment is not properly configured. Do not spend time trying to run
LivestreamRecorderService program.
</details>
<!-- START COPILOT CODING AGENT TIPS -->
---
✨ Let Copilot coding agent [set things up for
you](https://github.com/Recorder-moe/LivestreamRecorderService/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
— coding agent works faster and does higher quality work when set up for
your repo.1 file changed
Lines changed: 10 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3 | 3 | | |
4 | 4 | | |
5 | 5 | | |
6 | | - | |
| 6 | + | |
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| |||
53 | 53 | | |
54 | 54 | | |
55 | 55 | | |
56 | | - | |
| 56 | + | |
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
| |||
72 | 72 | | |
73 | 73 | | |
74 | 74 | | |
75 | | - | |
| 75 | + | |
| 76 | + | |
76 | 77 | | |
77 | 78 | | |
78 | 79 | | |
| |||
85 | 86 | | |
86 | 87 | | |
87 | 88 | | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
88 | 95 | | |
89 | 96 | | |
90 | 97 | | |
| |||
0 commit comments