plugins.tf1: Permission insuffisante
Checklist
- [X] This is a plugin issue and not a different kind of issue
- [X] I have read the contribution guidelines
- [X] I have checked the list of open and recently closed plugin issues
- [X] I have checked the commit log of the master branch
Streamlink version
Latest stable release
Description
Hi Not sure exactly what means "permissions insuffisante" but sounds like something changed. Only LCI is still working
Debug log
/usr/local/bin/streamlink --loglevel debug "http://www.tf1.fr/tmc/direct" best [cli][info] streamlink is running as root! Be careful!
[cli][debug] OS: Linux-5.15.0-73-generic-x86_64-with-glibc2.29
[cli][debug] Python: 3.8.10
[cli][debug] Streamlink: 5.5.1
[cli][debug] Dependencies:
[cli][debug] certifi: 2019.11.28
[cli][debug] isodate: 0.6.0
[cli][debug] lxml: 4.8.0
[cli][debug] pycountry: 22.3.5
[cli][debug] pycryptodome: 3.9.9
[cli][debug] PySocks: 1.7.1
[cli][debug] requests: 2.27.1
[cli][debug] urllib3: 1.26.13
[cli][debug] websocket-client: 1.3.2
[cli][debug] Arguments:
[cli][debug] url=http://www.tf1.fr/tmc/direct
[cli][debug] stream=['best']
[cli][debug] --loglevel=debug
[cli][info] Found matching plugin tf1 for URL http://www.tf1.fr/tmc/direct
[plugins.tf1][debug] Found channel tmc (L_TMC)
[plugins.tf1][error] Permission insuffisante
error: No playable streams found on this URL: http://www.tf1.fr/tmc/direct
confirmed for me. probably related to the creation of the subscription to tf1max (none free)
I dont think so because apparently tf1 max's purpose is to propose an ad-free streaming experience as well as HD streaming. I could watch just fine on their site with just a free login
It's not because of this. It now requires a JWT token in order to get access to their metadata. This token can be found by doing a single request to their API on post login, to this website : https://www.tf1.fr/token/gigya/web. It'll need a token based on the Gigya signature (UIDSignature on Gigya login -> https://compte.tf1.fr/accounts.login).
It's not because of this. It now requires a JWT token in order to get access to their metadata. This token can be found by doing a single request to their API on post login, to this website : https://www.tf1.fr/token/gigya/web. It'll need a token based on the Gigya signature (UIDSignature on Gigya login -> https://compte.tf1.fr/accounts.login).
Do you think you would know how to update the current plugin ?
It's not because of this. It now requires a JWT token in order to get access to their metadata. This token can be found by doing a single request to their API on post login, to this website : https://www.tf1.fr/token/gigya/web. It'll need a token based on the Gigya signature (UIDSignature on Gigya login -> https://compte.tf1.fr/accounts.login).
Do you think you would know how to update the current plugin ?
It would need a POST to https://compte.tf1.fr/accounts.login
loginID= *email* &password= *password* &sessionExpiration=31536000&targetEnv=jssdk&include=identities-all%2Cdata%2Cprofile%2Cpreferences%2C&includeUserInfo=true&loginMode=standard&lang=fr&APIKey=3_hWgJdARhz_7l1oOp3a8BDLoR9cuWZpUaKG4aqF7gum9_iK3uTZ2VlDBl8ANf8FVk&sdk=js_latest&authMode=cookie&pageURL=https%3A%2F%2Fwww.tf1.fr%2F&sdkBuild=13987&format=json
You then grab the UIDSignature and the UID from the Gigya response (either from the accounts login, either from the userInfo, UID + UIDSignature).
You then POST to https://www.tf1.fr/token/gigya/web, in order for this request to work you will also need to create a timestamp in EPOCH/UNIX format (something like 1687780538)
{"uid":" *UID* ","signature":" *UIDSignature* ","timestamp":,"consent_ids":["1","2","3","4","10001","10003","10005","10007","10013","10015","10017","10019","10009","10011","13002","13001","10004","10014","10016","10018","10020","10010","10012","10006","10008"]
You grab the "token" from the JSON answer.
After that, you can do a GET request to https://mediainfo.tf1.fr/mediainfocombo/L_TF1?pver=5010000&context=MYTF1&topDomain=unknown&platform=web&device=desktop&os=windows&osVersion=10.0&playerVersion=5.10.0&productName=mytf1&productVersion=2.59.2&browser=firefox&browserVersion=114 with a specific header Authorization : Bearer token.
Answer will be in "delivery" -> "url"
if you fork the current plugin, let me know, thanks :)
You grab the "token" from the JSON answer.
After that, you can do a GET request to https://mediainfo.tf1.fr/mediainfocombo/L_TF1?pver=5010000&context=MYTF1&topDomain=unknown&platform=web&device=desktop&os=windows&osVersion=10.0&playerVersion=5.10.0&productName=mytf1&productVersion=2.59.2&browser=firefox&browserVersion=114 with a specific header Authorization : Bearer token.
Answer will be in "delivery" -> "url"
Hi @BellezaEmporium I try your advice, got the token and got the url into delivery. But if I add it into a stremalink command to record the direct, I will receive an output with always the same video which is not the direct but a show which have been aired 3 or 4 hours before.
This is the log :
D:\youtube-dl\TF1>streamlink --output "TF1-{time:%Y-%m-%d_%H-%M-%S}.ts" --hls-duration 00:01:00 --loglevel debug https://live-tf1-das.cdn-0.diff.tf1.fr/[Redacted]/out/v1/dfe36f90964947129902b842b83e65b4/index.mpd best
[cli][debug] OS: Windows 10
[cli][debug] Python: 3.11.3
[cli][debug] Streamlink: 5.5.1
[cli][debug] Dependencies:
[cli][debug] certifi: 2023.5.7
[cli][debug] isodate: 0.6.1
[cli][debug] lxml: 4.9.2
[cli][debug] pycountry: 22.3.5
[cli][debug] pycryptodome: 3.18.0
[cli][debug] PySocks: 1.7.1
[cli][debug] requests: 2.31.0
[cli][debug] urllib3: 2.0.2
[cli][debug] websocket-client: 1.5.2
[cli][debug] Arguments:
[cli][debug] url=https://live-tf1-das.cdn-0.diff.tf1.fr/[Redacted]/out/v1/dfe36f90964947129902b842b83e65b4/index.mpd
[cli][debug] stream=['best']
[cli][debug] --loglevel=debug
[cli][debug] --player="C:\Program Files\Sans installation\mpv\mpv.exe"
[cli][debug] --output=TF1-{time:%Y-%m-%d_%H-%M-%S}.ts
[cli][debug] --hls-duration=60
[cli][debug] --ffmpeg-ffmpeg=C:\Program Files\Streamlink\ffmpeg\ffmpeg.exe
[cli][info] Found matching plugin dash for URL https://live-tf1-das.cdn-0.diff.tf1.fr/[Redacted]/out/v1/dfe36f90964947129902b842b83e65b4/index.mpd
[plugins.dash][debug] URL=https://live-tf1-das.cdn-0.diff.tf1.fr/[Redacted]/out/v1/dfe36f90964947129902b842b83e65b4/index.mpd; params={}
[utils.l10n][debug] Language code: fr_FR
[stream.dash][debug] Available languages for DASH audio streams: mul, sme, fra (using: mul)
[cli][info] Available streams: 234p (worst), 360p, 576p_alt, 576p, 720p (best)
[cli][info] Opening stream: 720p (dash)
[cli][info] Writing output to
D:\youtube-dl\TF1\TF1-2023-07-01_19-36-51.ts
[cli][debug] Checking file output
[stream.dash][debug] Opening DASH reader for: ('1474100', '1485523442', '1') - video/mp4
[stream.dash][debug] Opening DASH reader for: ('1474100', '1299661462', '6') - audio/mp4
[stream.dash][debug] video/mp4 segment initialization: downloading (2023-07-01T13:19:14.375000Z / 2023-07-01T17:36:51.113869Z)
[stream.dash_manifest][debug] Generating segment timeline for dynamic playlist: ('1474100', '1485523442', '1')
[stream.dash][debug] audio/mp4 segment initialization: downloading (2023-07-01T13:19:14.375000Z / 2023-07-01T17:36:51.116867Z)
[stream.dash_manifest][debug] Generating segment timeline for dynamic playlist: ('1474100', '1299661462', '6')
[stream.dash][debug] Reloading manifest ('1474100', '1485523442', '1')
[stream.dash][debug] Reloading manifest ('1474100', '1299661462', '6')
[stream.dash][debug] video/mp4 segment 1474256: downloading (2023-07-01T17:36:32.720000Z / 2023-07-01T17:36:51.141859Z)
[stream.dash][debug] video/mp4 segment initialization: completed
[stream.ffmpegmux][debug] ffmpeg version n6.0-3-g0e11aafb08-20230310 Copyright (c) 2000-2023 the FFmpeg developers
[stream.ffmpegmux][debug] built with gcc 12.2.0 (crosstool-NG 1.25.0.90_cf9beb1)
[stream.ffmpegmux][debug] configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --disable-libmfx --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --disable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp --extra-version=20230310
[stream.ffmpegmux][debug] libavutil 58. 2.100 / 58. 2.100
[stream.ffmpegmux][debug] libavcodec 60. 3.100 / 60. 3.100
[stream.ffmpegmux][debug] libavformat 60. 3.100 / 60. 3.100
[stream.ffmpegmux][debug] libavdevice 60. 1.100 / 60. 1.100
[stream.ffmpegmux][debug] libavfilter 9. 3.100 / 9. 3.100
[stream.ffmpegmux][debug] libswscale 7. 1.100 / 7. 1.100
[stream.ffmpegmux][debug] libswresample 4. 10.100 / 4. 10.100
[stream.ffmpegmux][debug] libpostproc 57. 1.100 / 57. 1.100
[utils.named_pipe][info] Creating pipe streamlinkpipe-17768-1-4393
[utils.named_pipe][info] Creating pipe streamlinkpipe-17768-2-523
[stream.ffmpegmux][debug] ffmpeg command: C:\Program Files\Streamlink\ffmpeg\ffmpeg.exe -nostats -y -i \\.\pipe\streamlinkpipe-17768-1-4393 -i \\.\pipe\streamlinkpipe-17768-2-523 -c:v copy -c:a copy -copyts -f matroska pipe:1
[stream.ffmpegmux][debug] Starting copy to pipe: \\.\pipe\streamlinkpipe-17768-1-4393
[stream.ffmpegmux][debug] Starting copy to pipe: \\.\pipe\streamlinkpipe-17768-2-523
[cli][debug] Pre-buffering 8192 bytes
[stream.dash][debug] audio/mp4 segment 1474256: downloading (2023-07-01T17:36:32.720000Z / 2023-07-01T17:36:51.207836Z)
[stream.dash][debug] audio/mp4 segment initialization: completed
[stream.dash][debug] audio/mp4 segment 1474257: downloading (2023-07-01T17:36:40.720000Z / 2023-07-01T17:36:51.338794Z)
[stream.dash][debug] audio/mp4 segment 1474256: completed
[stream.dash][debug] video/mp4 segment 1474257: downloading (2023-07-01T17:36:40.720000Z / 2023-07-01T17:36:51.340793Z)
[stream.dash][debug] video/mp4 segment 1474256: completed
[stream.dash][debug] audio/mp4 segment 1474258: downloading (2023-07-01T17:36:48.720000Z / 2023-07-01T17:36:51.509740Z)
[stream.dash][debug] audio/mp4 segment 1474257: completed
[stream.dash][debug] audio/mp4 segment 1474259: downloading (2023-07-01T17:36:50.000000Z / 2023-07-01T17:36:51.535731Z)
[stream.dash][debug] audio/mp4 segment 1474258: completed
[cli][debug] Writing stream to output
[stream.dash][debug] audio/mp4 segment 1474259: completed
[stream.dash][debug] video/mp4 segment 1474258: downloading (2023-07-01T17:36:48.720000Z / 2023-07-01T17:36:51.699216Z)
[stream.dash][debug] video/mp4 segment 1474257: completed
[download] Written 5.02 MiB to TF1-2023-07-01_19-36-51.ts (0s) [stream.dash][debug] video/mp4 segment 1474259: downloading (2023-07-01T17:36:50.000000Z / 2023-07-01T17:36:51.894159Z)
[stream.dash][debug] video/mp4 segment 1474258: completed
[stream.dash][debug] video/mp4 segment 1474259: completed
[download] Written 7.99 MiB to TF1-2023-07-01_19-36-51.ts (1m00s @ 0 bytes/s) [stream.ffmpegmux][error] Error while reading from substream: Read timeout
[stream.ffmpegmux][error] Error while reading from substream: Read timeout
[stream.ffmpegmux][debug] Closing ffmpeg thread
[stream.segmented][debug] Closing worker thread
[stream.segmented][debug] Closing writer thread
[stream.segmented][debug] Closing worker thread
[stream.segmented][debug] Closing writer thread
[stream.segmented][debug] Closing writer thread
[stream.segmented][debug] Closing writer thread
[stream.ffmpegmux][debug] Closed all the substreams
[cli][info] Stream ended
[cli][info] Closing currently open stream...
Do you know what I'm doing wrong ? My goal was to record 1 minute of the direct (the same which is played into the website). Regards.
I'll have to check as I'm quite unsure about if it's a Streamlink DASH issue or TF1 having the live feed + 4 hours of replay.
I'll have to check as I'm quite unsure about if it's a Streamlink DASH issue or TF1 having the live feed + 4 hours of replay.
Putting the link into yt-dlp gives me several video tracks, I think streamlink doesn't record the newest one :
D:\youtube-dl>yt-dlp -vF https://live-tf1-das.cdn-0.diff.tf1.fr/[Redacted]/out/v1/dfe36f90964947129902b842b83e65b4/index.mpd
[debug] Command-line config: ['-vF', 'https://live-tf1-das.cdn-0.diff.tf1.fr/[Redacted]/out/v1/dfe36f90964947129902b842b83e65b4/index.mpd']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version [email protected] [812cdfa06] (pip)
[debug] Python 3.11.2 (CPython AMD64 64bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1s 1 Nov 2022)
[debug] exe versions: ffmpeg 2023-06-26-git-285c7f6f6b-full_build-www.gyan.dev (setts), ffprobe 2023-06-26-git-285c7f6f6b-full_build-www.gyan.dev
[debug] Optional libraries: Cryptodome-3.18.0, brotli-1.0.9, certifi-2023.05.07, mutagen-1.46.0, sqlite3-2.6.0, websockets-11.0.3
[debug] Proxy map: {}
[debug] Loaded 1851 extractors
[generic] Extracting URL: https://live-tf1-das.cdn-0.diff.tf1.fr/[Redacted]/out/v1/dfe36f90964947129902b842b83e65b4/index.mpd
[generic] index: Downloading webpage
WARNING: [generic] Falling back on generic information extractor
[generic] index: Extracting information
[debug] Identified a DASH manifest
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, hdr:12(7), vcodec:vp9.2(10), channels, acodec, size, br, asr, proto, vext, aext, hasaud, source, id
[info] Available formats for index:
ID EXT RESOLUTION │ TBR PROTO │ VCODEC VBR ACODEC ABR ASR MORE INFO
────────────────────────────────────────────────────────────────────────────────────────────────────
6-0 m4a audio only │ 96k dash │ audio only mp4a.40.2 96k 48k DASH audio, m4a_dash
6-1 m4a audio only │ 96k dash │ audio only mp4a.40.2 96k 48k DASH audio, m4a_dash
6-2 m4a audio only │ 96k dash │ audio only mp4a.40.2 96k 48k DASH audio, m4a_dash
6-3 m4a audio only │ 96k dash │ audio only mp4a.40.2 96k 48k DASH audio, m4a_dash
6-4 m4a audio only │ 96k dash │ audio only mp4a.40.2 96k 48k DASH audio, m4a_dash
6-5 m4a audio only │ 96k dash │ audio only mp4a.40.2 96k 48k DASH audio, m4a_dash
6-6 m4a audio only │ 96k dash │ audio only mp4a.40.2 96k 48k DASH audio, m4a_dash
6-7 m4a audio only │ 96k dash │ audio only mp4a.40.2 96k 48k DASH audio, m4a_dash
6-8 m4a audio only │ 96k dash │ audio only mp4a.40.2 96k 48k DASH audio, m4a_dash
6-9 m4a audio only │ 96k dash │ audio only mp4a.40.2 96k 48k DASH audio, m4a_dash
6-10 m4a audio only │ 96k dash │ audio only mp4a.40.2 96k 48k DASH audio, m4a_dash
6-11 m4a audio only │ 96k dash │ audio only mp4a.40.2 96k 48k DASH audio, m4a_dash
6-12 m4a audio only │ 96k dash │ audio only mp4a.40.2 96k 48k DASH audio, m4a_dash
6-13 m4a audio only │ 96k dash │ audio only mp4a.40.2 96k 48k DASH audio, m4a_dash
6-14 m4a audio only │ 96k dash │ audio only mp4a.40.2 96k 48k DASH audio, m4a_dash
6-15 m4a audio only │ 96k dash │ audio only mp4a.40.2 96k 48k DASH audio, m4a_dash
6-16 m4a audio only │ 96k dash │ audio only mp4a.40.2 96k 48k DASH audio, m4a_dash
6-17 m4a audio only │ 96k dash │ audio only mp4a.40.2 96k 48k DASH audio, m4a_dash
6-18 m4a audio only │ 96k dash │ audio only mp4a.40.2 96k 48k DASH audio, m4a_dash
6-19 m4a audio only │ 96k dash │ audio only mp4a.40.2 96k 48k DASH audio, m4a_dash
7-0 m4a audio only │ 97k dash │ audio only mp4a.40.2 97k 48k [sme] DASH audio, m4a_dash
7-1 m4a audio only │ 97k dash │ audio only mp4a.40.2 97k 48k [sme] DASH audio, m4a_dash
7-2 m4a audio only │ 97k dash │ audio only mp4a.40.2 97k 48k [sme] DASH audio, m4a_dash
7-3 m4a audio only │ 97k dash │ audio only mp4a.40.2 97k 48k [sme] DASH audio, m4a_dash
7-4 m4a audio only │ 97k dash │ audio only mp4a.40.2 97k 48k [sme] DASH audio, m4a_dash
7-5 m4a audio only │ 97k dash │ audio only mp4a.40.2 97k 48k [sme] DASH audio, m4a_dash
7-6 m4a audio only │ 97k dash │ audio only mp4a.40.2 97k 48k [sme] DASH audio, m4a_dash
7-7 m4a audio only │ 97k dash │ audio only mp4a.40.2 97k 48k [sme] DASH audio, m4a_dash
7-8 m4a audio only │ 97k dash │ audio only mp4a.40.2 97k 48k [sme] DASH audio, m4a_dash
7-9 m4a audio only │ 97k dash │ audio only mp4a.40.2 97k 48k [sme] DASH audio, m4a_dash
7-10 m4a audio only │ 97k dash │ audio only mp4a.40.2 97k 48k [sme] DASH audio, m4a_dash
7-11 m4a audio only │ 97k dash │ audio only mp4a.40.2 97k 48k [sme] DASH audio, m4a_dash
7-12 m4a audio only │ 97k dash │ audio only mp4a.40.2 97k 48k [sme] DASH audio, m4a_dash
7-13 m4a audio only │ 97k dash │ audio only mp4a.40.2 97k 48k [sme] DASH audio, m4a_dash
7-14 m4a audio only │ 97k dash │ audio only mp4a.40.2 97k 48k [sme] DASH audio, m4a_dash
7-15 m4a audio only │ 97k dash │ audio only mp4a.40.2 97k 48k [sme] DASH audio, m4a_dash
7-16 m4a audio only │ 97k dash │ audio only mp4a.40.2 97k 48k [sme] DASH audio, m4a_dash
7-17 m4a audio only │ 97k dash │ audio only mp4a.40.2 97k 48k [sme] DASH audio, m4a_dash
7-18 m4a audio only │ 97k dash │ audio only mp4a.40.2 97k 48k [sme] DASH audio, m4a_dash
7-19 m4a audio only │ 97k dash │ audio only mp4a.40.2 97k 48k [sme] DASH audio, m4a_dash
8-0 m4a audio only │ 129k dash │ audio only mp4a.40.2 129k 48k [fra] DASH audio, m4a_dash
8-1 m4a audio only │ 129k dash │ audio only mp4a.40.2 129k 48k [fra] DASH audio, m4a_dash
8-2 m4a audio only │ 129k dash │ audio only mp4a.40.2 129k 48k [fra] DASH audio, m4a_dash
8-3 m4a audio only │ 129k dash │ audio only mp4a.40.2 129k 48k [fra] DASH audio, m4a_dash
8-4 m4a audio only │ 129k dash │ audio only mp4a.40.2 129k 48k [fra] DASH audio, m4a_dash
8-5 m4a audio only │ 129k dash │ audio only mp4a.40.2 129k 48k [fra] DASH audio, m4a_dash
8-6 m4a audio only │ 129k dash │ audio only mp4a.40.2 129k 48k [fra] DASH audio, m4a_dash
8-7 m4a audio only │ 129k dash │ audio only mp4a.40.2 129k 48k [fra] DASH audio, m4a_dash
8-8 m4a audio only │ 129k dash │ audio only mp4a.40.2 129k 48k [fra] DASH audio, m4a_dash
8-9 m4a audio only │ 129k dash │ audio only mp4a.40.2 129k 48k [fra] DASH audio, m4a_dash
8-10 m4a audio only │ 129k dash │ audio only mp4a.40.2 129k 48k [fra] DASH audio, m4a_dash
8-11 m4a audio only │ 129k dash │ audio only mp4a.40.2 129k 48k [fra] DASH audio, m4a_dash
8-12 m4a audio only │ 129k dash │ audio only mp4a.40.2 129k 48k [fra] DASH audio, m4a_dash
8-13 m4a audio only │ 129k dash │ audio only mp4a.40.2 129k 48k [fra] DASH audio, m4a_dash
8-14 m4a audio only │ 129k dash │ audio only mp4a.40.2 129k 48k [fra] DASH audio, m4a_dash
8-15 m4a audio only │ 129k dash │ audio only mp4a.40.2 129k 48k [fra] DASH audio, m4a_dash
8-16 m4a audio only │ 129k dash │ audio only mp4a.40.2 129k 48k [fra] DASH audio, m4a_dash
8-17 m4a audio only │ 129k dash │ audio only mp4a.40.2 129k 48k [fra] DASH audio, m4a_dash
8-18 m4a audio only │ 129k dash │ audio only mp4a.40.2 129k 48k [fra] DASH audio, m4a_dash
8-19 m4a audio only │ 129k dash │ audio only mp4a.40.2 129k 48k [fra] DASH audio, m4a_dash
5-0 mp4 416x234 │ 400k dash │ avc1.42C00D 400k video only DASH video, mp4_dash
5-1 mp4 416x234 │ 400k dash │ avc1.42C00D 400k video only DASH video, mp4_dash
5-2 mp4 416x234 │ 400k dash │ avc1.42C00D 400k video only DASH video, mp4_dash
5-3 mp4 416x234 │ 400k dash │ avc1.42C00D 400k video only DASH video, mp4_dash
5-4 mp4 416x234 │ 400k dash │ avc1.42C00D 400k video only DASH video, mp4_dash
5-5 mp4 416x234 │ 400k dash │ avc1.42C00D 400k video only DASH video, mp4_dash
5-6 mp4 416x234 │ 400k dash │ avc1.42C00D 400k video only DASH video, mp4_dash
5-7 mp4 416x234 │ 400k dash │ avc1.42C00D 400k video only DASH video, mp4_dash
5-8 mp4 416x234 │ 400k dash │ avc1.42C00D 400k video only DASH video, mp4_dash
5-9 mp4 416x234 │ 400k dash │ avc1.42C00D 400k video only DASH video, mp4_dash
5-10 mp4 416x234 │ 400k dash │ avc1.42C00D 400k video only DASH video, mp4_dash
5-11 mp4 416x234 │ 400k dash │ avc1.42C00D 400k video only DASH video, mp4_dash
5-12 mp4 416x234 │ 400k dash │ avc1.42C00D 400k video only DASH video, mp4_dash
5-13 mp4 416x234 │ 400k dash │ avc1.42C00D 400k video only DASH video, mp4_dash
5-14 mp4 416x234 │ 400k dash │ avc1.42C00D 400k video only DASH video, mp4_dash
5-15 mp4 416x234 │ 400k dash │ avc1.42C00D 400k video only DASH video, mp4_dash
5-16 mp4 416x234 │ 400k dash │ avc1.42C00D 400k video only DASH video, mp4_dash
5-17 mp4 416x234 │ 400k dash │ avc1.42C00D 400k video only DASH video, mp4_dash
5-18 mp4 416x234 │ 400k dash │ avc1.42C00D 400k video only DASH video, mp4_dash
5-19 mp4 416x234 │ 400k dash │ avc1.42C00D 400k video only DASH video, mp4_dash
4-0 mp4 640x360 │ 800k dash │ avc1.42C01E 800k video only DASH video, mp4_dash
4-1 mp4 640x360 │ 800k dash │ avc1.42C01E 800k video only DASH video, mp4_dash
4-2 mp4 640x360 │ 800k dash │ avc1.42C01E 800k video only DASH video, mp4_dash
4-3 mp4 640x360 │ 800k dash │ avc1.42C01E 800k video only DASH video, mp4_dash
4-4 mp4 640x360 │ 800k dash │ avc1.42C01E 800k video only DASH video, mp4_dash
4-5 mp4 640x360 │ 800k dash │ avc1.42C01E 800k video only DASH video, mp4_dash
4-6 mp4 640x360 │ 800k dash │ avc1.42C01E 800k video only DASH video, mp4_dash
4-7 mp4 640x360 │ 800k dash │ avc1.42C01E 800k video only DASH video, mp4_dash
4-8 mp4 640x360 │ 800k dash │ avc1.42C01E 800k video only DASH video, mp4_dash
4-9 mp4 640x360 │ 800k dash │ avc1.42C01E 800k video only DASH video, mp4_dash
4-10 mp4 640x360 │ 800k dash │ avc1.42C01E 800k video only DASH video, mp4_dash
4-11 mp4 640x360 │ 800k dash │ avc1.42C01E 800k video only DASH video, mp4_dash
4-12 mp4 640x360 │ 800k dash │ avc1.42C01E 800k video only DASH video, mp4_dash
4-13 mp4 640x360 │ 800k dash │ avc1.42C01E 800k video only DASH video, mp4_dash
4-14 mp4 640x360 │ 800k dash │ avc1.42C01E 800k video only DASH video, mp4_dash
4-15 mp4 640x360 │ 800k dash │ avc1.42C01E 800k video only DASH video, mp4_dash
4-16 mp4 640x360 │ 800k dash │ avc1.42C01E 800k video only DASH video, mp4_dash
4-17 mp4 640x360 │ 800k dash │ avc1.42C01E 800k video only DASH video, mp4_dash
4-18 mp4 640x360 │ 800k dash │ avc1.42C01E 800k video only DASH video, mp4_dash
4-19 mp4 640x360 │ 800k dash │ avc1.42C01E 800k video only DASH video, mp4_dash
3-0 mp4 1024x576 │ 1200k dash │ avc1.4D401F 1200k video only DASH video, mp4_dash
3-1 mp4 1024x576 │ 1200k dash │ avc1.4D401F 1200k video only DASH video, mp4_dash
3-2 mp4 1024x576 │ 1200k dash │ avc1.4D401F 1200k video only DASH video, mp4_dash
3-3 mp4 1024x576 │ 1200k dash │ avc1.4D401F 1200k video only DASH video, mp4_dash
3-4 mp4 1024x576 │ 1200k dash │ avc1.4D401F 1200k video only DASH video, mp4_dash
3-5 mp4 1024x576 │ 1200k dash │ avc1.4D401F 1200k video only DASH video, mp4_dash
3-6 mp4 1024x576 │ 1200k dash │ avc1.4D401F 1200k video only DASH video, mp4_dash
3-7 mp4 1024x576 │ 1200k dash │ avc1.4D401F 1200k video only DASH video, mp4_dash
3-8 mp4 1024x576 │ 1200k dash │ avc1.4D401F 1200k video only DASH video, mp4_dash
3-9 mp4 1024x576 │ 1200k dash │ avc1.4D401F 1200k video only DASH video, mp4_dash
3-10 mp4 1024x576 │ 1200k dash │ avc1.4D401F 1200k video only DASH video, mp4_dash
3-11 mp4 1024x576 │ 1200k dash │ avc1.4D401F 1200k video only DASH video, mp4_dash
3-12 mp4 1024x576 │ 1200k dash │ avc1.4D401F 1200k video only DASH video, mp4_dash
3-13 mp4 1024x576 │ 1200k dash │ avc1.4D401F 1200k video only DASH video, mp4_dash
3-14 mp4 1024x576 │ 1200k dash │ avc1.4D401F 1200k video only DASH video, mp4_dash
3-15 mp4 1024x576 │ 1200k dash │ avc1.4D401F 1200k video only DASH video, mp4_dash
3-16 mp4 1024x576 │ 1200k dash │ avc1.4D401F 1200k video only DASH video, mp4_dash
3-17 mp4 1024x576 │ 1200k dash │ avc1.4D401F 1200k video only DASH video, mp4_dash
3-18 mp4 1024x576 │ 1200k dash │ avc1.4D401F 1200k video only DASH video, mp4_dash
3-19 mp4 1024x576 │ 1200k dash │ avc1.4D401F 1200k video only DASH video, mp4_dash
2-0 mp4 1024x576 │ 1700k dash │ avc1.4D401F 1700k video only DASH video, mp4_dash
2-1 mp4 1024x576 │ 1700k dash │ avc1.4D401F 1700k video only DASH video, mp4_dash
2-2 mp4 1024x576 │ 1700k dash │ avc1.4D401F 1700k video only DASH video, mp4_dash
2-3 mp4 1024x576 │ 1700k dash │ avc1.4D401F 1700k video only DASH video, mp4_dash
2-4 mp4 1024x576 │ 1700k dash │ avc1.4D401F 1700k video only DASH video, mp4_dash
2-5 mp4 1024x576 │ 1700k dash │ avc1.4D401F 1700k video only DASH video, mp4_dash
2-6 mp4 1024x576 │ 1700k dash │ avc1.4D401F 1700k video only DASH video, mp4_dash
2-7 mp4 1024x576 │ 1700k dash │ avc1.4D401F 1700k video only DASH video, mp4_dash
2-8 mp4 1024x576 │ 1700k dash │ avc1.4D401F 1700k video only DASH video, mp4_dash
2-9 mp4 1024x576 │ 1700k dash │ avc1.4D401F 1700k video only DASH video, mp4_dash
2-10 mp4 1024x576 │ 1700k dash │ avc1.4D401F 1700k video only DASH video, mp4_dash
2-11 mp4 1024x576 │ 1700k dash │ avc1.4D401F 1700k video only DASH video, mp4_dash
2-12 mp4 1024x576 │ 1700k dash │ avc1.4D401F 1700k video only DASH video, mp4_dash
2-13 mp4 1024x576 │ 1700k dash │ avc1.4D401F 1700k video only DASH video, mp4_dash
2-14 mp4 1024x576 │ 1700k dash │ avc1.4D401F 1700k video only DASH video, mp4_dash
2-15 mp4 1024x576 │ 1700k dash │ avc1.4D401F 1700k video only DASH video, mp4_dash
2-16 mp4 1024x576 │ 1700k dash │ avc1.4D401F 1700k video only DASH video, mp4_dash
2-17 mp4 1024x576 │ 1700k dash │ avc1.4D401F 1700k video only DASH video, mp4_dash
2-18 mp4 1024x576 │ 1700k dash │ avc1.4D401F 1700k video only DASH video, mp4_dash
2-19 mp4 1024x576 │ 1700k dash │ avc1.4D401F 1700k video only DASH video, mp4_dash
1-0 mp4 1280x720 │ 2500k dash │ avc1.4D401F 2500k video only DASH video, mp4_dash
1-1 mp4 1280x720 │ 2500k dash │ avc1.4D401F 2500k video only DASH video, mp4_dash
1-2 mp4 1280x720 │ 2500k dash │ avc1.4D401F 2500k video only DASH video, mp4_dash
1-3 mp4 1280x720 │ 2500k dash │ avc1.4D401F 2500k video only DASH video, mp4_dash
1-4 mp4 1280x720 │ 2500k dash │ avc1.4D401F 2500k video only DASH video, mp4_dash
1-5 mp4 1280x720 │ 2500k dash │ avc1.4D401F 2500k video only DASH video, mp4_dash
1-6 mp4 1280x720 │ 2500k dash │ avc1.4D401F 2500k video only DASH video, mp4_dash
1-7 mp4 1280x720 │ 2500k dash │ avc1.4D401F 2500k video only DASH video, mp4_dash
1-8 mp4 1280x720 │ 2500k dash │ avc1.4D401F 2500k video only DASH video, mp4_dash
1-9 mp4 1280x720 │ 2500k dash │ avc1.4D401F 2500k video only DASH video, mp4_dash
1-10 mp4 1280x720 │ 2500k dash │ avc1.4D401F 2500k video only DASH video, mp4_dash
1-11 mp4 1280x720 │ 2500k dash │ avc1.4D401F 2500k video only DASH video, mp4_dash
1-12 mp4 1280x720 │ 2500k dash │ avc1.4D401F 2500k video only DASH video, mp4_dash
1-13 mp4 1280x720 │ 2500k dash │ avc1.4D401F 2500k video only DASH video, mp4_dash
1-14 mp4 1280x720 │ 2500k dash │ avc1.4D401F 2500k video only DASH video, mp4_dash
1-15 mp4 1280x720 │ 2500k dash │ avc1.4D401F 2500k video only DASH video, mp4_dash
1-16 mp4 1280x720 │ 2500k dash │ avc1.4D401F 2500k video only DASH video, mp4_dash
1-17 mp4 1280x720 │ 2500k dash │ avc1.4D401F 2500k video only DASH video, mp4_dash
1-18 mp4 1280x720 │ 2500k dash │ avc1.4D401F 2500k video only DASH video, mp4_dash
1-19 mp4 1280x720 │ 2500k dash │ avc1.4D401F 2500k video only DASH video, mp4_dash
Don't post media files here. I've hid the post now.
If it's an issue with the DASHStream implementation, then you'll have to provide the full DASH manifest and the full trace log, so the segment timestamps can be checked. This is off topic though and should be posted in a new thread. There is a thread about DASH timing offsets: #5201
Don't post media files here. I've hid the post now.
If it's an issue with the DASHStream implementation, then you'll have to provide the full DASH manifest and the full trace log, so the segment timestamps can be checked. This is off topic though and should be posted in a new thread. There is a thread about DASH timing offsets: #5201
Sorry, I delete them.
Hello Is there any update on this? tf1 is quite an important plugin for the french community,
any update on this? tf1 is still the biggest tv station in Europe and the plugin used to provide 4 channels of TF1 group!
any update on this?
Fix the plugin and send a pull request.
obviously if I could I would
hello any update on this please? are you considering one day to fix the plugin?
This will most certainly need a bit of a relift but here's my take on it : https://raw.githubusercontent.com/BellezaEmporium/streamlink/master/src/streamlink/plugins/tf1.py
There's a system of "token + refresh token" implemented in TF1's website, though I have not added the refresh logic to the code data yet, as i'm thinking on how to store account information in order from Streamlink to grab available data without having the need to reconnect.
C:\Users\....>streamlink --tf1-username=***** --tf1-password=***** https://www.tf1.fr/tf1/direct best
[cli][info] Found matching plugin tf1 for URL https://www.tf1.fr/tf1/direct
[cli][info] Available streams: 234p (worst), 360p, 576p_alt, 576p, 720p (best)
[cli][info] Opening stream: 720p (hls-multi)
[cli][info] Starting player: C:\Program Files\VideoLAN\VLC\vlc.exe
[utils.named_pipe][info] Creating pipe streamlinkpipe-45144-1-8040
[utils.named_pipe][info] Creating pipe streamlinkpipe-45144-2-715
thanks a lot for fixing this. has been quite some time now ! it's working fine on my side. if we are talking about the token that expires every 4 hours, it was like this with the former plugin anyway.
It was therefore clearly linked to the obligation to identify oneself due to the existence of MyTF1 Max, as I had assumed.
Translated from: C'était donc bien en rapport avec l'obligation de s'identifier due à l'existence de MyTF1 Max, quel que je l'avais présumé.
I think to watch on their site, even before, you had to be logged in .
can't really remember, I rarely use that site anyway
I think to watch on their site, even before, you had to be logged in .
No.
can't really remember, I rarely use that site anyway
me yes.
Linked to the introduction of PPV streams in MyTF1 (since Star Academy's 24/7 streams, even before I believe).
Hello there,
@BellezaEmporium I tried your file, but i got this error :
streamlink https://www.tf1.fr/tf1/direct
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "C:\Program Files\Streamlink\bin\streamlink.exe\__main__.py", line 18, in <module>
File "C:\Program Files\Streamlink\pkgs\streamlink_cli\main.py", line 963, in main
error_code = run(parser)
^^^^^^^^^^^
File "C:\Program Files\Streamlink\pkgs\streamlink_cli\main.py", line 936, in run
handle_url()
File "C:\Program Files\Streamlink\pkgs\streamlink_cli\main.py", line 543, in handle_url
options = setup_plugin_options(pluginname, pluginclass)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Streamlink\pkgs\streamlink_cli\main.py", line 749, in setup_plugin_options
value = getattr(args, parg.namespace_dest(pluginname))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Namespace' object has no attribute 'tf1_username'
I've tried to found out alone but i'm not a dev so i don't get shit about what's wrong :(
If i'm trying with a login throught this cmd
streamlink --tf1-username=**** https://www.tf1.fr/tf1/direct
i've this message
usage: streamlink [OPTIONS] <URL> [STREAM]
streamlink: error: unrecognized arguments: --tf1-username=****
I saw that you add this line
from streamlink.plugin.plugin import pluginargument
which is not the same when i compare to another plugin so i deleted it and added it to this line
from streamlink.plugin import Plugin, pluginargument, PluginError, pluginmatcher
but it doesn't changed anything :(
Also i don't see the tf1 help section you added using the cmd --help I'm using streamlink 6.7.3
I would appreciate your help if you can 👍
see ya
it was never merged into the main project, curiously.. it still works perfectly on my side
Works fine on my side.
it was never merged into the main project, curiously..
With the recent spam/abuse in mind which I've received by other users, I'm going to say this now:
@campones The attitude you've been showing here for the past couple of years is highly annoying.
To remind you, this is a free open source software project run by volunteers in their free time. All you however do is request urgent help, attention and time without ever contributing back to the project in any way (while also abusing the software for monetary gains from what I believe by rehosting streams on your own servers - which is extra annoying to me).
- https://github.com/streamlink/streamlink/issues?q=author%3Acampones
- https://github.com/streamlink/streamlink/issues?q=commenter%3Acampones
- https://github.com/streamlink/streamlink/pulls?q=is%3Apr+author%3Acampones
- https://github.com/streamlink/streamlink/discussions?discussions_q=author%3Acampones
- https://github.com/campones?tab=repositories
If nobody submits a pull request with a fix for the plugin, then it remains broken on the master branch unless the maintainers take a look at it themselves. "The maintainers" (plural) however has been pretty much me (singular) for a very long time now because everyone else who had an actual interest in the project and/or had regularly contributed code has left (be it health issues or other various reasons).
Considering that there are additional obstacles in the way in the shape of required user accounts, I don't have much motivation fixing the plugin. If anyone however had submitted a pull request, I would have certainly given it a proper review which would have very likely led to a merge if the author could have shown me log outputs of a working plugin. This has still not happened today. I can't be bothered looking for branches on any forks where certain plugins might have been fixed.
Sideloading plugins or forking the project for personal modifications is perfectly fine (within the limits of the project's license), but if no one even thinks about contributing back via pull requests, then please don't wonder why plugins remain broken or get removed eventually. Same with any other issues regarding Streamlink's code base.
Questioning maintainer activity or constantly asking why XYZ hasn't been fixed yet, and thus once again being annoying by trying to apply pressure without contributing back yourself is just a super shitty thing to do, even as a regular user who doesn't know how to write code. Things like this make me feel less and less motivated working on the project... As said at the beginning, I've just been spammed by other users recently with the exact same demanding attitude.
I won't even bother to answer.
To answer on my behalf, I simply don't do pull requests because that would most certainly add all the other plugins I've did to the list. Which would be irrelevant in the base of this issue.
I've did a few personal plugins based on Streamlink's plugin schema, in order for me to fully understand how the technology works. If they see the light of day in the form of a PR, they might need a certain amount of rework to fit the new plugin structure.
@BellezaEmporium I'm totally sorry to bothering you but i'm an advanced computer user but not a dev, so i just need help for few editing to makes this past post functionning. Is that community starts to be toxic as everyone else on the internet by this days ? Just give me an hand to understand what is wrong with the code because i'm totally new in the project and i don't want to waste a lot of time to understand the whole fucking technology please !
i mean every IT executor knows that there is that much sector that you can't be performant on every sector right ?!