mirror of
https://github.com/yt-dlp/yt-dlp
synced 2024-12-26 21:59:08 +01:00
[cleanup] Misc cleanup
This commit is contained in:
parent
4e3b637d5b
commit
b5ae35ee6d
25 changed files with 142 additions and 136 deletions
15
.github/ISSUE_TEMPLATE/1_broken_site.md
vendored
15
.github/ISSUE_TEMPLATE/1_broken_site.md
vendored
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
name: Broken site support
|
name: Broken site support
|
||||||
about: Report broken or misfunctioning site
|
about: Report broken or misfunctioning site
|
||||||
title: "[Broken]"
|
title: "[Broken] Website Name: A short description of the issue"
|
||||||
labels: Broken
|
labels: ['triage', 'extractor-bug']
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -21,11 +21,12 @@ assignees: ''
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
||||||
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is 2021.09.25. If it's not, see https://github.com/yt-dlp/yt-dlp on how to update. Issues with outdated version will be REJECTED.
|
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is 2021.09.25. If it's not, see https://github.com/yt-dlp/yt-dlp#update on how to update. Issues with outdated version will be REJECTED.
|
||||||
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
|
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
|
||||||
- Make sure that all URLs and arguments with special characters are properly quoted or escaped as explained in https://github.com/yt-dlp/yt-dlp.
|
- Make sure that all URLs and arguments with special characters are properly quoted or escaped.
|
||||||
- Search the bugtracker for similar issues: https://github.com/yt-dlp/yt-dlp. DO NOT post duplicates.
|
- Search the bugtracker for similar issues: https://github.com/yt-dlp/yt-dlp/issues. DO NOT post duplicates.
|
||||||
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
|
- Read "opening an issue" section in CONTRIBUTING.md: https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue
|
||||||
|
- Finally, confirm all RELEVANT tasks from the following by putting x into all the boxes like this [x] (Dont forget to delete the empty space)
|
||||||
-->
|
-->
|
||||||
|
|
||||||
- [ ] I'm reporting a broken site support
|
- [ ] I'm reporting a broken site support
|
||||||
|
@ -33,6 +34,8 @@ Carefully read and work through this check list in order to prevent the most com
|
||||||
- [ ] I've checked that all provided URLs are alive and playable in a browser
|
- [ ] I've checked that all provided URLs are alive and playable in a browser
|
||||||
- [ ] I've checked that all URLs and arguments with special characters are properly quoted or escaped
|
- [ ] I've checked that all URLs and arguments with special characters are properly quoted or escaped
|
||||||
- [ ] I've searched the bugtracker for similar issues including closed ones
|
- [ ] I've searched the bugtracker for similar issues including closed ones
|
||||||
|
- [ ] I've read the opening an issue section in CONTRIBUTING.md
|
||||||
|
- [ ] I have given an appropriate title to the issue
|
||||||
|
|
||||||
|
|
||||||
## Verbose log
|
## Verbose log
|
||||||
|
|
15
.github/ISSUE_TEMPLATE/2_site_support_request.md
vendored
15
.github/ISSUE_TEMPLATE/2_site_support_request.md
vendored
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
name: Site support request
|
name: Site support request
|
||||||
about: Request support for a new site
|
about: Request support for a new site
|
||||||
title: "[Site Request]"
|
title: "[Site Request] Website Name"
|
||||||
labels: Request
|
labels: ['triage', 'site-request']
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -21,11 +21,12 @@ assignees: ''
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
||||||
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is 2021.09.25. If it's not, see https://github.com/yt-dlp/yt-dlp on how to update. Issues with outdated version will be REJECTED.
|
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is 2021.09.25. If it's not, see https://github.com/yt-dlp/yt-dlp#update on how to update. Issues with outdated version will be REJECTED.
|
||||||
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
|
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
|
||||||
- Make sure that site you are requesting is not dedicated to copyright infringement, see https://github.com/yt-dlp/yt-dlp. yt-dlp does not support such sites. In order for site support request to be accepted all provided example URLs should not violate any copyrights.
|
- Make sure that site you are requesting is not dedicated to copyright infringement. yt-dlp does not support such sites. In order for site support request to be accepted all provided example URLs should not violate any copyrights.
|
||||||
- Search the bugtracker for similar site support requests: https://github.com/yt-dlp/yt-dlp. DO NOT post duplicates.
|
- Search the bugtracker for similar site support requests: https://github.com/yt-dlp/yt-dlp/issues. DO NOT post duplicates.
|
||||||
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
|
- Read "opening an issue" section in CONTRIBUTING.md: https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue
|
||||||
|
- Finally, confirm all RELEVANT tasks from the following by putting x into all the boxes like this [x] (Dont forget to delete the empty space)
|
||||||
-->
|
-->
|
||||||
|
|
||||||
- [ ] I'm reporting a new site support request
|
- [ ] I'm reporting a new site support request
|
||||||
|
@ -34,6 +35,8 @@ Carefully read and work through this check list in order to prevent the most com
|
||||||
- [ ] I've checked that none of provided URLs violate any copyrights
|
- [ ] I've checked that none of provided URLs violate any copyrights
|
||||||
- [ ] The provided URLs do not contain any DRM to the best of my knowledge
|
- [ ] The provided URLs do not contain any DRM to the best of my knowledge
|
||||||
- [ ] I've searched the bugtracker for similar site support requests including closed ones
|
- [ ] I've searched the bugtracker for similar site support requests including closed ones
|
||||||
|
- [ ] I've read the opening an issue section in CONTRIBUTING.md
|
||||||
|
- [ ] I have given an appropriate title to the issue
|
||||||
|
|
||||||
|
|
||||||
## Example URLs
|
## Example URLs
|
||||||
|
|
13
.github/ISSUE_TEMPLATE/3_site_feature_request.md
vendored
13
.github/ISSUE_TEMPLATE/3_site_feature_request.md
vendored
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
name: Site feature request
|
name: Site feature request
|
||||||
about: Request a new functionality for a site
|
about: Request a new functionality for a site
|
||||||
title: "[Site Request]"
|
title: "[Site Feature] Website Name: A short description of the feature"
|
||||||
labels: Request
|
labels: ['triage', 'site-enhancement']
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -21,14 +21,17 @@ assignees: ''
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
||||||
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is 2021.09.25. If it's not, see https://github.com/yt-dlp/yt-dlp on how to update. Issues with outdated version will be REJECTED.
|
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is 2021.09.25. If it's not, see https://github.com/yt-dlp/yt-dlp#update on how to update. Issues with outdated version will be REJECTED.
|
||||||
- Search the bugtracker for similar site feature requests: https://github.com/yt-dlp/yt-dlp. DO NOT post duplicates.
|
- Search the bugtracker for similar site feature requests: https://github.com/yt-dlp/yt-dlp/issues. DO NOT post duplicates.
|
||||||
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
|
- Read "opening an issue" section in CONTRIBUTING.md: https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue
|
||||||
|
- Finally, confirm all RELEVANT tasks from the following by putting x into all the boxes like this [x] (Dont forget to delete the empty space)
|
||||||
-->
|
-->
|
||||||
|
|
||||||
- [ ] I'm reporting a site feature request
|
- [ ] I'm reporting a site feature request
|
||||||
- [ ] I've verified that I'm running yt-dlp version **2021.09.25**
|
- [ ] I've verified that I'm running yt-dlp version **2021.09.25**
|
||||||
- [ ] I've searched the bugtracker for similar site feature requests including closed ones
|
- [ ] I've searched the bugtracker for similar site feature requests including closed ones
|
||||||
|
- [ ] I've read the opening an issue section in CONTRIBUTING.md
|
||||||
|
- [ ] I have given an appropriate title to the issue
|
||||||
|
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|
17
.github/ISSUE_TEMPLATE/4_bug_report.md
vendored
17
.github/ISSUE_TEMPLATE/4_bug_report.md
vendored
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
name: Bug report
|
name: Bug report
|
||||||
about: Report a bug unrelated to any particular site or extractor
|
about: Report a bug unrelated to any particular site or extractor
|
||||||
title: ''
|
title: '[Bug] A short description of the issue'
|
||||||
labels: ''
|
labels: ['triage', 'bug']
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -21,12 +21,12 @@ assignees: ''
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
||||||
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is 2021.09.25. If it's not, see https://github.com/yt-dlp/yt-dlp on how to update. Issues with outdated version will be REJECTED.
|
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is 2021.09.25. If it's not, see https://github.com/yt-dlp/yt-dlp#update on how to update. Issues with outdated version will be REJECTED.
|
||||||
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
|
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
|
||||||
- Make sure that all URLs and arguments with special characters are properly quoted or escaped as explained in https://github.com/yt-dlp/yt-dlp.
|
- Make sure that all URLs and arguments with special characters are properly quoted or escaped.
|
||||||
- Search the bugtracker for similar issues: https://github.com/yt-dlp/yt-dlp. DO NOT post duplicates.
|
- Search the bugtracker for similar issues: https://github.com/yt-dlp/yt-dlp/issues. DO NOT post duplicates.
|
||||||
- Read bugs section in FAQ: https://github.com/yt-dlp/yt-dlp
|
- Read "opening an issue" section in CONTRIBUTING.md: https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue
|
||||||
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
|
- Finally, confirm all RELEVANT tasks from the following by putting x into all the boxes like this [x] (Dont forget to delete the empty space)
|
||||||
-->
|
-->
|
||||||
|
|
||||||
- [ ] I'm reporting a bug unrelated to a specific site
|
- [ ] I'm reporting a bug unrelated to a specific site
|
||||||
|
@ -35,7 +35,8 @@ Carefully read and work through this check list in order to prevent the most com
|
||||||
- [ ] The provided URLs do not contain any DRM to the best of my knowledge
|
- [ ] The provided URLs do not contain any DRM to the best of my knowledge
|
||||||
- [ ] I've checked that all URLs and arguments with special characters are properly quoted or escaped
|
- [ ] I've checked that all URLs and arguments with special characters are properly quoted or escaped
|
||||||
- [ ] I've searched the bugtracker for similar bug reports including closed ones
|
- [ ] I've searched the bugtracker for similar bug reports including closed ones
|
||||||
- [ ] I've read bugs section in FAQ
|
- [ ] I've read the opening an issue section in CONTRIBUTING.md
|
||||||
|
- [ ] I have given an appropriate title to the issue
|
||||||
|
|
||||||
|
|
||||||
## Verbose log
|
## Verbose log
|
||||||
|
|
11
.github/ISSUE_TEMPLATE/5_feature_request.md
vendored
11
.github/ISSUE_TEMPLATE/5_feature_request.md
vendored
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
name: Feature request
|
name: Feature request
|
||||||
about: Request a new functionality unrelated to any particular site or extractor
|
about: Request a new functionality unrelated to any particular site or extractor
|
||||||
title: "[Feature Request]"
|
title: "[Feature Request] A short description of your feature"
|
||||||
labels: Request
|
labels: ['triage', 'enhancement']
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -21,14 +21,17 @@ assignees: ''
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
||||||
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is 2021.09.25. If it's not, see https://github.com/yt-dlp/yt-dlp on how to update. Issues with outdated version will be REJECTED.
|
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is 2021.09.25. If it's not, see https://github.com/yt-dlp/yt-dlp#update on how to update. Issues with outdated version will be REJECTED.
|
||||||
- Search the bugtracker for similar feature requests: https://github.com/yt-dlp/yt-dlp. DO NOT post duplicates.
|
- Search the bugtracker for similar feature requests: https://github.com/yt-dlp/yt-dlp/issues. DO NOT post duplicates.
|
||||||
|
- Read "opening an issue" section in CONTRIBUTING.md: https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue
|
||||||
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
|
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
|
||||||
-->
|
-->
|
||||||
|
|
||||||
- [ ] I'm reporting a feature request
|
- [ ] I'm reporting a feature request
|
||||||
- [ ] I've verified that I'm running yt-dlp version **2021.09.25**
|
- [ ] I've verified that I'm running yt-dlp version **2021.09.25**
|
||||||
- [ ] I've searched the bugtracker for similar feature requests including closed ones
|
- [ ] I've searched the bugtracker for similar feature requests including closed ones
|
||||||
|
- [ ] I've read the opening an issue section in CONTRIBUTING.md
|
||||||
|
- [ ] I have given an appropriate title to the issue
|
||||||
|
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|
11
.github/ISSUE_TEMPLATE/6_question.md
vendored
11
.github/ISSUE_TEMPLATE/6_question.md
vendored
|
@ -1,7 +1,7 @@
|
||||||
---
|
---
|
||||||
name: Ask question
|
name: Ask question
|
||||||
about: Ask yt-dlp related question
|
about: Ask yt-dlp related question
|
||||||
title: "[Question]"
|
title: "[Question] A short description of your question"
|
||||||
labels: question
|
labels: question
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
|
@ -21,14 +21,17 @@ assignees: ''
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
||||||
- Look through the README (https://github.com/yt-dlp/yt-dlp) and FAQ (https://github.com/yt-dlp/yt-dlp) for similar questions
|
- Look through the README (https://github.com/yt-dlp/yt-dlp)
|
||||||
- Search the bugtracker for similar questions: https://github.com/yt-dlp/yt-dlp
|
- Read "opening an issue" section in CONTRIBUTING.md: https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue
|
||||||
|
- Search the bugtracker for similar questions: https://github.com/yt-dlp/yt-dlp/issues
|
||||||
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
|
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
|
||||||
-->
|
-->
|
||||||
|
|
||||||
- [ ] I'm asking a question
|
- [ ] I'm asking a question
|
||||||
- [ ] I've looked through the README and FAQ for similar questions
|
- [ ] I've looked through the README
|
||||||
|
- [ ] I've read the opening an issue section in CONTRIBUTING.md
|
||||||
- [ ] I've searched the bugtracker for similar questions including closed ones
|
- [ ] I've searched the bugtracker for similar questions including closed ones
|
||||||
|
- [ ] I have given an appropriate title to the issue
|
||||||
|
|
||||||
|
|
||||||
## Question
|
## Question
|
||||||
|
|
15
.github/ISSUE_TEMPLATE_tmpl/1_broken_site.md
vendored
15
.github/ISSUE_TEMPLATE_tmpl/1_broken_site.md
vendored
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
name: Broken site support
|
name: Broken site support
|
||||||
about: Report broken or misfunctioning site
|
about: Report broken or misfunctioning site
|
||||||
title: "[Broken]"
|
title: "[Broken] Website Name: A short description of the issue"
|
||||||
labels: Broken
|
labels: ['triage', 'extractor-bug']
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -21,11 +21,12 @@ assignees: ''
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
||||||
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is %(version)s. If it's not, see https://github.com/yt-dlp/yt-dlp on how to update. Issues with outdated version will be REJECTED.
|
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is %(version)s. If it's not, see https://github.com/yt-dlp/yt-dlp#update on how to update. Issues with outdated version will be REJECTED.
|
||||||
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
|
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
|
||||||
- Make sure that all URLs and arguments with special characters are properly quoted or escaped as explained in https://github.com/yt-dlp/yt-dlp.
|
- Make sure that all URLs and arguments with special characters are properly quoted or escaped.
|
||||||
- Search the bugtracker for similar issues: https://github.com/yt-dlp/yt-dlp. DO NOT post duplicates.
|
- Search the bugtracker for similar issues: https://github.com/yt-dlp/yt-dlp/issues. DO NOT post duplicates.
|
||||||
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
|
- Read "opening an issue" section in CONTRIBUTING.md: https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue
|
||||||
|
- Finally, confirm all RELEVANT tasks from the following by putting x into all the boxes like this [x] (Dont forget to delete the empty space)
|
||||||
-->
|
-->
|
||||||
|
|
||||||
- [ ] I'm reporting a broken site support
|
- [ ] I'm reporting a broken site support
|
||||||
|
@ -33,6 +34,8 @@ Carefully read and work through this check list in order to prevent the most com
|
||||||
- [ ] I've checked that all provided URLs are alive and playable in a browser
|
- [ ] I've checked that all provided URLs are alive and playable in a browser
|
||||||
- [ ] I've checked that all URLs and arguments with special characters are properly quoted or escaped
|
- [ ] I've checked that all URLs and arguments with special characters are properly quoted or escaped
|
||||||
- [ ] I've searched the bugtracker for similar issues including closed ones
|
- [ ] I've searched the bugtracker for similar issues including closed ones
|
||||||
|
- [ ] I've read the opening an issue section in CONTRIBUTING.md
|
||||||
|
- [ ] I have given an appropriate title to the issue
|
||||||
|
|
||||||
|
|
||||||
## Verbose log
|
## Verbose log
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
name: Site support request
|
name: Site support request
|
||||||
about: Request support for a new site
|
about: Request support for a new site
|
||||||
title: "[Site Request]"
|
title: "[Site Request] Website Name"
|
||||||
labels: Request
|
labels: ['triage', 'site-request']
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -21,11 +21,12 @@ assignees: ''
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
||||||
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is %(version)s. If it's not, see https://github.com/yt-dlp/yt-dlp on how to update. Issues with outdated version will be REJECTED.
|
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is %(version)s. If it's not, see https://github.com/yt-dlp/yt-dlp#update on how to update. Issues with outdated version will be REJECTED.
|
||||||
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
|
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
|
||||||
- Make sure that site you are requesting is not dedicated to copyright infringement, see https://github.com/yt-dlp/yt-dlp. yt-dlp does not support such sites. In order for site support request to be accepted all provided example URLs should not violate any copyrights.
|
- Make sure that site you are requesting is not dedicated to copyright infringement. yt-dlp does not support such sites. In order for site support request to be accepted all provided example URLs should not violate any copyrights.
|
||||||
- Search the bugtracker for similar site support requests: https://github.com/yt-dlp/yt-dlp. DO NOT post duplicates.
|
- Search the bugtracker for similar site support requests: https://github.com/yt-dlp/yt-dlp/issues. DO NOT post duplicates.
|
||||||
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
|
- Read "opening an issue" section in CONTRIBUTING.md: https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue
|
||||||
|
- Finally, confirm all RELEVANT tasks from the following by putting x into all the boxes like this [x] (Dont forget to delete the empty space)
|
||||||
-->
|
-->
|
||||||
|
|
||||||
- [ ] I'm reporting a new site support request
|
- [ ] I'm reporting a new site support request
|
||||||
|
@ -34,6 +35,8 @@ Carefully read and work through this check list in order to prevent the most com
|
||||||
- [ ] I've checked that none of provided URLs violate any copyrights
|
- [ ] I've checked that none of provided URLs violate any copyrights
|
||||||
- [ ] The provided URLs do not contain any DRM to the best of my knowledge
|
- [ ] The provided URLs do not contain any DRM to the best of my knowledge
|
||||||
- [ ] I've searched the bugtracker for similar site support requests including closed ones
|
- [ ] I've searched the bugtracker for similar site support requests including closed ones
|
||||||
|
- [ ] I've read the opening an issue section in CONTRIBUTING.md
|
||||||
|
- [ ] I have given an appropriate title to the issue
|
||||||
|
|
||||||
|
|
||||||
## Example URLs
|
## Example URLs
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
name: Site feature request
|
name: Site feature request
|
||||||
about: Request a new functionality for a site
|
about: Request a new functionality for a site
|
||||||
title: "[Site Request]"
|
title: "[Site Feature] Website Name: A short description of the feature"
|
||||||
labels: Request
|
labels: ['triage', 'site-enhancement']
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -21,14 +21,17 @@ assignees: ''
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
||||||
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is %(version)s. If it's not, see https://github.com/yt-dlp/yt-dlp on how to update. Issues with outdated version will be REJECTED.
|
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is %(version)s. If it's not, see https://github.com/yt-dlp/yt-dlp#update on how to update. Issues with outdated version will be REJECTED.
|
||||||
- Search the bugtracker for similar site feature requests: https://github.com/yt-dlp/yt-dlp. DO NOT post duplicates.
|
- Search the bugtracker for similar site feature requests: https://github.com/yt-dlp/yt-dlp/issues. DO NOT post duplicates.
|
||||||
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
|
- Read "opening an issue" section in CONTRIBUTING.md: https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue
|
||||||
|
- Finally, confirm all RELEVANT tasks from the following by putting x into all the boxes like this [x] (Dont forget to delete the empty space)
|
||||||
-->
|
-->
|
||||||
|
|
||||||
- [ ] I'm reporting a site feature request
|
- [ ] I'm reporting a site feature request
|
||||||
- [ ] I've verified that I'm running yt-dlp version **%(version)s**
|
- [ ] I've verified that I'm running yt-dlp version **%(version)s**
|
||||||
- [ ] I've searched the bugtracker for similar site feature requests including closed ones
|
- [ ] I've searched the bugtracker for similar site feature requests including closed ones
|
||||||
|
- [ ] I've read the opening an issue section in CONTRIBUTING.md
|
||||||
|
- [ ] I have given an appropriate title to the issue
|
||||||
|
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|
17
.github/ISSUE_TEMPLATE_tmpl/4_bug_report.md
vendored
17
.github/ISSUE_TEMPLATE_tmpl/4_bug_report.md
vendored
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
name: Bug report
|
name: Bug report
|
||||||
about: Report a bug unrelated to any particular site or extractor
|
about: Report a bug unrelated to any particular site or extractor
|
||||||
title: ''
|
title: '[Bug] A short description of the issue'
|
||||||
labels: ''
|
labels: ['triage', 'bug']
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -21,12 +21,12 @@ assignees: ''
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
||||||
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is %(version)s. If it's not, see https://github.com/yt-dlp/yt-dlp on how to update. Issues with outdated version will be REJECTED.
|
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is %(version)s. If it's not, see https://github.com/yt-dlp/yt-dlp#update on how to update. Issues with outdated version will be REJECTED.
|
||||||
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
|
- Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser.
|
||||||
- Make sure that all URLs and arguments with special characters are properly quoted or escaped as explained in https://github.com/yt-dlp/yt-dlp.
|
- Make sure that all URLs and arguments with special characters are properly quoted or escaped.
|
||||||
- Search the bugtracker for similar issues: https://github.com/yt-dlp/yt-dlp. DO NOT post duplicates.
|
- Search the bugtracker for similar issues: https://github.com/yt-dlp/yt-dlp/issues. DO NOT post duplicates.
|
||||||
- Read bugs section in FAQ: https://github.com/yt-dlp/yt-dlp
|
- Read "opening an issue" section in CONTRIBUTING.md: https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue
|
||||||
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
|
- Finally, confirm all RELEVANT tasks from the following by putting x into all the boxes like this [x] (Dont forget to delete the empty space)
|
||||||
-->
|
-->
|
||||||
|
|
||||||
- [ ] I'm reporting a bug unrelated to a specific site
|
- [ ] I'm reporting a bug unrelated to a specific site
|
||||||
|
@ -35,7 +35,8 @@ Carefully read and work through this check list in order to prevent the most com
|
||||||
- [ ] The provided URLs do not contain any DRM to the best of my knowledge
|
- [ ] The provided URLs do not contain any DRM to the best of my knowledge
|
||||||
- [ ] I've checked that all URLs and arguments with special characters are properly quoted or escaped
|
- [ ] I've checked that all URLs and arguments with special characters are properly quoted or escaped
|
||||||
- [ ] I've searched the bugtracker for similar bug reports including closed ones
|
- [ ] I've searched the bugtracker for similar bug reports including closed ones
|
||||||
- [ ] I've read bugs section in FAQ
|
- [ ] I've read the opening an issue section in CONTRIBUTING.md
|
||||||
|
- [ ] I have given an appropriate title to the issue
|
||||||
|
|
||||||
|
|
||||||
## Verbose log
|
## Verbose log
|
||||||
|
|
11
.github/ISSUE_TEMPLATE_tmpl/5_feature_request.md
vendored
11
.github/ISSUE_TEMPLATE_tmpl/5_feature_request.md
vendored
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
name: Feature request
|
name: Feature request
|
||||||
about: Request a new functionality unrelated to any particular site or extractor
|
about: Request a new functionality unrelated to any particular site or extractor
|
||||||
title: "[Feature Request]"
|
title: "[Feature Request] A short description of your feature"
|
||||||
labels: Request
|
labels: ['triage', 'enhancement']
|
||||||
assignees: ''
|
assignees: ''
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -21,14 +21,17 @@ assignees: ''
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
Carefully read and work through this check list in order to prevent the most common mistakes and misuse of yt-dlp:
|
||||||
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is %(version)s. If it's not, see https://github.com/yt-dlp/yt-dlp on how to update. Issues with outdated version will be REJECTED.
|
- First of, make sure you are using the latest version of yt-dlp. Run `yt-dlp --version` and ensure your version is %(version)s. If it's not, see https://github.com/yt-dlp/yt-dlp#update on how to update. Issues with outdated version will be REJECTED.
|
||||||
- Search the bugtracker for similar feature requests: https://github.com/yt-dlp/yt-dlp. DO NOT post duplicates.
|
- Search the bugtracker for similar feature requests: https://github.com/yt-dlp/yt-dlp/issues. DO NOT post duplicates.
|
||||||
|
- Read "opening an issue" section in CONTRIBUTING.md: https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue
|
||||||
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
|
- Finally, put x into all relevant boxes like this [x] (Dont forget to delete the empty space)
|
||||||
-->
|
-->
|
||||||
|
|
||||||
- [ ] I'm reporting a feature request
|
- [ ] I'm reporting a feature request
|
||||||
- [ ] I've verified that I'm running yt-dlp version **%(version)s**
|
- [ ] I've verified that I'm running yt-dlp version **%(version)s**
|
||||||
- [ ] I've searched the bugtracker for similar feature requests including closed ones
|
- [ ] I've searched the bugtracker for similar feature requests including closed ones
|
||||||
|
- [ ] I've read the opening an issue section in CONTRIBUTING.md
|
||||||
|
- [ ] I have given an appropriate title to the issue
|
||||||
|
|
||||||
|
|
||||||
## Description
|
## Description
|
||||||
|
|
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
|
@ -7,7 +7,7 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
### Before submitting a *pull request* make sure you have:
|
### Before submitting a *pull request* make sure you have:
|
||||||
- [ ] At least skimmed through [adding new extractor tutorial](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#adding-support-for-a-new-site) and [yt-dlp coding conventions](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#yt-dlp-coding-conventions) sections
|
- [ ] At least skimmed through [contributing guidelines](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#developer-instructions) including [yt-dlp coding conventions](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#yt-dlp-coding-conventions)
|
||||||
- [ ] [Searched](https://github.com/yt-dlp/yt-dlp/search?q=is%3Apr&type=Issues) the bugtracker for similar pull requests
|
- [ ] [Searched](https://github.com/yt-dlp/yt-dlp/search?q=is%3Apr&type=Issues) the bugtracker for similar pull requests
|
||||||
- [ ] Checked the code with [flake8](https://pypi.python.org/pypi/flake8)
|
- [ ] Checked the code with [flake8](https://pypi.python.org/pypi/flake8)
|
||||||
|
|
||||||
|
|
|
@ -199,7 +199,7 @@ On windows, [Microsoft Visual C++ 2010 SP1 Redistributable Package (x86)](https:
|
||||||
While all the other dependancies are optional, `ffmpeg` and `ffprobe` are highly recommended
|
While all the other dependancies are optional, `ffmpeg` and `ffprobe` are highly recommended
|
||||||
* [**ffmpeg** and **ffprobe**](https://www.ffmpeg.org) - Required for [merging seperate video and audio files](#format-selection) as well as for various [post-processing](#post-processing-options) tasks. Licence [depends on the build](https://www.ffmpeg.org/legal.html)
|
* [**ffmpeg** and **ffprobe**](https://www.ffmpeg.org) - Required for [merging seperate video and audio files](#format-selection) as well as for various [post-processing](#post-processing-options) tasks. Licence [depends on the build](https://www.ffmpeg.org/legal.html)
|
||||||
* [**mutagen**](https://github.com/quodlibet/mutagen) - For embedding thumbnail in certain formats. Licenced under [GPLv2+](https://github.com/quodlibet/mutagen/blob/master/COPYING)
|
* [**mutagen**](https://github.com/quodlibet/mutagen) - For embedding thumbnail in certain formats. Licenced under [GPLv2+](https://github.com/quodlibet/mutagen/blob/master/COPYING)
|
||||||
* [**pycryptodomex**](https://github.com/Legrandin/pycryptodomex) - For decrypting AES-128 HLS streams and various other data. Licenced under [BSD2](https://github.com/Legrandin/pycryptodomex/blob/master/LICENSE.rst)
|
* [**pycryptodomex**](https://github.com/Legrandin/pycryptodome) - For decrypting AES-128 HLS streams and various other data. Licenced under [BSD2](https://github.com/Legrandin/pycryptodome/blob/master/LICENSE.rst)
|
||||||
* [**websockets**](https://github.com/aaugustin/websockets) - For downloading over websocket. Licenced under [BSD3](https://github.com/aaugustin/websockets/blob/main/LICENSE)
|
* [**websockets**](https://github.com/aaugustin/websockets) - For downloading over websocket. Licenced under [BSD3](https://github.com/aaugustin/websockets/blob/main/LICENSE)
|
||||||
* [**keyring**](https://github.com/jaraco/keyring) - For decrypting cookies of chromium-based browsers on Linux. Licenced under [MIT](https://github.com/jaraco/keyring/blob/main/LICENSE)
|
* [**keyring**](https://github.com/jaraco/keyring) - For decrypting cookies of chromium-based browsers on Linux. Licenced under [MIT](https://github.com/jaraco/keyring/blob/main/LICENSE)
|
||||||
* [**AtomicParsley**](https://github.com/wez/atomicparsley) - For embedding thumbnail in mp4/m4a if mutagen is not present. Licenced under [GPLv2+](https://github.com/wez/atomicparsley/blob/master/COPYING)
|
* [**AtomicParsley**](https://github.com/wez/atomicparsley) - For embedding thumbnail in mp4/m4a if mutagen is not present. Licenced under [GPLv2+](https://github.com/wez/atomicparsley/blob/master/COPYING)
|
||||||
|
@ -287,7 +287,8 @@ Then simply run `make`. You can also run `make yt-dlp` instead to compile only t
|
||||||
--flat-playlist Do not extract the videos of a playlist,
|
--flat-playlist Do not extract the videos of a playlist,
|
||||||
only list them
|
only list them
|
||||||
--no-flat-playlist Extract the videos of a playlist
|
--no-flat-playlist Extract the videos of a playlist
|
||||||
--mark-watched Mark videos watched (YouTube only)
|
--mark-watched Mark videos watched (even with --simulate).
|
||||||
|
Currently only supported for YouTube
|
||||||
--no-mark-watched Do not mark videos watched (default)
|
--no-mark-watched Do not mark videos watched (default)
|
||||||
--no-colors Do not emit color codes in output
|
--no-colors Do not emit color codes in output
|
||||||
--compat-options OPTS Options that can help keep compatibility
|
--compat-options OPTS Options that can help keep compatibility
|
||||||
|
|
2
setup.py
2
setup.py
|
@ -119,7 +119,7 @@ setup(
|
||||||
'Documentation': 'https://yt-dlp.readthedocs.io',
|
'Documentation': 'https://yt-dlp.readthedocs.io',
|
||||||
'Source': 'https://github.com/yt-dlp/yt-dlp',
|
'Source': 'https://github.com/yt-dlp/yt-dlp',
|
||||||
'Tracker': 'https://github.com/yt-dlp/yt-dlp/issues',
|
'Tracker': 'https://github.com/yt-dlp/yt-dlp/issues',
|
||||||
#'Funding': 'https://donate.pypi.org',
|
'Funding': 'https://github.com/yt-dlp/yt-dlp/blob/master/Collaborators.md#collaborators',
|
||||||
},
|
},
|
||||||
classifiers=[
|
classifiers=[
|
||||||
'Topic :: Multimedia :: Video',
|
'Topic :: Multimedia :: Video',
|
||||||
|
|
|
@ -22,7 +22,7 @@ from yt_dlp.utils import (
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if "pytest" in sys.modules:
|
if 'pytest' in sys.modules:
|
||||||
import pytest
|
import pytest
|
||||||
is_download_test = pytest.mark.download
|
is_download_test = pytest.mark.download
|
||||||
else:
|
else:
|
||||||
|
@ -32,9 +32,9 @@ else:
|
||||||
|
|
||||||
def get_params(override=None):
|
def get_params(override=None):
|
||||||
PARAMETERS_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)),
|
PARAMETERS_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)),
|
||||||
"parameters.json")
|
'parameters.json')
|
||||||
LOCAL_PARAMETERS_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)),
|
LOCAL_PARAMETERS_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)),
|
||||||
"local_parameters.json")
|
'local_parameters.json')
|
||||||
with io.open(PARAMETERS_FILE, encoding='utf-8') as pf:
|
with io.open(PARAMETERS_FILE, encoding='utf-8') as pf:
|
||||||
parameters = json.load(pf)
|
parameters = json.load(pf)
|
||||||
if os.path.exists(LOCAL_PARAMETERS_FILE):
|
if os.path.exists(LOCAL_PARAMETERS_FILE):
|
||||||
|
|
|
@ -9,6 +9,7 @@ import copy
|
||||||
import datetime
|
import datetime
|
||||||
import errno
|
import errno
|
||||||
import fileinput
|
import fileinput
|
||||||
|
import functools
|
||||||
import io
|
import io
|
||||||
import itertools
|
import itertools
|
||||||
import json
|
import json
|
||||||
|
@ -330,7 +331,8 @@ class YoutubeDL(object):
|
||||||
* when: When to run the postprocessor. Can be one of
|
* when: When to run the postprocessor. Can be one of
|
||||||
pre_process|before_dl|post_process|after_move.
|
pre_process|before_dl|post_process|after_move.
|
||||||
Assumed to be 'post_process' if not given
|
Assumed to be 'post_process' if not given
|
||||||
post_hooks: A list of functions that get called as the final step
|
post_hooks: Deprecated - Register a custom postprocessor instead
|
||||||
|
A list of functions that get called as the final step
|
||||||
for each video file, after all postprocessors have been
|
for each video file, after all postprocessors have been
|
||||||
called. The filename will be passed as the only argument.
|
called. The filename will be passed as the only argument.
|
||||||
progress_hooks: A list of functions that get called on download
|
progress_hooks: A list of functions that get called on download
|
||||||
|
@ -423,7 +425,7 @@ class YoutubeDL(object):
|
||||||
use downloader suggested by extractor if None.
|
use downloader suggested by extractor if None.
|
||||||
compat_opts: Compatibility options. See "Differences in default behavior".
|
compat_opts: Compatibility options. See "Differences in default behavior".
|
||||||
The following options do not work when used through the API:
|
The following options do not work when used through the API:
|
||||||
filename, abort-on-error, multistreams, no-live-chat,
|
filename, abort-on-error, multistreams, no-live-chat, format-sort
|
||||||
no-clean-infojson, no-playlist-metafiles, no-keep-subs.
|
no-clean-infojson, no-playlist-metafiles, no-keep-subs.
|
||||||
Refer __init__.py for their implementation
|
Refer __init__.py for their implementation
|
||||||
progress_template: Dictionary of templates for progress outputs.
|
progress_template: Dictionary of templates for progress outputs.
|
||||||
|
@ -434,8 +436,9 @@ class YoutubeDL(object):
|
||||||
The following parameters are not used by YoutubeDL itself, they are used by
|
The following parameters are not used by YoutubeDL itself, they are used by
|
||||||
the downloader (see yt_dlp/downloader/common.py):
|
the downloader (see yt_dlp/downloader/common.py):
|
||||||
nopart, updatetime, buffersize, ratelimit, throttledratelimit, min_filesize,
|
nopart, updatetime, buffersize, ratelimit, throttledratelimit, min_filesize,
|
||||||
max_filesize, test, noresizebuffer, retries, continuedl, noprogress,
|
max_filesize, test, noresizebuffer, retries, fragment_retries, continuedl,
|
||||||
xattr_set_filesize, external_downloader_args, hls_use_mpegts, http_chunk_size.
|
noprogress, xattr_set_filesize, hls_use_mpegts, http_chunk_size,
|
||||||
|
external_downloader_args.
|
||||||
|
|
||||||
The following options are used by the post processors:
|
The following options are used by the post processors:
|
||||||
prefer_ffmpeg: If False, use avconv instead of ffmpeg if both are available,
|
prefer_ffmpeg: If False, use avconv instead of ffmpeg if both are available,
|
||||||
|
@ -541,13 +544,13 @@ class YoutubeDL(object):
|
||||||
for msg in self.params.get('warnings', []):
|
for msg in self.params.get('warnings', []):
|
||||||
self.report_warning(msg)
|
self.report_warning(msg)
|
||||||
|
|
||||||
if self.params.get('overwrites') is None:
|
if 'overwrites' not in self.params and self.params.get('nooverwrites') is not None:
|
||||||
self.params.pop('overwrites', None)
|
|
||||||
elif self.params.get('nooverwrites') is not None:
|
|
||||||
# nooverwrites was unnecessarily changed to overwrites
|
# nooverwrites was unnecessarily changed to overwrites
|
||||||
# in 0c3d0f51778b153f65c21906031c2e091fcfb641
|
# in 0c3d0f51778b153f65c21906031c2e091fcfb641
|
||||||
# This ensures compatibility with both keys
|
# This ensures compatibility with both keys
|
||||||
self.params['overwrites'] = not self.params['nooverwrites']
|
self.params['overwrites'] = not self.params['nooverwrites']
|
||||||
|
elif self.params.get('overwrites') is None:
|
||||||
|
self.params.pop('overwrites', None)
|
||||||
else:
|
else:
|
||||||
self.params['nooverwrites'] = not self.params['overwrites']
|
self.params['nooverwrites'] = not self.params['overwrites']
|
||||||
|
|
||||||
|
@ -1253,7 +1256,7 @@ class YoutubeDL(object):
|
||||||
self.report_error('no suitable InfoExtractor for URL %s' % url)
|
self.report_error('no suitable InfoExtractor for URL %s' % url)
|
||||||
|
|
||||||
def __handle_extraction_exceptions(func):
|
def __handle_extraction_exceptions(func):
|
||||||
|
@functools.wraps(func)
|
||||||
def wrapper(self, *args, **kwargs):
|
def wrapper(self, *args, **kwargs):
|
||||||
try:
|
try:
|
||||||
return func(self, *args, **kwargs)
|
return func(self, *args, **kwargs)
|
||||||
|
@ -1973,7 +1976,7 @@ class YoutubeDL(object):
|
||||||
elif format_spec in ('mhtml', ): # storyboards extension
|
elif format_spec in ('mhtml', ): # storyboards extension
|
||||||
filter_f = lambda f: f.get('ext') == format_spec and f.get('acodec') == 'none' and f.get('vcodec') == 'none'
|
filter_f = lambda f: f.get('ext') == format_spec and f.get('acodec') == 'none' and f.get('vcodec') == 'none'
|
||||||
else:
|
else:
|
||||||
filter_f = (lambda f: f.get('format_id') == format_spec) # id
|
filter_f = lambda f: f.get('format_id') == format_spec # id
|
||||||
|
|
||||||
def selector_function(ctx):
|
def selector_function(ctx):
|
||||||
formats = list(ctx['formats'])
|
formats = list(ctx['formats'])
|
||||||
|
@ -2453,8 +2456,12 @@ class YoutubeDL(object):
|
||||||
if self.params.get('forceprint') or self.params.get('forcejson'):
|
if self.params.get('forceprint') or self.params.get('forcejson'):
|
||||||
self.post_extract(info_dict)
|
self.post_extract(info_dict)
|
||||||
for tmpl in self.params.get('forceprint', []):
|
for tmpl in self.params.get('forceprint', []):
|
||||||
self.to_stdout(self.evaluate_outtmpl(
|
mobj = re.match(r'\w+(=?)$', tmpl)
|
||||||
f'%({tmpl})s' if re.match(r'\w+$', tmpl) else tmpl, info_dict))
|
if mobj and mobj.group(1):
|
||||||
|
tmpl = f'{tmpl[:-1]} = %({tmpl[:-1]})s'
|
||||||
|
elif mobj:
|
||||||
|
tmpl = '%({})s'.format(tmpl)
|
||||||
|
self.to_stdout(self.evaluate_outtmpl(tmpl, info_dict))
|
||||||
|
|
||||||
print_mandatory('title')
|
print_mandatory('title')
|
||||||
print_mandatory('id')
|
print_mandatory('id')
|
||||||
|
|
|
@ -735,10 +735,6 @@ def _real_main(argv=None):
|
||||||
'geo_bypass_ip_block': opts.geo_bypass_ip_block,
|
'geo_bypass_ip_block': opts.geo_bypass_ip_block,
|
||||||
'warnings': warnings,
|
'warnings': warnings,
|
||||||
'compat_opts': compat_opts,
|
'compat_opts': compat_opts,
|
||||||
# just for deprecation check
|
|
||||||
'autonumber': opts.autonumber or None,
|
|
||||||
'usetitle': opts.usetitle or None,
|
|
||||||
'useid': opts.useid or None,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
with YoutubeDL(ydl_opts) as ydl:
|
with YoutubeDL(ydl_opts) as ydl:
|
||||||
|
|
|
@ -48,8 +48,8 @@ class HttpFD(FileDownloader):
|
||||||
|
|
||||||
is_test = self.params.get('test', False)
|
is_test = self.params.get('test', False)
|
||||||
chunk_size = self._TEST_FILE_SIZE if is_test else (
|
chunk_size = self._TEST_FILE_SIZE if is_test else (
|
||||||
self.params.get('http_chunk_size') or
|
self.params.get('http_chunk_size')
|
||||||
info_dict.get('downloader_options', {}).get('http_chunk_size')
|
or info_dict.get('downloader_options', {}).get('http_chunk_size')
|
||||||
or 0)
|
or 0)
|
||||||
|
|
||||||
ctx.open_mode = 'wb'
|
ctx.open_mode = 'wb'
|
||||||
|
|
|
@ -1678,7 +1678,7 @@ class InfoExtractor(object):
|
||||||
has_multiple_limits = has_limit and has_multiple_fields and not self._get_field_setting(field, 'same_limit')
|
has_multiple_limits = has_limit and has_multiple_fields and not self._get_field_setting(field, 'same_limit')
|
||||||
|
|
||||||
fields = self._get_field_setting(field, 'field') if has_multiple_fields else (field,)
|
fields = self._get_field_setting(field, 'field') if has_multiple_fields else (field,)
|
||||||
limits = limit_text.split(":") if has_multiple_limits else (limit_text,) if has_limit else tuple()
|
limits = limit_text.split(':') if has_multiple_limits else (limit_text,) if has_limit else tuple()
|
||||||
limit_count = len(limits)
|
limit_count = len(limits)
|
||||||
for (i, f) in enumerate(fields):
|
for (i, f) in enumerate(fields):
|
||||||
add_item(f, reverse, closest,
|
add_item(f, reverse, closest,
|
||||||
|
@ -1762,9 +1762,9 @@ class InfoExtractor(object):
|
||||||
if format.get('vbr') is not None and format.get('abr') is not None:
|
if format.get('vbr') is not None and format.get('abr') is not None:
|
||||||
format['tbr'] = format.get('vbr', 0) + format.get('abr', 0)
|
format['tbr'] = format.get('vbr', 0) + format.get('abr', 0)
|
||||||
else:
|
else:
|
||||||
if format.get('vcodec') != "none" and format.get('vbr') is None:
|
if format.get('vcodec') != 'none' and format.get('vbr') is None:
|
||||||
format['vbr'] = format.get('tbr') - format.get('abr', 0)
|
format['vbr'] = format.get('tbr') - format.get('abr', 0)
|
||||||
if format.get('acodec') != "none" and format.get('abr') is None:
|
if format.get('acodec') != 'none' and format.get('abr') is None:
|
||||||
format['abr'] = format.get('tbr') - format.get('vbr', 0)
|
format['abr'] = format.get('tbr') - format.get('vbr', 0)
|
||||||
|
|
||||||
return tuple(self._calculate_field_preference(format, field) for field in self._order)
|
return tuple(self._calculate_field_preference(format, field) for field in self._order)
|
||||||
|
@ -1966,13 +1966,16 @@ class InfoExtractor(object):
|
||||||
'format_note': 'Quality selection URL',
|
'format_note': 'Quality selection URL',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def _report_ignoring_subs(self, name):
|
||||||
|
self.report_warning(bug_reports_message(
|
||||||
|
f'Ignoring subtitle tracks found in the {name} manifest; '
|
||||||
|
'if any subtitle tracks are missing,'
|
||||||
|
), only_once=True)
|
||||||
|
|
||||||
def _extract_m3u8_formats(self, *args, **kwargs):
|
def _extract_m3u8_formats(self, *args, **kwargs):
|
||||||
fmts, subs = self._extract_m3u8_formats_and_subtitles(*args, **kwargs)
|
fmts, subs = self._extract_m3u8_formats_and_subtitles(*args, **kwargs)
|
||||||
if subs:
|
if subs:
|
||||||
self.report_warning(bug_reports_message(
|
self._report_ignoring_subs('HLS')
|
||||||
"Ignoring subtitle tracks found in the HLS manifest; "
|
|
||||||
"if any subtitle tracks are missing,"
|
|
||||||
), only_once=True)
|
|
||||||
return fmts
|
return fmts
|
||||||
|
|
||||||
def _extract_m3u8_formats_and_subtitles(
|
def _extract_m3u8_formats_and_subtitles(
|
||||||
|
@ -2270,10 +2273,7 @@ class InfoExtractor(object):
|
||||||
def _extract_smil_formats(self, *args, **kwargs):
|
def _extract_smil_formats(self, *args, **kwargs):
|
||||||
fmts, subs = self._extract_smil_formats_and_subtitles(*args, **kwargs)
|
fmts, subs = self._extract_smil_formats_and_subtitles(*args, **kwargs)
|
||||||
if subs:
|
if subs:
|
||||||
self.report_warning(bug_reports_message(
|
self._report_ignoring_subs('SMIL')
|
||||||
"Ignoring subtitle tracks found in the SMIL manifest; "
|
|
||||||
"if any subtitle tracks are missing,"
|
|
||||||
), only_once=True)
|
|
||||||
return fmts
|
return fmts
|
||||||
|
|
||||||
def _extract_smil_info(self, smil_url, video_id, fatal=True, f4m_params=None):
|
def _extract_smil_info(self, smil_url, video_id, fatal=True, f4m_params=None):
|
||||||
|
@ -2515,10 +2515,7 @@ class InfoExtractor(object):
|
||||||
def _extract_mpd_formats(self, *args, **kwargs):
|
def _extract_mpd_formats(self, *args, **kwargs):
|
||||||
fmts, subs = self._extract_mpd_formats_and_subtitles(*args, **kwargs)
|
fmts, subs = self._extract_mpd_formats_and_subtitles(*args, **kwargs)
|
||||||
if subs:
|
if subs:
|
||||||
self.report_warning(bug_reports_message(
|
self._report_ignoring_subs('DASH')
|
||||||
"Ignoring subtitle tracks found in the DASH manifest; "
|
|
||||||
"if any subtitle tracks are missing,"
|
|
||||||
), only_once=True)
|
|
||||||
return fmts
|
return fmts
|
||||||
|
|
||||||
def _extract_mpd_formats_and_subtitles(
|
def _extract_mpd_formats_and_subtitles(
|
||||||
|
@ -2542,10 +2539,7 @@ class InfoExtractor(object):
|
||||||
def _parse_mpd_formats(self, *args, **kwargs):
|
def _parse_mpd_formats(self, *args, **kwargs):
|
||||||
fmts, subs = self._parse_mpd_formats_and_subtitles(*args, **kwargs)
|
fmts, subs = self._parse_mpd_formats_and_subtitles(*args, **kwargs)
|
||||||
if subs:
|
if subs:
|
||||||
self.report_warning(bug_reports_message(
|
self._report_ignoring_subs('DASH')
|
||||||
"Ignoring subtitle tracks found in the DASH manifest; "
|
|
||||||
"if any subtitle tracks are missing,"
|
|
||||||
), only_once=True)
|
|
||||||
return fmts
|
return fmts
|
||||||
|
|
||||||
def _parse_mpd_formats_and_subtitles(
|
def _parse_mpd_formats_and_subtitles(
|
||||||
|
@ -2873,10 +2867,7 @@ class InfoExtractor(object):
|
||||||
def _extract_ism_formats(self, *args, **kwargs):
|
def _extract_ism_formats(self, *args, **kwargs):
|
||||||
fmts, subs = self._extract_ism_formats_and_subtitles(*args, **kwargs)
|
fmts, subs = self._extract_ism_formats_and_subtitles(*args, **kwargs)
|
||||||
if subs:
|
if subs:
|
||||||
self.report_warning(bug_reports_message(
|
self._report_ignoring_subs('ISM')
|
||||||
"Ignoring subtitle tracks found in the ISM manifest; "
|
|
||||||
"if any subtitle tracks are missing,"
|
|
||||||
))
|
|
||||||
return fmts
|
return fmts
|
||||||
|
|
||||||
def _extract_ism_formats_and_subtitles(self, ism_url, video_id, ism_id=None, note=None, errnote=None, fatal=True, data=None, headers={}, query={}):
|
def _extract_ism_formats_and_subtitles(self, ism_url, video_id, ism_id=None, note=None, errnote=None, fatal=True, data=None, headers={}, query={}):
|
||||||
|
@ -3136,10 +3127,7 @@ class InfoExtractor(object):
|
||||||
def _extract_akamai_formats(self, *args, **kwargs):
|
def _extract_akamai_formats(self, *args, **kwargs):
|
||||||
fmts, subs = self._extract_akamai_formats_and_subtitles(*args, **kwargs)
|
fmts, subs = self._extract_akamai_formats_and_subtitles(*args, **kwargs)
|
||||||
if subs:
|
if subs:
|
||||||
self.report_warning(bug_reports_message(
|
self._report_ignoring_subs('akamai')
|
||||||
"Ignoring subtitle tracks found in the manifests; "
|
|
||||||
"if any subtitle tracks are missing,"
|
|
||||||
))
|
|
||||||
return fmts
|
return fmts
|
||||||
|
|
||||||
def _extract_akamai_formats_and_subtitles(self, manifest_url, video_id, hosts={}):
|
def _extract_akamai_formats_and_subtitles(self, manifest_url, video_id, hosts={}):
|
||||||
|
|
|
@ -93,7 +93,7 @@ class HiDiveIE(InfoExtractor):
|
||||||
raise ExtractorError(
|
raise ExtractorError(
|
||||||
'%s said: %s' % (self.IE_NAME, restriction), expected=True)
|
'%s said: %s' % (self.IE_NAME, restriction), expected=True)
|
||||||
|
|
||||||
formats, subtitles, parsed_urls = [], {}, {None}
|
formats, parsed_urls = [], {}, {None}
|
||||||
for rendition_id, rendition in settings['renditions'].items():
|
for rendition_id, rendition in settings['renditions'].items():
|
||||||
audio, version, extra = rendition_id.split('_')
|
audio, version, extra = rendition_id.split('_')
|
||||||
m3u8_url = url_or_none(try_get(rendition, lambda x: x['bitrates']['hls']))
|
m3u8_url = url_or_none(try_get(rendition, lambda x: x['bitrates']['hls']))
|
||||||
|
@ -105,14 +105,12 @@ class HiDiveIE(InfoExtractor):
|
||||||
f['language'] = audio
|
f['language'] = audio
|
||||||
f['format_note'] = f'{version}, {extra}'
|
f['format_note'] = f'{version}, {extra}'
|
||||||
formats.extend(frmt)
|
formats.extend(frmt)
|
||||||
|
|
||||||
self._extract_subtitles_from_rendition(rendition, subtitles, parsed_urls)
|
|
||||||
self._sort_formats(formats)
|
self._sort_formats(formats)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'id': video_id,
|
'id': video_id,
|
||||||
'title': video_id,
|
'title': video_id,
|
||||||
'subtitles': self.extract_subtitles(url, video_id, title, key, subtitles, parsed_urls),
|
'subtitles': self.extract_subtitles(url, video_id, title, key, parsed_urls),
|
||||||
'formats': formats,
|
'formats': formats,
|
||||||
'series': title,
|
'series': title,
|
||||||
'season_number': int_or_none(
|
'season_number': int_or_none(
|
||||||
|
|
|
@ -37,7 +37,7 @@ class MinotoIE(InfoExtractor):
|
||||||
'filesize': int_or_none(fmt.get('filesize')),
|
'filesize': int_or_none(fmt.get('filesize')),
|
||||||
'width': int_or_none(fmt.get('width')),
|
'width': int_or_none(fmt.get('width')),
|
||||||
'height': int_or_none(fmt.get('height')),
|
'height': int_or_none(fmt.get('height')),
|
||||||
'codecs': parse_codecs(fmt.get('codecs')),
|
**parse_codecs(fmt.get('codecs')),
|
||||||
})
|
})
|
||||||
self._sort_formats(formats)
|
self._sort_formats(formats)
|
||||||
|
|
||||||
|
|
|
@ -108,7 +108,7 @@ class PalcoMP3ArtistIE(PalcoMP3BaseIE):
|
||||||
}
|
}
|
||||||
name'''
|
name'''
|
||||||
|
|
||||||
@ classmethod
|
@classmethod
|
||||||
def suitable(cls, url):
|
def suitable(cls, url):
|
||||||
return False if PalcoMP3IE._match_valid_url(url) else super(PalcoMP3ArtistIE, cls).suitable(url)
|
return False if PalcoMP3IE._match_valid_url(url) else super(PalcoMP3ArtistIE, cls).suitable(url)
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import functools
|
||||||
from threading import Lock
|
from threading import Lock
|
||||||
from .utils import supports_terminal_sequences, TERMINAL_SEQUENCES
|
from .utils import supports_terminal_sequences, TERMINAL_SEQUENCES
|
||||||
|
|
||||||
|
@ -49,6 +50,7 @@ class MultilinePrinter(MultilinePrinterBase):
|
||||||
self._HAVE_FULLCAP = supports_terminal_sequences(self.stream)
|
self._HAVE_FULLCAP = supports_terminal_sequences(self.stream)
|
||||||
|
|
||||||
def lock(func):
|
def lock(func):
|
||||||
|
@functools.wraps(func)
|
||||||
def wrapper(self, *args, **kwargs):
|
def wrapper(self, *args, **kwargs):
|
||||||
with self._movelock:
|
with self._movelock:
|
||||||
return func(self, *args, **kwargs)
|
return func(self, *args, **kwargs)
|
||||||
|
|
|
@ -971,9 +971,6 @@ def parseOpts(overrideArguments=None):
|
||||||
dest='batchfile', metavar='FILE',
|
dest='batchfile', metavar='FILE',
|
||||||
help="File containing URLs to download ('-' for stdin), one URL per line. "
|
help="File containing URLs to download ('-' for stdin), one URL per line. "
|
||||||
"Lines starting with '#', ';' or ']' are considered as comments and ignored")
|
"Lines starting with '#', ';' or ']' are considered as comments and ignored")
|
||||||
filesystem.add_option(
|
|
||||||
'--id', default=False,
|
|
||||||
action='store_true', dest='useid', help=optparse.SUPPRESS_HELP)
|
|
||||||
filesystem.add_option(
|
filesystem.add_option(
|
||||||
'-P', '--paths',
|
'-P', '--paths',
|
||||||
metavar='[TYPES:]PATH', dest='paths', default={}, type='str',
|
metavar='[TYPES:]PATH', dest='paths', default={}, type='str',
|
||||||
|
@ -1029,18 +1026,6 @@ def parseOpts(overrideArguments=None):
|
||||||
'--trim-filenames', '--trim-file-names', metavar='LENGTH',
|
'--trim-filenames', '--trim-file-names', metavar='LENGTH',
|
||||||
dest='trim_file_name', default=0, type=int,
|
dest='trim_file_name', default=0, type=int,
|
||||||
help='Limit the filename length (excluding extension) to the specified number of characters')
|
help='Limit the filename length (excluding extension) to the specified number of characters')
|
||||||
filesystem.add_option(
|
|
||||||
'--auto-number',
|
|
||||||
action='store_true', dest='autonumber', default=False,
|
|
||||||
help=optparse.SUPPRESS_HELP)
|
|
||||||
filesystem.add_option(
|
|
||||||
'--title',
|
|
||||||
action='store_true', dest='usetitle', default=False,
|
|
||||||
help=optparse.SUPPRESS_HELP)
|
|
||||||
filesystem.add_option(
|
|
||||||
'--literal', default=False,
|
|
||||||
action='store_true', dest='usetitle',
|
|
||||||
help=optparse.SUPPRESS_HELP)
|
|
||||||
filesystem.add_option(
|
filesystem.add_option(
|
||||||
'-w', '--no-overwrites',
|
'-w', '--no-overwrites',
|
||||||
action='store_false', dest='overwrites', default=None,
|
action='store_false', dest='overwrites', default=None,
|
||||||
|
@ -1625,7 +1610,7 @@ def parseOpts(overrideArguments=None):
|
||||||
argv = configs['system'] + configs['user'] + configs['home'] + configs['portable'] + configs['custom'] + configs['command-line']
|
argv = configs['system'] + configs['user'] + configs['home'] + configs['portable'] + configs['custom'] + configs['command-line']
|
||||||
opts, args = parser.parse_args(argv)
|
opts, args = parser.parse_args(argv)
|
||||||
if opts.verbose:
|
if opts.verbose:
|
||||||
for label in ('System', 'User', 'Portable', 'Home', 'Custom', 'Command-line'):
|
for label in ('Command-line', 'Custom', 'Portable', 'Home', 'User', 'System'):
|
||||||
key = label.lower()
|
key = label.lower()
|
||||||
if paths.get(key):
|
if paths.get(key):
|
||||||
write_string(f'[debug] {label} config file: {paths[key]}\n')
|
write_string(f'[debug] {label} config file: {paths[key]}\n')
|
||||||
|
|
|
@ -5,7 +5,7 @@ from yt_dlp.extractor.common import InfoExtractor
|
||||||
|
|
||||||
|
|
||||||
# ℹ️ Instructions on making extractors can be found at:
|
# ℹ️ Instructions on making extractors can be found at:
|
||||||
# 🔗 https://github.com/ytdl-org/youtube-dl#adding-support-for-a-new-site
|
# 🔗 https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#adding-support-for-a-new-site
|
||||||
|
|
||||||
class SamplePluginIE(InfoExtractor):
|
class SamplePluginIE(InfoExtractor):
|
||||||
_WORKING = False
|
_WORKING = False
|
||||||
|
|
Loading…
Reference in a new issue