Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[extractor/niconicochannelplus] Add extractor #5686

Merged
merged 30 commits into from Sep 23, 2023
Merged

[extractor/niconicochannelplus] Add extractor #5686

merged 30 commits into from Sep 23, 2023

Conversation

pzhlkj6612
Copy link
Contributor

@pzhlkj6612 pzhlkj6612 commented Dec 1, 2022

IMPORTANT: PRs without the template will be CLOSED

Description of your pull request and other information

Hello! This PR will fix #2537 .

Commit Message

For VoD, live and list in channels on "Niconico Channel Plus" (Japanese: ニコニコチャンネルプラス).

Thanks to the following people who provided useful information:

Added extractor arguments

  • niconicochannelplus:max_comments

Generated entries in "supportedsites.md"

  • NiconicoChannelPlus: ニコニコチャンネルプラス
  • NiconicoChannelPlus:​channel:lives: ニコニコチャンネルプラス - チャンネル - ライブリスト. nicochannel.jp/channel/lives
  • NiconicoChannelPlus:​channel:videos: ニコニコチャンネルプラス - チャンネル - 動画リスト. nicochannel.jp/channel/videos

Why Todo and Warning for DVR (Digital Video Recorder)

Code

class NiconicoChannelPlusIE(NiconicoChannelPlusBaseIE):
    # ...
    def _get_live_status_and_session_id(self, content_code, data_json):
        # ...
        elif video_type == 'live':
            # ...
            if not live_finished_at:
                # ...
            else:
                live_status = 'was_live'
                payload = {'broadcast_type': 'dvr'}

                # TODO: do ['video']['allow_dvr_flg'] and ['video']['convert_to_vod_flg'] affect DVR?

                video_allow_dvr_flg = traverse_obj(data_json, ('video', 'allow_dvr_flg'))
                video_convert_to_vod_flg = traverse_obj(data_json, ('video', 'convert_to_vod_flg'))

                self.report_warning(
                    f'Live was ended, there might be no videos for download. '
                    f'allow_dvr_flg = {video_allow_dvr_flg}, convert_to_vod_flg = {video_convert_to_vod_flg}.',
                    video_id=content_code)

Reason

I've read the TypeScript code of nicochannel.jp (thanks to source map), but still can't understand the meaning of the two fields "allow_dvr_flg" and "convert_to_vod_flg". They are not always "True" and DVR is not always working, so I guess there might be a connection between them.

On nicochannel.jp, however, almost all ended live streams are finally converted to VoD, so it's not possible to test DVR at any time. Thus, I left a TODO there.

How to test DVR and help to finish this extractor

Let's generate a list of scheduled live streams.

Script for finding scheduled live events
#!/bin/bash


set -e
set -o pipefail
set -u


curl --version >/dev/null
jq --version >/dev/null
sort --version >/dev/null


offset_second=$((2 * 604800))  # in two weeks

now_second=$(date '+%s');
limit_second=$((${now_second} + ${offset_second}));

echo '| START (UTC) | URL | ".video.allow_dvr_flg" | ".video.convert_to_vod_flg" |';
echo '| - |:- |:-:|:-:|';

channel_list="$(curl -sS 'https://nfc-api.nicochannel.jp/fc/content_providers/channels')";

<<<"${channel_list}" jq --compact-output '.data.content_providers | .[]' | \
  while read -r channel_info; do
    fanclub_site_id="$(jq --raw-output '.id' <<<"${channel_info}")";
    domain="$(jq --raw-output '.domain' <<<"${channel_info}")";

    live_page_info="$(
      curl -sS "https://nfc-api.nicochannel.jp/fc/fanclub_sites/${fanclub_site_id}/live_pages?page=1&live_type=2&per_page=1" | \
      jq '.data' \
    )";

    if [[ "${live_page_info}" != 'null' ]]; then
      live_list="$(jq '.video_pages.list' <<<"${live_page_info}")";

      if [[ "${live_list}" != '[]' ]]; then
        content_code="$(jq --raw-output '.[0].content_code' <<<"${live_list}")";

        live_info="$(
          curl -sS "https://nfc-api.nicochannel.jp/fc/video_pages/${content_code}" | \
          jq '.data.video_page' \
        )";

        live_scheduled_start_at="$(jq --raw-output '.live_scheduled_start_at' <<<"${live_info}")";

        video_allow_dvr_flg="$(jq --raw-output '.video.allow_dvr_flg' <<<"${live_info}")";
        [[ "${video_allow_dvr_flg}" == 'true' ]] && video_allow_dvr_flg='';

        video_convert_to_vod_flg="$(jq --raw-output '.video.convert_to_vod_flg' <<<"${live_info}")";
        [[ "${video_convert_to_vod_flg}" == 'true' ]] && video_convert_to_vod_flg='';

        live_scheduled_start_at_second=$(date --date="${live_scheduled_start_at}" '+%s');

        if [[ ${now_second} -le ${live_scheduled_start_at_second} ]]; then
          if [[ ${live_scheduled_start_at_second} -le ${limit_second} ]]; then
            echo "| ${live_scheduled_start_at} | [${content_code}](${domain}/live/${content_code}) | ${video_allow_dvr_flg} | ${video_convert_to_vod_flg} |";
          fi;
        fi;
      fi;
    fi;
  done | \
    sort;

Live streams in the upcoming two weeks:

Table of live events
START (UTC) URL ".video.allow_dvr_flg" ".video.convert_to_vod_flg"
2022-12-01 13:30:00 sm35xp7vyjGMJ3MZk56F7bYZ
2022-12-01 14:00:00 smPgjHN8ED9TQ9Ffcwfhc7Ye
2022-12-02 11:00:00 smbHFdjfChMtjmtygHjFcbE6
2022-12-02 13:00:00 sm5kR4VPQbfSUURVUhTPe4wN
2022-12-03 11:00:00 smohSrfNmif8Fu5Dn3eKaxK
2022-12-03 11:00:00 smQPtPgUuNUQSCoLS9mmKZJH
2022-12-03 11:40:00 sm7HmwkKYwqtRMjxgaTsiCc
2022-12-03 12:00:00 sm5GTERTJUmGgWWeYFm7d5hP
2022-12-03 13:30:00 smmHPDrAewDr67oGBVn4oHsL
2022-12-03 23:00:00 smX5DtfjAGTRHuTvitA4dTUM false
2022-12-06 11:55:00 smKVPvyiArDAPtvtuPVLzw9h
2022-12-07 11:55:00 smEaGErgtAq7UokxWpPrZfaS
2022-12-07 12:00:00 smmhYhaq4ZkQ7B4eZoPz8W9J
2022-12-07 14:00:00 smdKGQW8pnUAqzyF8PCWpN3g false
2022-12-07 22:00:00 smfjQa66ek8dSBEmaB2stuti false
2022-12-08 12:00:00 smRqrn43Vc4hgX4qnFzbWSvP
2022-12-09 12:00:00 smeuKJfV5hBTWygiVp7HiJM8
2022-12-10 11:30:00 smussYDMCFfVxavvrQ75HYEA
2022-12-10 13:00:00 smwCfsc9DhWxZurLcYKfNuFk false
2022-12-13 11:00:00 smkanFKe5vVJHzxUDwu5XxTe false
2022-12-15 12:00:00 sm8MgKuXc9UyPUaL4Xap9QLD

After a live ends:

  • Re-open the live in your browser to see whether the video is playable.
  • At the same time, launch yt-dlp to download the video and see the log.

Passed Automatic Tests

Run of "pytest"
====================================== test session starts ======================================
platform win32 -- Python 3.8.10, pytest-7.2.0, pluggy-1.0.0 -- ...\python.exe
cachedir: .pytest_cache
rootdir: ...\yt-dlp, configfile: setup.cfg
plugins: asyncio-0.20.1, cov-4.0.0, requests-mock-1.10.0
asyncio: mode=strict
collected 5324 items / 5303 deselected / 21 selected

test/test_download.py::TestDownload::test_NiconicoChannelPlus PASSED                       [  4%]
test/test_download.py::TestDownload::test_NiconicoChannelPlusChannelLives PASSED           [  9%]
test/test_download.py::TestDownload::test_NiconicoChannelPlusChannelLives_1 PASSED         [ 14%]
test/test_download.py::TestDownload::test_NiconicoChannelPlusChannelLives_2 PASSED         [ 19%]
test/test_download.py::TestDownload::test_NiconicoChannelPlusChannelLives_all PASSED       [ 23%] 
test/test_download.py::TestDownload::test_NiconicoChannelPlusChannelVideos PASSED          [ 28%]
test/test_download.py::TestDownload::test_NiconicoChannelPlusChannelVideos_1 PASSED        [ 33%]
test/test_download.py::TestDownload::test_NiconicoChannelPlusChannelVideos_2 PASSED        [ 38%]
test/test_download.py::TestDownload::test_NiconicoChannelPlusChannelVideos_3 PASSED        [ 42%]
test/test_download.py::TestDownload::test_NiconicoChannelPlusChannelVideos_4 PASSED        [ 47%]
test/test_download.py::TestDownload::test_NiconicoChannelPlusChannelVideos_5 PASSED        [ 52%]
test/test_download.py::TestDownload::test_NiconicoChannelPlusChannelVideos_6 PASSED        [ 57%]
test/test_download.py::TestDownload::test_NiconicoChannelPlusChannelVideos_7 PASSED        [ 61%]
test/test_download.py::TestDownload::test_NiconicoChannelPlusChannelVideos_8 PASSED        [ 66%]
test/test_download.py::TestDownload::test_NiconicoChannelPlusChannelVideos_9 PASSED        [ 71%]
test/test_download.py::TestDownload::test_NiconicoChannelPlusChannelVideos_all PASSED      [ 76%] 
test/test_download.py::TestDownload::test_NiconicoChannelPlus_1 SKIPPED (404 Not Found)    [ 80%] 
test/test_download.py::TestDownload::test_NiconicoChannelPlus_2 SKIPPED (404 Not Found)    [ 85%]
test/test_download.py::TestDownload::test_NiconicoChannelPlus_3 SKIPPED (404 Not Found)    [ 90%] 
test/test_download.py::TestDownload::test_NiconicoChannelPlus_4 SKIPPED (The downloade...) [ 95%] 
test/test_download.py::TestDownload::test_NiconicoChannelPlus_all PASSED                   [100%] 

==================================== short test summary info ==================================== 
SKIPPED [3] test\test_download.py:87: 404 Not Found
SKIPPED [1] test\test_download.py:87: The downloaded file is empty
======================== 17 passed, 4 skipped, 5303 deselected in 36.38s ========================

Well, how to test the "only_matching" test cases?

Tests in the real world

ペイトン尚未の「クリエイト倶楽部」 (https://nicochannel.jp/paytoncreate/lives)

Full log of test for "paytoncreate/lives"
[debug] Command-line config: ['--verbose', '--list-formats', '--list-thumbnails', '--extractor-args', 'niconicochannelplus:max_comments=6', '--get-comments', 'https://nicochannel.jp/paytoncreate/lives']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8 (No ANSI), error utf-8 (No ANSI), screen utf-8 (No ANSI)
[debug] yt-dlp version 2022.11.11 [8b644025b]
[debug] Lazy loading extractors is disabled
[debug] Plugins: ['SamplePluginIE', 'SamplePluginPP']
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-10-10.0.19044-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: none
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.09.24, mutagen-1.46.0, sqlite3-2.6.0, websockets-10.4
[debug] Proxy map: {}
[debug] Loaded 1734 extractors
[debug] [NiconicoChannelPlus:channel:lives] Extracting URL: https://nicochannel.jp/paytoncreate/lives
[NiconicoChannelPlus:channel:lives] channels/paytoncreate: Fetching channel list
[NiconicoChannelPlus:channel:lives] fanclub_sites/26: Fetching channel info
[download] Downloading playlist: ペイトン尚未の「クリエイト倶楽部」-lives
[NiconicoChannelPlus:channel:lives] paytoncreate/lives: Getting channel info (page 1)
paytoncreate-lives has no thumbnails
[NiconicoChannelPlus:channel:lives] Playlist ペイトン尚未の「クリエイト倶楽部」-lives: Downloading 9 items of 9
[download] Downloading item 1 of 9
[NiconicoChannelPlus] channels/paytoncreate: Fetching channel list
[debug] [NiconicoChannelPlus] Extracting URL: https://nicochannel.jp/paytoncreate/video/smGmH7uHU6jF8rZobuBspqMG
[NiconicoChannelPlus] fanclub_sites/26: Fetching channel info
[NiconicoChannelPlus] smGmH7uHU6jF8rZobuBspqMG: Fetching video page info
[NiconicoChannelPlus] smGmH7uHU6jF8rZobuBspqMG: video_type=vod, live_status=was_live
[NiconicoChannelPlus] smGmH7uHU6jF8rZobuBspqMG/session: Getting session id
[NiconicoChannelPlus] smGmH7uHU6jF8rZobuBspqMG: Downloading m3u8 information
[debug] Sort order given by extractor: tbr, vcodec, acodec
[debug] Formats sorted by: hasvid, ie_pref, tbr, vcodec, acodec, lang, quality, res, fps, hdr:12(7), channels, filesize, fs_approx, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[NiconicoChannelPlus] smGmH7uHU6jF8rZobuBspqMG/comments: Getting comment token
[NiconicoChannelPlus] smGmH7uHU6jF8rZobuBspqMG/comments: Fetching comments
[NiconicoChannelPlus] Extracted 6 comments
[info] Available thumbnails for smGmH7uHU6jF8rZobuBspqMG:
ID Width   Height  URL
0  unknown unknown https://nicochannel.jp/public_html/contents/video_pages/1222/thumbnail_path
[info] Available formats for smGmH7uHU6jF8rZobuBspqMG:
ID   EXT RESOLUTION FPS | FILESIZE   TBR PROTO | VCODEC        VBR ACODEC    ABR
--------------------------------------------------------------------------------
4255 mp4 1280x720    30 | ~2.98GiB 4256k m3u8  | avc1.64001f 4256k mp4a.40.2  0k
[download] Downloading item 2 of 9
[debug] [NiconicoChannelPlus] Extracting URL: https://nicochannel.jp/paytoncreate/video/smYNnXGpALvzy8V5bNUPE4h3
[NiconicoChannelPlus] channels/paytoncreate: Fetching channel list
[NiconicoChannelPlus] fanclub_sites/26: Fetching channel info
[NiconicoChannelPlus] smYNnXGpALvzy8V5bNUPE4h3: Fetching video page info
[NiconicoChannelPlus] smYNnXGpALvzy8V5bNUPE4h3: video_type=vod, live_status=was_live
[NiconicoChannelPlus] smYNnXGpALvzy8V5bNUPE4h3/session: Getting session id
[NiconicoChannelPlus] smYNnXGpALvzy8V5bNUPE4h3: Downloading m3u8 information
[debug] Sort order given by extractor: tbr, vcodec, acodec
[debug] Formats sorted by: hasvid, ie_pref, tbr, vcodec, acodec, lang, quality, res, fps, hdr:12(7), channels, filesize, fs_approx, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[NiconicoChannelPlus] smYNnXGpALvzy8V5bNUPE4h3/comments: Getting comment token
[NiconicoChannelPlus] smYNnXGpALvzy8V5bNUPE4h3/comments: Fetching comments
[NiconicoChannelPlus] Extracted 6 comments
[info] Available thumbnails for smYNnXGpALvzy8V5bNUPE4h3:
ID Width   Height  URL
0  unknown unknown https://nicochannel.jp/public_html/contents/video_pages/1686/thumbnail_path
[info] Available formats for smYNnXGpALvzy8V5bNUPE4h3:
ID   EXT RESOLUTION FPS | FILESIZE   TBR PROTO | VCODEC        VBR ACODEC    ABR
--------------------------------------------------------------------------------
4256 mp4 1280x720    30 | ~3.11GiB 4256k m3u8  | avc1.64001f 4256k mp4a.40.2  0k
[download] Downloading item 3 of 9
[debug] [NiconicoChannelPlus] Extracting URL: https://nicochannel.jp/paytoncreate/video/smhvQGrHHMeAw5PwsKTjCEPU
[NiconicoChannelPlus] channels/paytoncreate: Fetching channel list
[NiconicoChannelPlus] fanclub_sites/26: Fetching channel info
[NiconicoChannelPlus] smhvQGrHHMeAw5PwsKTjCEPU: Fetching video page info
[NiconicoChannelPlus] smhvQGrHHMeAw5PwsKTjCEPU: video_type=vod, live_status=was_live
[NiconicoChannelPlus] smhvQGrHHMeAw5PwsKTjCEPU/session: Getting session id
[NiconicoChannelPlus] smhvQGrHHMeAw5PwsKTjCEPU: Downloading m3u8 information
[debug] Sort order given by extractor: tbr, vcodec, acodec
[debug] Formats sorted by: hasvid, ie_pref, tbr, vcodec, acodec, lang, quality, res, fps, hdr:12(7), channels, filesize, fs_approx, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[NiconicoChannelPlus] smhvQGrHHMeAw5PwsKTjCEPU/comments: Getting comment token
[NiconicoChannelPlus] smhvQGrHHMeAw5PwsKTjCEPU/comments: Fetching comments
[NiconicoChannelPlus] Extracted 6 comments
[info] Available thumbnails for smhvQGrHHMeAw5PwsKTjCEPU:
ID Width   Height  URL
0  unknown unknown https://nicochannel.jp/public_html/contents/video_pages/3494/thumbnail_path
[info] Available formats for smhvQGrHHMeAw5PwsKTjCEPU:
ID   EXT RESOLUTION FPS | FILESIZE   TBR PROTO | VCODEC        VBR ACODEC    ABR
--------------------------------------------------------------------------------
4255 mp4 1280x720    30 | ~3.16GiB 4256k m3u8  | avc1.64001f 4256k mp4a.40.2  0k
[download] Downloading item 4 of 9
[debug] [NiconicoChannelPlus] Extracting URL: https://nicochannel.jp/paytoncreate/video/smvHnNVFQ6ycVMddmBQyPw2b
[NiconicoChannelPlus] channels/paytoncreate: Fetching channel list
[NiconicoChannelPlus] fanclub_sites/26: Fetching channel info
[NiconicoChannelPlus] smvHnNVFQ6ycVMddmBQyPw2b: Fetching video page info
[NiconicoChannelPlus] smvHnNVFQ6ycVMddmBQyPw2b: video_type=vod, live_status=was_live
[NiconicoChannelPlus] smvHnNVFQ6ycVMddmBQyPw2b/session: Getting session id
[NiconicoChannelPlus] smvHnNVFQ6ycVMddmBQyPw2b: Downloading m3u8 information
[debug] Sort order given by extractor: tbr, vcodec, acodec
[debug] Formats sorted by: hasvid, ie_pref, tbr, vcodec, acodec, lang, quality, res, fps, hdr:12(7), channels, filesize, fs_approx, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[NiconicoChannelPlus] smvHnNVFQ6ycVMddmBQyPw2b/comments: Getting comment token
[NiconicoChannelPlus] smvHnNVFQ6ycVMddmBQyPw2b/comments: Fetching comments
[NiconicoChannelPlus] Extracted 6 comments
[info] Available thumbnails for smvHnNVFQ6ycVMddmBQyPw2b:
ID Width   Height  URL
0  unknown unknown https://nicochannel.jp/public_html/contents/video_pages/4071/thumbnail_path
[info] Available formats for smvHnNVFQ6ycVMddmBQyPw2b:
ID   EXT RESOLUTION FPS | FILESIZE   TBR PROTO | VCODEC        VBR ACODEC    ABR
--------------------------------------------------------------------------------
4255 mp4 1280x720    30 | ~3.17GiB 4255k m3u8  | avc1.64001f 4255k mp4a.40.2  0k
[download] Downloading item 5 of 9
[debug] [NiconicoChannelPlus] Extracting URL: https://nicochannel.jp/paytoncreate/video/smzq2fiPPng6i25pPsa9dJL7
[NiconicoChannelPlus] channels/paytoncreate: Fetching channel list
[NiconicoChannelPlus] fanclub_sites/26: Fetching channel info
[NiconicoChannelPlus] smzq2fiPPng6i25pPsa9dJL7: Fetching video page info
[NiconicoChannelPlus] smzq2fiPPng6i25pPsa9dJL7: video_type=vod, live_status=was_live
[NiconicoChannelPlus] smzq2fiPPng6i25pPsa9dJL7/session: Getting session id
[NiconicoChannelPlus] smzq2fiPPng6i25pPsa9dJL7: Downloading m3u8 information
[debug] Sort order given by extractor: tbr, vcodec, acodec
[debug] Formats sorted by: hasvid, ie_pref, tbr, vcodec, acodec, lang, quality, res, fps, hdr:12(7), channels, filesize, fs_approx, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[NiconicoChannelPlus] smzq2fiPPng6i25pPsa9dJL7/comments: Getting comment token
[NiconicoChannelPlus] smzq2fiPPng6i25pPsa9dJL7/comments: Fetching comments
[NiconicoChannelPlus] Extracted 6 comments
[info] Available thumbnails for smzq2fiPPng6i25pPsa9dJL7:
ID Width   Height  URL
0  unknown unknown https://nicochannel.jp/public_html/contents/video_pages/4950/thumbnail_path
[info] Available formats for smzq2fiPPng6i25pPsa9dJL7:
ID   EXT RESOLUTION FPS | FILESIZE   TBR PROTO | VCODEC        VBR ACODEC    ABR
--------------------------------------------------------------------------------
4255 mp4 1280x720    30 | ~3.20GiB 4255k m3u8  | avc1.64001f 4255k mp4a.40.2  0k
[download] Downloading item 6 of 9
[debug] [NiconicoChannelPlus] Extracting URL: https://nicochannel.jp/paytoncreate/video/smNzpui5N4U7VLUATaBa2ev
[NiconicoChannelPlus] channels/paytoncreate: Fetching channel list
[NiconicoChannelPlus] fanclub_sites/26: Fetching channel info
[NiconicoChannelPlus] smNzpui5N4U7VLUATaBa2ev: Fetching video page info
[NiconicoChannelPlus] smNzpui5N4U7VLUATaBa2ev: video_type=vod, live_status=was_live
[NiconicoChannelPlus] smNzpui5N4U7VLUATaBa2ev/session: Getting session id
[NiconicoChannelPlus] smNzpui5N4U7VLUATaBa2ev: Downloading m3u8 information
[debug] Sort order given by extractor: tbr, vcodec, acodec
[debug] Formats sorted by: hasvid, ie_pref, tbr, vcodec, acodec, lang, quality, res, fps, hdr:12(7), channels, filesize, fs_approx, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[NiconicoChannelPlus] smNzpui5N4U7VLUATaBa2ev/comments: Getting comment token
[NiconicoChannelPlus] smNzpui5N4U7VLUATaBa2ev/comments: Fetching comments
[NiconicoChannelPlus] Extracted 6 comments
[info] Available thumbnails for smNzpui5N4U7VLUATaBa2ev:
ID Width   Height  URL
0  unknown unknown https://nicochannel.jp/public_html/contents/video_pages/6498/thumbnail_path
[info] Available formats for smNzpui5N4U7VLUATaBa2ev:
ID   EXT RESOLUTION FPS | FILESIZE   TBR PROTO | VCODEC        VBR ACODEC    ABR
--------------------------------------------------------------------------------
4254 mp4 1280x720    30 | ~3.15GiB 4255k m3u8  | avc1.64001f 4255k mp4a.40.2  0k
[download] Downloading item 7 of 9
[debug] [NiconicoChannelPlus] Extracting URL: https://nicochannel.jp/paytoncreate/video/smebziEa2TMSnDx6FyFh2Rom
[NiconicoChannelPlus] channels/paytoncreate: Fetching channel list
[NiconicoChannelPlus] fanclub_sites/26: Fetching channel info
[NiconicoChannelPlus] smebziEa2TMSnDx6FyFh2Rom: Fetching video page info
[NiconicoChannelPlus] smebziEa2TMSnDx6FyFh2Rom: video_type=vod, live_status=was_live
[NiconicoChannelPlus] smebziEa2TMSnDx6FyFh2Rom/session: Getting session id
[NiconicoChannelPlus] smebziEa2TMSnDx6FyFh2Rom: Downloading m3u8 information
[debug] Sort order given by extractor: tbr, vcodec, acodec
[debug] Formats sorted by: hasvid, ie_pref, tbr, vcodec, acodec, lang, quality, res, fps, hdr:12(7), channels, filesize, fs_approx, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[NiconicoChannelPlus] smebziEa2TMSnDx6FyFh2Rom/comments: Getting comment token
[NiconicoChannelPlus] smebziEa2TMSnDx6FyFh2Rom/comments: Fetching comments
[NiconicoChannelPlus] Extracted 6 comments
[info] Available thumbnails for smebziEa2TMSnDx6FyFh2Rom:
ID Width   Height  URL
0  unknown unknown https://nicochannel.jp/public_html/contents/video_pages/7354/thumbnail_path
[info] Available formats for smebziEa2TMSnDx6FyFh2Rom:
ID   EXT RESOLUTION FPS | FILESIZE   TBR PROTO | VCODEC        VBR ACODEC    ABR
--------------------------------------------------------------------------------
4255 mp4 1280x720    30 | ~3.18GiB 4255k m3u8  | avc1.64001f 4255k mp4a.40.2  0k
[download] Downloading item 8 of 9
[debug] [NiconicoChannelPlus] Extracting URL: https://nicochannel.jp/paytoncreate/video/smKTXWUeen879ngfTYKunHtQ
[NiconicoChannelPlus] channels/paytoncreate: Fetching channel list
[NiconicoChannelPlus] fanclub_sites/26: Fetching channel info
[NiconicoChannelPlus] smKTXWUeen879ngfTYKunHtQ: Fetching video page info
[NiconicoChannelPlus] smKTXWUeen879ngfTYKunHtQ: video_type=vod, live_status=was_live
[NiconicoChannelPlus] smKTXWUeen879ngfTYKunHtQ/session: Getting session id
[NiconicoChannelPlus] smKTXWUeen879ngfTYKunHtQ: Downloading m3u8 information
[debug] Sort order given by extractor: tbr, vcodec, acodec
[debug] Formats sorted by: hasvid, ie_pref, tbr, vcodec, acodec, lang, quality, res, fps, hdr:12(7), channels, filesize, fs_approx, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[NiconicoChannelPlus] smKTXWUeen879ngfTYKunHtQ/comments: Getting comment token
[NiconicoChannelPlus] smKTXWUeen879ngfTYKunHtQ/comments: Fetching comments
[NiconicoChannelPlus] Extracted 6 comments
[info] Available thumbnails for smKTXWUeen879ngfTYKunHtQ:
ID Width   Height  URL
0  unknown unknown https://nicochannel.jp/public_html/contents/video_pages/8246/thumbnail_path
[info] Available formats for smKTXWUeen879ngfTYKunHtQ:
ID   EXT RESOLUTION FPS | FILESIZE   TBR PROTO | VCODEC        VBR ACODEC    ABR
--------------------------------------------------------------------------------
4255 mp4 1280x720    30 | ~3.31GiB 4255k m3u8  | avc1.64001f 4255k mp4a.40.2  0k
[download] Downloading item 9 of 9
[debug] [NiconicoChannelPlus] Extracting URL: https://nicochannel.jp/paytoncreate/video/smPK382yLyH3TG2mYZHEGrbB
[NiconicoChannelPlus] channels/paytoncreate: Fetching channel list
[NiconicoChannelPlus] fanclub_sites/26: Fetching channel info
[NiconicoChannelPlus] smPK382yLyH3TG2mYZHEGrbB: Fetching video page info
[NiconicoChannelPlus] smPK382yLyH3TG2mYZHEGrbB: video_type=vod, live_status=was_live
[NiconicoChannelPlus] smPK382yLyH3TG2mYZHEGrbB/session: Getting session id
[NiconicoChannelPlus] smPK382yLyH3TG2mYZHEGrbB: Downloading m3u8 information
[debug] Sort order given by extractor: tbr, vcodec, acodec
[debug] Formats sorted by: hasvid, ie_pref, tbr, vcodec, acodec, lang, quality, res, fps, hdr:12(7), channels, filesize, fs_approx, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[NiconicoChannelPlus] smPK382yLyH3TG2mYZHEGrbB/comments: Getting comment token
[NiconicoChannelPlus] smPK382yLyH3TG2mYZHEGrbB/comments: Fetching comments
[NiconicoChannelPlus] Extracted 6 comments
[info] Available thumbnails for smPK382yLyH3TG2mYZHEGrbB:
ID Width   Height  URL
0  unknown unknown https://nicochannel.jp/public_html/contents/video_pages/9053/thumbnail_path
[info] Available formats for smPK382yLyH3TG2mYZHEGrbB:
ID   EXT RESOLUTION FPS | FILESIZE   TBR PROTO | VCODEC        VBR ACODEC    ABR
--------------------------------------------------------------------------------
4255 mp4 1280x720    30 | ~3.37GiB 4255k m3u8  | avc1.64001f 4255k mp4a.40.2  0k
[download] Finished downloading playlist: ペイトン尚未の「クリエイト倶楽部」-lives

内田秀のカフェでちょっとお話しませんか? (https://nicochannel.jp/uchi-cafe/videos?vodType=2&sort=-number_of_vod_views)

Full log of test for "uchi-cafe/videos?vodType=2&sort=-number_of_vod_views"
[debug] Command-line config: ['--verbose', '--list-formats', '--list-thumbnails', '--extractor-args', 'niconicochannelplus:max_comments=12', '--get-comments', 'https://nicochannel.jp/uchi-cafe/videos?vodType=2&sort=-number_of_vod_views']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8 (No ANSI), error utf-8 (No ANSI), screen utf-8 (No ANSI)
[debug] yt-dlp version 2022.11.11 [8b644025b]
[debug] Lazy loading extractors is disabled
[debug] Plugins: ['SamplePluginIE', 'SamplePluginPP']
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-10-10.0.19044-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: none
[debug] Optional libraries: Cryptodome-3.15.0, brotli-1.0.9, certifi-2022.09.24, mutagen-1.46.0, sqlite3-2.6.0, websockets-10.4
[debug] Proxy map: {}
[debug] Loaded 1734 extractors
[debug] [NiconicoChannelPlus:channel:videos] Extracting URL: https://nicochannel.jp/uchi-cafe/videos?vodType=2&sort=-number_of_vod_views
[NiconicoChannelPlus:channel:videos] channels/uchi-cafe: Fetching channel list
[NiconicoChannelPlus:channel:videos] fanclub_sites/68: Fetching channel info
[download] Downloading playlist: 内田秀のカフェでちょっとお話しませんか?-videos
[NiconicoChannelPlus:channel:videos] uchi-cafe/videos: Getting channel info (page 1)
uchi-cafe-videos has no thumbnails
[NiconicoChannelPlus:channel:videos] Playlist 内田秀のカフェでちょっとお話しませんか?-videos: Downloading 9 items of 9
[debug] [NiconicoChannelPlus] Extracting URL: https://nicochannel.jp/uchi-cafe/video/smsSEjnX2XtKTdzwnF9W5mT7
[download] Downloading item 1 of 9
[NiconicoChannelPlus] channels/uchi-cafe: Fetching channel list
[NiconicoChannelPlus] fanclub_sites/68: Fetching channel info
[NiconicoChannelPlus] smsSEjnX2XtKTdzwnF9W5mT7: Fetching video page info
[NiconicoChannelPlus] smsSEjnX2XtKTdzwnF9W5mT7: video_type=vod, live_status=was_live
[NiconicoChannelPlus] smsSEjnX2XtKTdzwnF9W5mT7/session: Getting session id
[NiconicoChannelPlus] smsSEjnX2XtKTdzwnF9W5mT7: Downloading m3u8 information
[debug] Sort order given by extractor: tbr, vcodec, acodec
[debug] Formats sorted by: hasvid, ie_pref, tbr, vcodec, acodec, lang, quality, res, fps, hdr:12(7), channels, filesize, fs_approx, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[NiconicoChannelPlus] smsSEjnX2XtKTdzwnF9W5mT7/comments: Getting comment token
[NiconicoChannelPlus] smsSEjnX2XtKTdzwnF9W5mT7/comments: Fetching comments
[NiconicoChannelPlus] Extracted 12 comments
[info] Available thumbnails for smsSEjnX2XtKTdzwnF9W5mT7:
ID Width   Height  URL
0  unknown unknown https://nicochannel.jp/public_html/contents/video_pages/3814/thumbnail_path
[info] Available formats for smsSEjnX2XtKTdzwnF9W5mT7:
ID   EXT RESOLUTION FPS |   FILESIZE   TBR PROTO | VCODEC        VBR ACODEC    ABR
----------------------------------------------------------------------------------
884  mp4 426x240     30 | ~519.90MiB  885k m3u8  | avc1.640015  885k mp4a.40.2  0k
1191 mp4 640x360     30 | ~700.11MiB 1191k m3u8  | avc1.64001e 1191k mp4a.40.2  0k
6298 mp4 1920x1080   30 | ~  3.61GiB 6299k m3u8  | avc1.640028 6299k mp4a.40.2  0k
[download] Downloading item 2 of 9
[debug] [NiconicoChannelPlus] Extracting URL: https://nicochannel.jp/uchi-cafe/video/smPWh74rZT7CCfoEqS84Vdbi
[NiconicoChannelPlus] channels/uchi-cafe: Fetching channel list
[NiconicoChannelPlus] fanclub_sites/68: Fetching channel info
[NiconicoChannelPlus] smPWh74rZT7CCfoEqS84Vdbi: Fetching video page info
[NiconicoChannelPlus] smPWh74rZT7CCfoEqS84Vdbi: video_type=vod, live_status=was_live
[NiconicoChannelPlus] smPWh74rZT7CCfoEqS84Vdbi/session: Getting session id
[NiconicoChannelPlus] smPWh74rZT7CCfoEqS84Vdbi: Downloading m3u8 information
[debug] Sort order given by extractor: tbr, vcodec, acodec
[debug] Formats sorted by: hasvid, ie_pref, tbr, vcodec, acodec, lang, quality, res, fps, hdr:12(7), channels, filesize, fs_approx, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[NiconicoChannelPlus] smPWh74rZT7CCfoEqS84Vdbi/comments: Getting comment token
[NiconicoChannelPlus] smPWh74rZT7CCfoEqS84Vdbi/comments: Fetching comments
[NiconicoChannelPlus] Extracted 12 comments
[info] Available thumbnails for smPWh74rZT7CCfoEqS84Vdbi:
ID Width   Height  URL
0  unknown unknown https://nicochannel.jp/public_html/contents/video_pages/4596/thumbnail_path
[info] Available formats for smPWh74rZT7CCfoEqS84Vdbi:
ID   EXT RESOLUTION FPS |   FILESIZE   TBR PROTO | VCODEC        VBR ACODEC    ABR
----------------------------------------------------------------------------------
884  mp4 426x240     30 | ~583.63MiB  884k m3u8  | avc1.640015  884k mp4a.40.2  0k
1191 mp4 640x360     30 | ~786.02MiB 1191k m3u8  | avc1.64001e 1191k mp4a.40.2  0k
6299 mp4 1920x1080   30 | ~  4.06GiB 6299k m3u8  | avc1.640028 6299k mp4a.40.2  0k
[download] Downloading item 3 of 9
[debug] [NiconicoChannelPlus] Extracting URL: https://nicochannel.jp/uchi-cafe/video/smFvV6EEZkpuyvvpMVVL8SXJ
[NiconicoChannelPlus] channels/uchi-cafe: Fetching channel list
[NiconicoChannelPlus] fanclub_sites/68: Fetching channel info
[NiconicoChannelPlus] smFvV6EEZkpuyvvpMVVL8SXJ: Fetching video page info
[NiconicoChannelPlus] smFvV6EEZkpuyvvpMVVL8SXJ: video_type=vod, live_status=was_live
[NiconicoChannelPlus] smFvV6EEZkpuyvvpMVVL8SXJ/session: Getting session id
[NiconicoChannelPlus] smFvV6EEZkpuyvvpMVVL8SXJ: Downloading m3u8 information
[debug] Sort order given by extractor: tbr, vcodec, acodec
[debug] Formats sorted by: hasvid, ie_pref, tbr, vcodec, acodec, lang, quality, res, fps, hdr:12(7), channels, filesize, fs_approx, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[NiconicoChannelPlus] smFvV6EEZkpuyvvpMVVL8SXJ/comments: Getting comment token
[NiconicoChannelPlus] smFvV6EEZkpuyvvpMVVL8SXJ/comments: Fetching comments
[NiconicoChannelPlus] Extracted 12 comments
[info] Available thumbnails for smFvV6EEZkpuyvvpMVVL8SXJ:
ID Width   Height  URL
0  unknown unknown https://nicochannel.jp/public_html/contents/video_pages/5453/thumbnail_path
[info] Available formats for smFvV6EEZkpuyvvpMVVL8SXJ:
ID   EXT RESOLUTION FPS |   FILESIZE   TBR PROTO | VCODEC        VBR ACODEC    ABR
----------------------------------------------------------------------------------
884  mp4 426x240     30 | ~411.31MiB  885k m3u8  | avc1.640015  885k mp4a.40.2  0k
1191 mp4 640x360     30 | ~553.95MiB 1191k m3u8  | avc1.64001e 1191k mp4a.40.2  0k
6299 mp4 1920x1080   30 | ~  2.86GiB 6300k m3u8  | avc1.640028 6300k mp4a.40.2  0k
[download] Downloading item 4 of 9
[debug] [NiconicoChannelPlus] Extracting URL: https://nicochannel.jp/uchi-cafe/video/smnh8fE99c3pjQEz5S8XaNwW
[NiconicoChannelPlus] channels/uchi-cafe: Fetching channel list
[NiconicoChannelPlus] fanclub_sites/68: Fetching channel info
[NiconicoChannelPlus] smnh8fE99c3pjQEz5S8XaNwW: Fetching video page info
[NiconicoChannelPlus] smnh8fE99c3pjQEz5S8XaNwW: video_type=vod, live_status=was_live
[NiconicoChannelPlus] smnh8fE99c3pjQEz5S8XaNwW/session: Getting session id
[NiconicoChannelPlus] smnh8fE99c3pjQEz5S8XaNwW: Downloading m3u8 information
[debug] Sort order given by extractor: tbr, vcodec, acodec
[debug] Formats sorted by: hasvid, ie_pref, tbr, vcodec, acodec, lang, quality, res, fps, hdr:12(7), channels, filesize, fs_approx, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[NiconicoChannelPlus] smnh8fE99c3pjQEz5S8XaNwW/comments: Getting comment token
[NiconicoChannelPlus] smnh8fE99c3pjQEz5S8XaNwW/comments: Fetching comments
[NiconicoChannelPlus] Extracted 12 comments
[info] Available thumbnails for smnh8fE99c3pjQEz5S8XaNwW:
ID Width   Height  URL
0  unknown unknown https://nicochannel.jp/public_html/contents/video_pages/3204/thumbnail_path
[info] Available formats for smnh8fE99c3pjQEz5S8XaNwW:
ID   EXT RESOLUTION FPS |   FILESIZE   TBR PROTO | VCODEC        VBR ACODEC    ABR
----------------------------------------------------------------------------------
884  mp4 426x240     30 | ~544.46MiB  885k m3u8  | avc1.640015  885k mp4a.40.2  0k
1191 mp4 640x360     30 | ~733.11MiB 1191k m3u8  | avc1.64001e 1191k mp4a.40.2  0k
6299 mp4 1920x1080   30 | ~  3.79GiB 6300k m3u8  | avc1.640028 6300k mp4a.40.2  0k
[download] Downloading item 5 of 9
[debug] [NiconicoChannelPlus] Extracting URL: https://nicochannel.jp/uchi-cafe/video/sm2kLRfHV3zeHMCTu9Hh6ANh
[NiconicoChannelPlus] channels/uchi-cafe: Fetching channel list
[NiconicoChannelPlus] fanclub_sites/68: Fetching channel info
[NiconicoChannelPlus] sm2kLRfHV3zeHMCTu9Hh6ANh: Fetching video page info
[NiconicoChannelPlus] sm2kLRfHV3zeHMCTu9Hh6ANh: video_type=vod, live_status=was_live
[NiconicoChannelPlus] sm2kLRfHV3zeHMCTu9Hh6ANh/session: Getting session id
[NiconicoChannelPlus] sm2kLRfHV3zeHMCTu9Hh6ANh: Downloading m3u8 information
[debug] Sort order given by extractor: tbr, vcodec, acodec
[debug] Formats sorted by: hasvid, ie_pref, tbr, vcodec, acodec, lang, quality, res, fps, hdr:12(7), channels, filesize, fs_approx, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[NiconicoChannelPlus] sm2kLRfHV3zeHMCTu9Hh6ANh/comments: Getting comment token
[NiconicoChannelPlus] sm2kLRfHV3zeHMCTu9Hh6ANh/comments: Fetching comments
[NiconicoChannelPlus] Extracted 12 comments
[info] Available thumbnails for sm2kLRfHV3zeHMCTu9Hh6ANh:
ID Width   Height  URL
0  unknown unknown https://nicochannel.jp/public_html/contents/video_pages/2264/thumbnail_path
[info] Available formats for sm2kLRfHV3zeHMCTu9Hh6ANh:
ID   EXT RESOLUTION FPS |   FILESIZE   TBR PROTO | VCODEC        VBR ACODEC    ABR
----------------------------------------------------------------------------------
884  mp4 426x240     30 | ~575.83MiB  885k m3u8  | avc1.640015  885k mp4a.40.2  0k
1189 mp4 640x360     30 | ~774.35MiB 1190k m3u8  | avc1.64001e 1190k mp4a.40.2  0k
6298 mp4 1920x1080   30 | ~  4.00GiB 6298k m3u8  | avc1.640028 6298k mp4a.40.2  0k
[download] Downloading item 6 of 9
[debug] [NiconicoChannelPlus] Extracting URL: https://nicochannel.jp/uchi-cafe/video/smhc9iQh5scbsZW3Z8kon7SF
[NiconicoChannelPlus] channels/uchi-cafe: Fetching channel list
[NiconicoChannelPlus] fanclub_sites/68: Fetching channel info
[NiconicoChannelPlus] smhc9iQh5scbsZW3Z8kon7SF: Fetching video page info
[NiconicoChannelPlus] smhc9iQh5scbsZW3Z8kon7SF: video_type=vod, live_status=was_live
[NiconicoChannelPlus] smhc9iQh5scbsZW3Z8kon7SF/session: Getting session id
[NiconicoChannelPlus] smhc9iQh5scbsZW3Z8kon7SF: Downloading m3u8 information
[debug] Sort order given by extractor: tbr, vcodec, acodec
[debug] Formats sorted by: hasvid, ie_pref, tbr, vcodec, acodec, lang, quality, res, fps, hdr:12(7), channels, filesize, fs_approx, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[NiconicoChannelPlus] smhc9iQh5scbsZW3Z8kon7SF/comments: Getting comment token
[NiconicoChannelPlus] smhc9iQh5scbsZW3Z8kon7SF/comments: Fetching comments
[NiconicoChannelPlus] Extracted 12 comments
[info] Available thumbnails for smhc9iQh5scbsZW3Z8kon7SF:
ID Width   Height  URL
0  unknown unknown https://nicochannel.jp/public_html/contents/video_pages/1165/thumbnail_path
[info] Available formats for smhc9iQh5scbsZW3Z8kon7SF:
ID   EXT RESOLUTION FPS | FILESIZE   TBR PROTO | VCODEC        VBR ACODEC    ABR
--------------------------------------------------------------------------------
4255 mp4 1280x720    30 | ~2.81GiB 4256k m3u8  | avc1.64001f 4256k mp4a.40.2  0k
[download] Downloading item 7 of 9
[debug] [NiconicoChannelPlus] Extracting URL: https://nicochannel.jp/uchi-cafe/video/smKfUXbV9pg8qbvXuStt6dWR
[NiconicoChannelPlus] channels/uchi-cafe: Fetching channel list
[NiconicoChannelPlus] fanclub_sites/68: Fetching channel info
[NiconicoChannelPlus] smKfUXbV9pg8qbvXuStt6dWR: Fetching video page info
[NiconicoChannelPlus] smKfUXbV9pg8qbvXuStt6dWR: video_type=vod, live_status=was_live
[NiconicoChannelPlus] smKfUXbV9pg8qbvXuStt6dWR/session: Getting session id
[NiconicoChannelPlus] smKfUXbV9pg8qbvXuStt6dWR: Downloading m3u8 information
[debug] Sort order given by extractor: tbr, vcodec, acodec
[debug] Formats sorted by: hasvid, ie_pref, tbr, vcodec, acodec, lang, quality, res, fps, hdr:12(7), channels, filesize, fs_approx, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[NiconicoChannelPlus] smKfUXbV9pg8qbvXuStt6dWR/comments: Getting comment token
[NiconicoChannelPlus] smKfUXbV9pg8qbvXuStt6dWR/comments: Fetching comments
[NiconicoChannelPlus] Extracted 12 comments
[info] Available thumbnails for smKfUXbV9pg8qbvXuStt6dWR:
ID Width   Height  URL
0  unknown unknown https://nicochannel.jp/public_html/contents/video_pages/1999/thumbnail_path
[info] Available formats for smKfUXbV9pg8qbvXuStt6dWR:
ID   EXT RESOLUTION FPS |   FILESIZE   TBR PROTO | VCODEC        VBR ACODEC    ABR
----------------------------------------------------------------------------------
884  mp4 426x240     30 | ~498.17MiB  885k m3u8  | avc1.640015  885k mp4a.40.2  0k
1191 mp4 640x360     30 | ~670.89MiB 1191k m3u8  | avc1.64001e 1191k mp4a.40.2  0k
6298 mp4 1920x1080   30 | ~  3.46GiB 6299k m3u8  | avc1.640028 6299k mp4a.40.2  0k
[download] Downloading item 8 of 9
[debug] [NiconicoChannelPlus] Extracting URL: https://nicochannel.jp/uchi-cafe/video/smM7PZTfXv4rNuLda3HJGfFR
[NiconicoChannelPlus] channels/uchi-cafe: Fetching channel list
[NiconicoChannelPlus] fanclub_sites/68: Fetching channel info
[NiconicoChannelPlus] smM7PZTfXv4rNuLda3HJGfFR: Fetching video page info
[NiconicoChannelPlus] smM7PZTfXv4rNuLda3HJGfFR: video_type=vod, live_status=was_live
[NiconicoChannelPlus] smM7PZTfXv4rNuLda3HJGfFR/session: Getting session id
[NiconicoChannelPlus] smM7PZTfXv4rNuLda3HJGfFR: Downloading m3u8 information
[debug] Sort order given by extractor: tbr, vcodec, acodec
[debug] Formats sorted by: hasvid, ie_pref, tbr, vcodec, acodec, lang, quality, res, fps, hdr:12(7), channels, filesize, fs_approx, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[NiconicoChannelPlus] smM7PZTfXv4rNuLda3HJGfFR/comments: Getting comment token
[NiconicoChannelPlus] smM7PZTfXv4rNuLda3HJGfFR/comments: Fetching comments
[NiconicoChannelPlus] Extracted 12 comments
[info] Available thumbnails for smM7PZTfXv4rNuLda3HJGfFR:
ID Width   Height  URL
0  unknown unknown https://nicochannel.jp/public_html/contents/video_pages/7975/thumbnail_path
[info] Available formats for smM7PZTfXv4rNuLda3HJGfFR:
ID   EXT RESOLUTION FPS |   FILESIZE   TBR PROTO | VCODEC        VBR ACODEC    ABR
----------------------------------------------------------------------------------
884  mp4 426x240     30 | ~543.11MiB  885k m3u8  | avc1.640015  885k mp4a.40.2  0k
1191 mp4 640x360     30 | ~731.53MiB 1192k m3u8  | avc1.64001e 1192k mp4a.40.2  0k
6299 mp4 1920x1080   30 | ~  3.78GiB 6299k m3u8  | avc1.640028 6299k mp4a.40.2  0k
[download] Downloading item 9 of 9
[debug] [NiconicoChannelPlus] Extracting URL: https://nicochannel.jp/uchi-cafe/video/sm8NhzQBXT9LVr3w9ksbCtxi
[NiconicoChannelPlus] channels/uchi-cafe: Fetching channel list
[NiconicoChannelPlus] fanclub_sites/68: Fetching channel info
[NiconicoChannelPlus] sm8NhzQBXT9LVr3w9ksbCtxi: Fetching video page info
[NiconicoChannelPlus] sm8NhzQBXT9LVr3w9ksbCtxi: video_type=vod, live_status=was_live
[NiconicoChannelPlus] sm8NhzQBXT9LVr3w9ksbCtxi/session: Getting session id
[NiconicoChannelPlus] sm8NhzQBXT9LVr3w9ksbCtxi: Downloading m3u8 information
[debug] Sort order given by extractor: tbr, vcodec, acodec
[debug] Formats sorted by: hasvid, ie_pref, tbr, vcodec, acodec, lang, quality, res, fps, hdr:12(7), channels, filesize, fs_approx, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[NiconicoChannelPlus] sm8NhzQBXT9LVr3w9ksbCtxi/comments: Getting comment token
[NiconicoChannelPlus] sm8NhzQBXT9LVr3w9ksbCtxi/comments: Fetching comments
[NiconicoChannelPlus] Extracted 12 comments
[info] Available thumbnails for sm8NhzQBXT9LVr3w9ksbCtxi:
ID Width   Height  URL
0  unknown unknown https://nicochannel.jp/public_html/contents/video_pages/8860/thumbnail_path
[info] Available formats for sm8NhzQBXT9LVr3w9ksbCtxi:
ID   EXT RESOLUTION FPS |   FILESIZE   TBR PROTO | VCODEC        VBR ACODEC    ABR
----------------------------------------------------------------------------------
885  mp4 426x240     30 | ~613.46MiB  885k m3u8  | avc1.640015  885k mp4a.40.2  0k
1192 mp4 640x360     30 | ~826.22MiB 1192k m3u8  | avc1.64001e 1192k mp4a.40.2  0k
6299 mp4 1920x1080   30 | ~  4.26GiB 6299k m3u8  | avc1.640028 6299k mp4a.40.2  0k
[download] Finished downloading playlist: 内田秀のカフェでちょっとお話しませんか?-videos


Template

Before submitting a pull request make sure you have:

In order to be accepted and merged into yt-dlp each piece of code must be in public domain or released under Unlicense. Check one of the following options:

  • I am the original author of this code and I am willing to release it under Unlicense
  • I am not the original author of this code but it is in public domain or released under Unlicense (provide reliable evidence)

What is the purpose of your pull request?

For VoD, live and list in channels on "Niconico Channel Plus" (Japanese: ニコニコチャンネルプラス).
https://portal.nicochannel.jp/

Thanks to the following people who provided useful information:

- lokilin, raised a request in issue 2537;
- 雷兰濑 (railannad), raised a request in issue 4366 of streamlink/streamlink;
- Trung0246, analyzed HTTP data in issue 4366 of streamlink/streamlink;
- Lesmiscore, made cross-reference between the above two issues.
Copy link
Contributor

@Lesmiscore Lesmiscore left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM Thanks!

yt_dlp/extractor/niconicochannelplus.py Outdated Show resolved Hide resolved
@pzhlkj6612 pzhlkj6612 marked this pull request as draft December 1, 2022 15:28
@pukkandan
Copy link
Member

Well, how to test the "only_matching" test cases?

They are covered by the core test suite

@pukkandan pukkandan added the site-request Request to support a new website label Dec 1, 2022
@pzhlkj6612
Copy link
Contributor Author

Well, how to test the "only_matching" test cases?

They are covered by the core test suite

Thanks, I've found "./test/test_all_urls.py::TestAllURLsMatching::test_no_duplicates".

@pzhlkj6612 pzhlkj6612 marked this pull request as ready for review December 1, 2022 16:28
@pzhlkj6612 pzhlkj6612 marked this pull request as draft December 13, 2022 00:36
@pzhlkj6612 pzhlkj6612 marked this pull request as ready for review December 13, 2022 11:50
@pzhlkj6612 pzhlkj6612 marked this pull request as draft December 14, 2022 04:39
@pzhlkj6612 pzhlkj6612 marked this pull request as ready for review December 14, 2022 08:04
yt_dlp/extractor/niconicochannelplus.py Show resolved Hide resolved
yt_dlp/extractor/niconicochannelplus.py Outdated Show resolved Hide resolved
yt_dlp/extractor/niconicochannelplus.py Outdated Show resolved Hide resolved
@pzhlkj6612 pzhlkj6612 marked this pull request as draft December 14, 2022 15:37
@pzhlkj6612 pzhlkj6612 marked this pull request as ready for review December 14, 2022 15:56
@pzhlkj6612 pzhlkj6612 marked this pull request as draft December 15, 2022 16:42
@pzhlkj6612
Copy link
Contributor Author

I have a question.

I didn't specify the "ext" when calling "_extract_m3u8_formats()"; the following code sets an "ext" for the format:

if not f.get('ext'):
f['ext'] = 'm4a' if f.get('vcodec') == 'none' else 'mp4'

And then use the "ext" in the selected format for further works (e.g., download):

yt-dlp/yt_dlp/YoutubeDL.py

Lines 2751 to 2753 in c733555

for fmt, chapter in itertools.product(formats_to_download, requested_ranges):
new_info = self._copy_infodict(info_dict)
new_info.update(fmt)

My question is: should I call "_extract_m3u8_formats()" with "ext" specified? reason?

Thank you in advance.

@pzhlkj6612
Copy link
Contributor Author

I found that the "ext" field of "info_dict" is ignored. So... have I misunderstood the docs? It says "additionally, it must contain either a formats entry or a url one":

Additionally, it must contain either a formats entry or a url one:
formats: A list of dictionaries for each format available, ordered
from worst to best quality.

url: Final video URL.
ext: Video filename extension.
format: The video format, defaults to ext (used for --get-format)
player_url: SWF Player URL (used for rtmpdump).

Hmm, the "ext" field in the top layer of "info_dict" is only for "url" and useless for "formats", right?

@pukkandan
Copy link
Member

Hmm, the "ext" field in the top layer of "info_dict" is only for "url" and useless for "formats", right?

Yes

My question is: should I call "_extract_m3u8_formats()" with "ext" specified? reason?

Does -F show correct ext without it? There was some situations where it does not - I don't remember exactly when

@pzhlkj6612
Copy link
Contributor Author

@pukkandan , thanks for your reply.

Hmm, the "ext" field in the top layer of "info_dict" is only for "url" and useless for "formats", right?

Yes

I'm going to remove the wrong top-layer "ext".

My question is: should I call "_extract_m3u8_formats()" with "ext" specified? reason?

Does -F show correct ext without it?

Yes, "-F (--list-formats)" gave me the correct extension name ".mp4".

... There was some situations where it does not - I don't remember exactly when

OK.

The "ext" field does not work with "formats" and will be ignored.
@pzhlkj6612 pzhlkj6612 marked this pull request as ready for review December 16, 2022 13:10
@pzhlkj6612 pzhlkj6612 marked this pull request as draft February 2, 2023 14:05
@pzhlkj6612
Copy link
Contributor Author

Hi, @pukkandan ! Thank you for your review. I've modified the code based on your suggestion. Please re-review it

Copy link
Member

@bashonly bashonly left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly just some nitpicks, though metadata extraction should be non-fatal

Some of the suggestions may require a merge from master

yt_dlp/extractor/niconicochannelplus.py Outdated Show resolved Hide resolved
yt_dlp/extractor/niconicochannelplus.py Outdated Show resolved Hide resolved
yt_dlp/extractor/niconicochannelplus.py Outdated Show resolved Hide resolved
yt_dlp/extractor/niconicochannelplus.py Outdated Show resolved Hide resolved
yt_dlp/extractor/niconicochannelplus.py Outdated Show resolved Hide resolved
yt_dlp/extractor/niconicochannelplus.py Outdated Show resolved Hide resolved
yt_dlp/extractor/niconicochannelplus.py Outdated Show resolved Hide resolved
yt_dlp/extractor/niconicochannelplus.py Outdated Show resolved Hide resolved
yt_dlp/extractor/niconicochannelplus.py Outdated Show resolved Hide resolved
yt_dlp/extractor/niconicochannelplus.py Outdated Show resolved Hide resolved
@bashonly bashonly added the pending-fixes PR has had changes requested label Sep 17, 2023
pzhlkj6612 and others added 8 commits September 22, 2023 00:59
Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
… fatal

Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
…and safely

Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
yt_dlp/extractor/niconicochannelplus.py Outdated Show resolved Hide resolved
yt_dlp/extractor/niconicochannelplus.py Outdated Show resolved Hide resolved
@bashonly bashonly added pending-review PR needs a review and removed pending-fixes PR has had changes requested labels Sep 22, 2023
pzhlkj6612 and others added 2 commits September 23, 2023 10:29
Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
Co-authored-by: bashonly <88596187+bashonly@users.noreply.github.com>
README.md Outdated Show resolved Hide resolved
@bashonly bashonly removed the pending-review PR needs a review label Sep 23, 2023
@bashonly bashonly merged commit 698beb9 into yt-dlp:master Sep 23, 2023
16 checks passed
@pzhlkj6612 pzhlkj6612 deleted the niconicochannelplus branch September 24, 2023 00:24
aalsuwaidi pushed a commit to aalsuwaidi/yt-dlp that referenced this pull request Apr 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
site-request Request to support a new website
Projects
None yet
Development

Successfully merging this pull request may close these issues.

niconico new channel need support
5 participants