Update Estonian translation
Update Estonian translation
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Priit Jõerüüt <jrthwlate@users.noreply.hosted.weblate.org>
Some YouTube videos like https://www.youtube.com/watch?v=Ajkr_Wg-k8g
had an non comment key that was inside the Array that contained some
comment information that Invidious parses (like comment_key and
toolbar_key), that being the `commentFilterContextViewModel` key, which
is just an indicator on how comments are sorted:
```
{
"commentThreadRenderer": { ... } <- comment information that is
handled by line 134 of youtube.cr
},
{
"commentFilterContextViewModel": {
"text": {
"content": "Top is selected, so you'll see featured comments"
},
"accessibility": {
"accessibilityData": {
"label": "Top is selected, so you'll see featured comments"
}
}
} <- Useless information, this is not a comment
}
```
Hardening via `.try &.as_h?` makes sense - not sure if YT would ever return null
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Videos with multi-language audio carry an `audioTrack` object on each audio entry
of `streamingData.adaptiveFormats`, holding the language id (e.g. "en-US.4"), a
human-readable `displayName`, and whether the track is the original audio.
Invidious already parses and uses all three: the DASH manifest route reads
`audioTrack["id"]`, `audioTrack["audioIsDefault"]` and
`audioTrack["displayName"]` to label and order its audio AdaptationSets. But
`/api/v1/videos` drops it, so an API consumer has no way to tell one audio track
from another, and is left scraping it back out of the stream URL query string
(`xtags=acont%3Ddubbed%3Alang%3Dfr`) — undocumented, and silent when it changes.
Emit the same three fields the manifest route already relies on, each only when
present, in the same passthrough style as the neighbouring `colorInfo` and
`captionTrack` fields. Additive and optional throughout: a single-audio video
carries no `audioTrack` at all and so gains no field, which is correct — there is
no second track to distinguish.
AI disclosure, per AI_POLICY.md: this patch was written with AI assistance.
Exact model: Claude Opus 5, model ID `claude-opus-5[1m]`. Tool used to interact
with it: Claude Code, Anthropic's agentic CLI. The change was verified against a
live patched instance (see the PR for the measurements) and is running in
production on the submitter's instance. Submitted by and the responsibility of
@mdbraber.
* Various enhancements and rewording to the issues/PRs templates
* Remove the "explain how" from the checkboxes since the explanation is
below
* Make the checkbox valid markdown so that they don't appear as text next
to the rendered checked one
* Add comma to make the sentences flow better
* Consistency
* Convert issue templates to Issue Forms with AI policy disclosure
Convert the 3 markdown issue templates (.md) to GitHub Issue Forms (.yml)
to enable interactive form elements, and add an AI disclosure section per
the AI Policy (AI_POLICY.md):
- Required checkbox to acknowledge having read the AI Policy
- Required dropdown for AI usage (none / fully / partially with explanation)
- Optional input for model(s) used (open-weight examples in placeholder)
- Optional input for tool(s) used (FOSS examples in placeholder)
- Optional textarea to explain how AI was used (for the partial option)
The existing template content and structure is preserved, only converted
from markdown to the Issue Forms schema.
* Align pull request template with AI policy disclosure
Update the pull request template to match the AI disclosure standards
introduced in the issue templates:
- Use relative link to AI_POLICY.md instead of absolute GitHub URL
- Update dropdown wording to match issue forms
- Use open-weight models in placeholder examples
- Use FOSS tools in placeholder examples
- Add 'How was AI used?' section for the partial-usage explanation
* Fix assignees field type in issue templates
Use an empty array instead of an empty string for the assignees field,
as required by the GitHub Issue Forms schema.
* Enhance the PR template
* Reword the issue templates to be consistent with the PR template
* Enhance the PR template
* Typo coming from the original template
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Better wording for what comes from the original templates
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Switch to full URLs since relative URL break inconsistently
---------
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Create AI_POLICY.md
* Add some more
* Typo
* Update AI_POLICY.md
Co-authored-by: Émilien (perso) <4016501+unixfox@users.noreply.github.com>
* Various minor enhancements
* Various small rewording
* Add a line about it being mostly done by the maintainers
---------
Co-authored-by: Émilien (perso) <4016501+unixfox@users.noreply.github.com>
* Add option to disable easy to abuse API endpoints
The API endpoints that will be disabled when this option are:
- /api/v1/videos
- /api/v1/clips
- /api/v1/transcripts
There is still API endponts that need some sort of validation or
connection/proxying to Invidious companion like
`/api/v1/captions` and `/api/v1/storyboards` since they also do a video
request to Invidious companion. I'm not sure if the `/next` API endpoint
could be used to gather that type of information, if so, that would be
better.
Closes#5599
* Rename configuration variable, add additional comment for the option