mirror of
https://github.com/ytdl-org/youtube-dl.git
synced 2026-03-02 19:17:00 -05:00
[TF1] - This video is DRM protected. #26434
Open
opened 2026-02-21 14:18:55 -05:00 by deekerman
·
35 comments
No Branch/Tag specified
master
pull/30733/head
gh-pages
df-fmt-ext-patch
dlp-fifa-backport
df-test-cleanup
pull/29816/head
download-server
totalwebcasting
rtmp_test
2024.07.11-nightly
2021.12.17
2021.06.06
2021.05.16
2021.04.26
2021.04.17
2021.04.07
2021.04.01
2021.03.31
2021.03.25
2021.03.14
2021.03.03
2021.03.02
2021.02.22
2021.02.10
2021.02.04.1
2021.02.04
2021.01.24.1
2021.01.24
2021.01.16
2021.01.08
2021.01.03
2020.12.31
2020.12.29
2020.12.26
2020.12.22
2020.12.14
2020.12.12
2020.12.09
2020.12.07
2020.12.05
2020.12.02
2020.11.29
2020.11.26
2020.11.24
2020.11.21.1
2020.11.21
2020.11.19
2020.11.18
2020.11.17
2020.11.12
2020.11.01.1
2020.11.01
2020.09.20
2020.09.14
2020.09.06
2020.07.28
2020.06.16.1
2020.06.16
2020.06.06
2020.05.29
2020.05.08
2020.05.03
2020.03.24
2020.03.08
2020.03.06
2020.03.01
2020.02.16
2020.01.24
2020.01.15
2020.01.01
2019.12.25
2019.11.28
2019.11.22
2019.11.05
2019.10.29
2019.10.22
2019.10.16
2019.09.28
2019.09.12.1
2019.09.12
2019.09.01
2019.08.13
2019.08.02
2019.07.30
2019.07.27
2019.07.16
2019.07.14
2019.07.12
2019.07.02
2019.06.27
2019.06.21
2019.06.08
2019.05.20
2019.05.11
2019.04.30
2019.04.24
2019.04.17
2019.04.07
2019.04.01
2019.03.18
2019.03.09
2019.03.01
2019.02.18
2019.02.08
2019.01.30.1
2019.01.30
2019.01.27
2019.01.24
2019.01.23
2019.01.17
2019.01.16
2019.01.10
2019.01.02
2018.12.31
2018.12.17
2018.12.09
2018.12.03
2018.11.23
2018.11.18
2018.11.07
2018.11.03
2018.10.29
2018.10.05
2018.09.26
2018.09.18
2018.09.10
2018.09.08
2018.09.01
2018.08.28
2018.08.22
2018.08.04
2018.07.29
2018.07.21
2018.07.10
2018.07.04
2018.06.25
2018.06.19
2018.06.18
2018.06.14
2018.06.11
2018.06.04
2018.06.02
2018.05.30
2018.05.26
2018.05.18
2018.05.09
2018.05.01
2018.04.25
2018.04.16
2018.04.09
2018.04.03
2018.03.26.1
2018.03.26
2018.03.20
2018.03.14
2018.03.10
2018.03.03
2018.02.26
2018.02.25
2018.02.22
2018.02.11
2018.02.08
2018.02.04
2018.02.03
2018.01.27
2018.01.21
2018.01.18
2018.01.14
2018.01.07
2017.12.31
2017.12.28
2017.12.23
2017.12.14
2017.12.10
2017.12.02
2017.11.26
2017.11.15
2017.11.06
2017.10.29
2017.10.20
2017.10.15.1
2017.10.15
2017.10.12
2017.10.07
2017.10.01
2017.09.24
2017.09.15
2017.09.11
2017.09.10
2017.09.02
2017.08.27.1
2017.08.27
2017.08.23
2017.08.18
2017.08.13
2017.08.09
2017.08.06
2017.07.30.1
2017.07.23
2017.07.15
2017.07.09
2017.07.02
2017.06.25
2017.06.23
2017.06.18
2017.06.12
2017.06.05
2017.05.29
2017.05.26
2017.05.23
2017.05.18.1
2017.05.18
2017.05.14
2017.05.09
2017.05.07
2017.05.01
2017.04.28
2017.04.26
2017.04.17
2017.04.16
2017.04.15
2017.04.14
2017.04.11
2017.04.09
2017.04.03
2017.04.02
2017.03.26
2017.03.24
2017.03.22
2017.03.20
2017.03.16
2017.03.15
2017.03.10
2017.03.07
2017.03.06
2017.03.05
2017.03.02
2017.02.28
2017.02.27
2017.02.24.1
2017.02.24
2017.02.22
2017.02.21
2017.02.17
2017.02.16
2017.02.14
2017.02.11
2017.02.10
2017.02.07
2017.02.04.1
2017.02.04
2017.02.01
2017.01.31
2017.01.29
2017.01.28
2017.01.25
2017.01.24
2017.01.22
2017.01.18
2017.01.16
2017.01.14
2017.01.10
2017.01.08
2017.01.05
2017.01.02
2016.12.31
2016.12.22
2016.12.20
2016.12.18
2016.12.15
2016.12.12
2016.12.09
2016.12.01
2016.11.27
2016.11.22
2016.11.18
2016.11.14.1
2016.11.14
2016.11.08.1
2016.11.08
2016.11.04
2016.11.02
2016.10.31
2016.10.30
2016.10.26
2016.10.25
2016.10.21.1
2016.10.21
2016.10.19
2016.10.16
2016.10.12
2016.10.07
2016.10.02
2016.09.27
2016.09.24
2016.09.19
2016.09.18
2016.09.15
2016.09.11.1
2016.09.11
2016.09.08
2016.09.04.1
2016.09.04
2016.09.03
2016.08.31
2016.08.28
2016.08.24.1
2016.08.24
2016.08.22
2016.08.19
2016.08.17
2016.08.13
2016.08.12
2016.08.10
2016.08.07
2016.08.06
2016.08.01
2016.07.30
2016.07.28
2016.07.26.2
2016.07.26.1
2016.07.26
2016.07.24
2016.07.22
2016.07.17
2016.07.16
2016.07.13
2016.07.11
2016.07.09.2
2016.07.09.1
2016.07.09
2016.07.07
2016.07.06
2016.07.05
2016.07.03.1
2016.07.03
2016.07.02
2016.07.01
2016.06.30
2016.06.27
2016.06.26
2016.06.25
2016.06.23.1
2016.06.23
2016.06.22
2016.06.20
2016.06.19.1
2016.06.19
2016.06.18.1
2016.06.18
2016.06.16
2016.06.14
2016.06.12
2016.06.11.3
2016.06.11.2
2016.06.11.1
2016.06.11
2016.06.05
2016.06.04
2016.06.03_tmp
2016.06.03
2016.06.02
2016.05.30.2
2016.05.30.1
2016.05.30
2016.05.21.2
2016.05.21.1
2016.05.21
2016.05.16
2016.05.10
2016.05.01
2016.04.24
2016.04.19
2016.04.13
2016.04.06
2016.04.05
2016.04.01
2016.03.27
2016.03.26
2016.03.25
2016.03.18
2016.03.14
2016.03.06
2016.03.01
2016.02.27
2016.02.22
2016.02.13
2016.02.10
2016.02.09.1
2016.02.09
2016.02.05.1
2016.02.05
2016.02.04
2016.02.01
2016.01.31
2016.01.29
2016.01.27
2016.01.23
2016.01.15
2016.01.14
2016.01.09
2016.01.01
2015.12.31
2015.12.29
2015.12.23
2015.12.21
2015.12.18
2015.12.13
2015.12.10
2015.12.09
2015.12.06
2015.12.05
2015.11.27.1
2015.11.27
2015.11.24
2015.11.23
2015.11.21
2015.11.19
2015.11.18
2015.11.15
2015.11.13
2015.11.10
2015.11.02
2015.11.01
2015.10.24
2015.10.23
2015.10.18
2015.10.16
2015.10.13
2015.10.12
2015.10.09
2015.10.06.2
2015.10.06.1
2015.10.06
2015.09.28
2015.09.22
2015.09.09
2015.09.03
2015.08.28
2015.08.23
2015.08.16.1
2015.08.16
2015.08.09
2015.08.06.1
2015.08.06
2015.07.28
2015.07.21
2015.07.18
2015.07.07
2015.07.04
2015.06.25
2015.06.15
2015.06.04.1
2015.06.04
2015.05.29
2015.05.20
2015.05.15
2015.05.10
2015.05.04
2015.05.03
2015.04.28
2015.04.26
2015.04.17
2015.04.09
2015.04.03
2015.03.28
2015.03.24
2015.03.18
2015.03.15
2015.03.09
2015.03.03.1
2015.03.03
2015.02.28
2015.02.26.2
2015.02.26.1
2015.02.26
2015.02.24.2
2015.02.24.1
2015.02.24
2015.02.23.1
2015.02.23
2015.02.21
2015.02.20
2015.02.19.3
2015.02.19.2
2015.02.19.1
2015.02.19
2015.02.18.1
2015.02.18
2015.02.17.2
2015.02.17.1
2015.02.17
2015.02.16.1
2015.02.16
2015.02.11
2015.02.10.5
2015.02.10.4
2015.02.10.3
2015.02.10.2
2015.02.10.1
2015.02.10
2015.02.09.3
2015.02.09.2
2015.02.09.1
2015.02.09
2015.02.08
2015.02.06
2015.02.04
2015.02.03.1
2015.02.03
2015.02.02.5
2015.02.02.4
2015.02.02.3
2015.02.02.2
2015.02.02.1
2015.02.02
2015.02.01
2015.01.30.2
2015.01.30.1
2015.01.30
2015.01.25
2015.01.23.4
2015.01.23.3
2015.01.23.2
2015.01.23.1
2015.01.23
2015.01.22
2015.01.16
2015.01.15.1
2015.01.15
2015.01.11
2015.01.10.2
2015.01.10.1
2015.01.10
2015.01.09.2
2015.01.09.1
2015.01.09
2015.01.08
2015.01.07.2
2015.01.07.1
2015.01.07
2015.01.05.1
2015.01.05
2015.01.04
2015.01.03
2015.01.02
2015.01.01
2014.12.17.2
2014.12.17.1
2014.12.17
2014.12.16.2
2014.12.16.1
2014.12.16
2014.12.15
2014.12.14
2014.12.13.1
2014.12.13
2014.12.12.7
2014.12.12.6
2014.12.12.5
2014.12.12.4
2014.12.12.3
2014.12.12.2
2014.12.12.1
2014.12.12
2014.12.11
2014.12.10.3
2014.12.10.2
2014.12.10.1
2014.12.10
2014.12.06.1
2014.12.06
2014.12.04.2
2014.12.04.1
2014.12.04
2014.12.03
2014.12.01
2014.11.27
2014.11.26.4
2014.11.26.3
2014.11.26.2
2014.11.26.1
2014.11.26
2014.11.25.1
2014.11.25
2014.11.24
2014.11.23.1
2014.11.23
2014.11.21.1
2014.11.21
2014.11.20.1
2014.11.20
2014.11.16
2014.11.15.1
2014.11.15
2014.11.14
2014.11.13.3
2014.11.13.2
2014.11.13.1
2014.11.13
2014.11.12.1
2014.11.12
2014.11.09
2014.11.04
2014.11.02.1
2014.11.02
2014.10.30
2014.10.29
2014.10.27
2014.10.26.2
2014.10.26.1
2014.10.26
2014.10.25
2014.10.24
2014.10.23
2014.10.18
2014.10.15
2014.10.13
2014.10.12
2014.10.05.2
2014.10.05.1
2014.10.05
2014.10.02
2014.09.29.2
2014.09.29.1
2014.09.29
2014.09.28.1
2014.09.28
2014.09.25
2014.09.24.1
2014.09.24
2014.09.22.1
2014.09.22
2014.09.19
2014.09.18
2014.09.16.1
2014.09.16
2014.09.15.1
2014.09.15
2014.09.14.3
2014.09.14.2
2014.09.14.1
2014.09.14
2014.09.12
2014.09.10.1
2014.09.10
2014.09.06
2014.09.04.3
2014.09.04.2
2014.09.04.1
2014.09.04
2014.09.01.2
2014.09.01.1
2014.09.01
2014.08.29
2014.08.28.2
2014.08.28.1
2014.08.28
2014.08.27.1
2014.08.27
2014.08.26
2014.08.25.3
2014.08.25.2
2014.08.25.1
2014.08.25
2014.08.24.6
2014.08.24.5
2014.08.24.4
2014.08.24.3
2014.08.24.2
2014.08.24.1
2014.08.24
2014.08.23
2014.08.22.3
2014.08.22.2
2014.08.22.1
2014.08.22
2014.08.21.3
2014.08.21.2
2014.08.21.1
2014.08.21
2014.08.10
2014.08.05
2014.08.02.1
2014.08.02
2014.07.30
2014.07.25.1
2014.07.25
2014.07.24
2014.07.23.2
2014.07.23.1
2014.07.23
2014.07.22
2014.07.21
2014.07.20.2
2014.07.20.1
2014.07.20
2014.07.15
2014.07.11.3
2014.07.11.2
2014.07.11.1
2014.07.11
2014.07.10
2014.06.26
2014.06.25
2014.06.24.1
2014.06.24
2014.06.19
2014.06.16
2014.06.09
2014.06.07
2014.06.04
2014.06.02
2014.05.31.4
2014.05.31.3
2014.05.31.2
2014.05.31.1
2014.05.31
2014.05.30.1
2014.05.30
2014.05.19
2014.05.17
2014.05.16.1
2014.05.16
2014.05.13
2014.05.12
2014.05.05
2014.04.30.1
2014.04.30
2014.04.21.6
2014.04.21.5
2014.04.21.4
2014.04.21.3
2014.04.21.2
2014.04.21.1
2014.04.21
2014.04.19
2014.04.13
2014.04.11.2
2014.04.11.1
2014.04.11
2014.04.07.4
2014.04.07.3
2014.04.07.2
2014.04.07.1
2014.04.07
2014.04.04.7
2014.04.04.6
2014.04.04.5
2014.04.04.4
2014.04.04.2
2014.04.04.3
2014.04.04.1
2014.04.04
2014.04.03.3
2014.04.03.2
2014.04.03.1
2014.04.03
2014.04.02
2014.04.01.3
2014.04.01.2
2014.04.01.1
2014.04.01
2014.03.30.1
2014.03.30
2014.03.29
2014.03.28
2014.03.27.1
2014.03.27
2014.03.25.1
2014.03.25
2014.03.24.5
2014.03.24.4
2014.03.24.3
2014.03.24.2
2014.03.24.1
2014.03.24
2013.03.24.2
2013.03.24.1
2013.03.24
2014.03.23
2014.03.21.5
2014.03.21.4
2014.03.21.3
2014.03.21.2
2014.03.21.1
2014.03.21
2014.03.20
2014.03.18.1
2014.03.18
2014.03.17
2014.03.12
2014.03.11
2014.03.10
2014.03.07.1
2014.03.07
2014.03.06
2014.03.04.2
2014.03.04.1
2014.03.04
2014.03.03
2014.02.28
2014.02.27.1
2014.02.27
2014.02.26
2014.02.25.1
2014.02.25
2014.02.24
2014.02.22.1
2014.02.22
2014.02.21.1
2014.02.21
2014.02.20
2014.02.19.1
2014.02.19
2014.02.17
2014.02.13
2014.02.10
2014.02.08.2
2014.02.08.1
2014.02.08
2014.02.06.3
2014.02.06.2
2014.02.06.1
2014.02.06
2014.02.05
2014.02.04.1
2014.02.04
2014.02.03.1
2014.02.03
2014.01.30.2
2014.01.30.1
2014.01.30
2014.01.29
2014.01.28.1
2014.01.28
2014.01.27.2
2014.01.27.1
2014.01.27
2014.01.23.4
2014.01.23.3
2014.01.23.2
2014.01.23.1
2014.01.23
2014.01.22.5
2014.01.22.4
2014.01.22.3
2014.01.22.2
2014.01.22.1
2014.01.22
2014.01.21.1
2014.01.21
2014.01.20
2014.01.17.2
2013.01.17.1
2013.01.17
2014.01.08
2014.01.07.5
2014.01.07.4
2014.01.07.3
2014.01.07.2
2014.01.07.1
2014.01.07
2014.01.06.1
2014.01.06
2014.01.05.6
2014.01.05.5
2014.01.05.4
2014.01.05.3
2014.01.05.1
2014.01.05
2014.01.03
2013.12.26
2013.12.23.4
2013.12.23.3
2013.12.23.2
2013.12.23.1
2013.12.23
2013.12.20
2013.12.17.2
2013.12.17.1
2013.12.17
2013.12.16.7
2013.12.16.6
2013.12.16.5
2013.12.16.4
2013.12.16.3
2013.12.16.2
2013.12.16.1
2013.12.16
2013.12.11.2
2013.12.11.1
2013.12.11
2013.12.10
2013.12.09.4
2013.12.09.3
2013.12.09.2
2013.12.09.1
2013.12.09
2013.12.08.1
2013.12.08
2013.12.04
2013.12.03
2013.12.02
2013.11.29
2013.11.28.1
2013.11.28
2013.11.26
2013.11.25.3
2013.11.25.2
2013.11.25.1
2013.11.25
2013.11.24.1
2013.11.24
2013.11.22.2
2013.11.22.1
2013.11.22
2013.11.21
2013.11.20
2013.11.19
2013.11.18.1
2013.11.18
2013.11.17
2013.11.15.1
2013.11.15
2013.11.13
2013.11.11
2013.11.07
2013.11.06.1
2013.11.06
2013.11.03
2013.11.02
2013.10.30
2013.10.29
2013.10.28
2013.10.23.2
2013.10.23.1
2013.10.23
2013.10.22
2013.10.18.2
2013.10.18.1
2013.10.18
2013.10.17
2013.10.15
2013.10.09
2013.10.07
2013.10.06
2013.10.04
2013.10.01.1
2013.10.01
2013.09.29
2013.09.24.2
2013.09.24.1
2013.09.24
2013.09.20.1
2013.09.20
2013.09.17
2013.09.16
2013.09.12
2013.11.09
2013.09.10
2013.09.07
2013.09.06.1
2013.09.06
2013.09.05
2013.09.04
2013.08.30
2013.08.29
2013.08.28.1
2013.08.28
2013.08.27
2013.08.23
2013.08.22
2013.08.21
2013.08.17
2013.08.15
2013.08.14
2013.08.09
2013.08.08.1
2013.08.08
2013.08.02
2013.07.31
2013.07.25.2
2013.07.25.1
2013.07.25
2013.07.24.2
2013.07.24.1
2013.07.24
2013.07.23.1
2013.07.23
2013.07.19
2013.07.18
2013.07.17.1
2013.07.17
2013.07.12
2013.07.11
2013.07.10
2013.07.08.1
2013.07.08
2013.07.07.01
2013.07.07
2013.07.05
2013.07.04
2013.07.02
2013.06.34.4
2013.06.34.3
2013.06.34.2
2013.06.34.1
2013.06.34
2013.06.33
2013.06.32
2013.06.31
2013.06.30
2013.06.29
2013.06.28
2013.06.27
2013.06.26
2013.06.25
2013.06.23
2013.06.21
2013.05.23
2013.05.14
2013.05.13
2013.05.10
2013.05.07
2013.05.06
2013.05.05
2013.05.04
2013.05.01
2013.04.31
2013.04.30
2013.04.28
2013.04.27
2013.04.22
2013.04.21
2013.04.18
2013.04.11
2013.04.03
2013.03.29
2013.02.25
2013.02.22
2012.02.22
2013.02.19
2013.02.18
2013.02.02
2013.02.01
2013.01.28
2013.01.27
2013.01.13
2013.01.12
2012.12.99
2013.01.11
2013.01.08
2013.01.06
2013.01.02
2012.12.11
2012.11.29
2012.11.28
2012.11.27
2012.11.17
2012.10.09
2012.09.27
2012.02.27
2012.02.26
2012.01.08b
2012.01.08
2012.01.05
2011.12.18
2011.12.15
2011.12.08
2011.11.23
2011.11.22
2011.11.21
2011.10.19
2011.09.30
2011.09.27
2011.09.18c
2011.09.18b
2011.09.18
2011.09.17
2011.09.16
2011.09.15
2011.09.14
2011.09.13
2011.08.04
2011.03.29
2011.02.25c
2011.02.25b
2011.02.25
2011.01.30
2010.12.09
2010.11.19
2010.10.24
2010.10.03
2010.08.04
2010.07.24
2010.07.22
2010.07.14
2010.06.06
2010.04.04
2010.04.03
2010.04.02
2010.03.13
2010.03.07
2010.02.13
2010.01.19
2010.01.06
2010.01.05
2009.12.26
2009.09.13
2009.09.08
2009.08.08
2009.06.29
2009.05.30
2009.05.25
2009.05.23
2009.05.13
2009.05.11
2009.04.25
2009.04.06
2009.03.28
2009.03.03
2009.02.07
2009.01.31
2008.11.01
2008.10.16
2008.09.20
2008.08.09
2008.07.22
Labels
Clear labels
DRM
Good first issue
account-needed
broken-IE
bug
build/update
cant-reproduce
clarification-needed
documentation
duplicate
external-bugs
fixed
geo-restricted
gh-pages
help-wanted
hls
incomplete
invalid
linux
mpd
not-a-bug
nsfw
offtopic
out-of-scope
outdated-version
patch-available
pending-fixes
php
postprocessors
question
regression
request
request
site-support-request
site-update-request
spam
subtitles
test-needed
tv-provider-account-needed
windows
won't fix
yt-dlp
No labels
DRM
Good first issue
account-needed
broken-IE
bug
build/update
cant-reproduce
clarification-needed
documentation
duplicate
external-bugs
fixed
geo-restricted
gh-pages
help-wanted
hls
incomplete
invalid
linux
mpd
not-a-bug
nsfw
offtopic
out-of-scope
outdated-version
patch-available
pending-fixes
php
postprocessors
question
regression
request
request
site-support-request
site-update-request
spam
subtitles
test-needed
tv-provider-account-needed
windows
won't fix
yt-dlp
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
starred/youtube-dl-ytdl-org#26434
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @pingu1 on GitHub (Jun 12, 2023).
Checklist
Verbose log
Description
It looks like TF1 updated its played to either add real DRM protection or update something that makes downloads unavailable. The link pasted above worked when I used it on Friday June 9th, but is not working any more this week.
I tried with a bunch of video links from the TF1 website, and they're all resulting in the same error.
@dirkf commented on GitHub (Jun 12, 2023):
If that's really the case, those links are out of scope for yt-dl.
If there is a video that plays in the browser with DRM disabled (see these yt-dlp instructions, equally applicable) but cannot be fetched with yt-dl, please report it.
@dirkf commented on GitHub (Jun 12, 2023):
The API that the extractor uses to find the media for the problem link returns this, consistent with the error message:
@pingu1 commented on GitHub (Jun 12, 2023):
Alright then, not much to do I guess. Thanks for investigating though
@Vangelis66 commented on GitHub (Jun 12, 2023):
First of all, I'm not located within France, but my EU IP appears to be whitelisted 😜 ; trying below sample (2min worth) video clip (doesn't require a TF1 account):
https://www.tf1.fr/lci/le-temps-de-linfo/videos/mort-de-silvio-berlusconi-une-vie-de-succes-daffaires-et-de-polemiques-52186276.html
with latest
yt-dl, I get (much like the OP):However, running:
... one can get the URI of the cenc MPEG-DASH manifest:
(another way to get this is to use URL sniffing in your preferred browser, or use specialised browser extensions that detect MPD/M3U8 manifests 😉 ); of course, this is still no good for
yt-dl,... but if you remove three critical 😜 letters from that URI, this is no longer the case:
If "I" can do it, I'm certain python code can do it, too 😄 ...
EDIT: This "hack" doesn't work for full-length episodes 😞 , which, I suppose, most are after ...
@dirkf commented on GitHub (Jun 13, 2023):
Good spot: the existing extraction tactic does something similar, but as you note, and as the example JSON that I posted shows, it's not always applicable.
When it is, after appending
.replace('wdv.ism/', '.ism/')to the existing.replace()in theWatIEextractor:@dirkf commented on GitHub (Jun 13, 2023):
Additionally:
pver=4020003instead ofpver=4001000, but with the same resultWatIEextractor is obsolete (see http://www.wat.tv/video) and should be rolled into the TF1 extractor.../USP-0x0/06/70/13970670/ssm/13970670wdv.ism/13970670.mpdis an alias for the one with the long hex string in the penultimate component, but the URL with the "3 characters" removed gives an empty result.@dirkf commented on GitHub (Jun 13, 2023):
Even more additionally, the only other extractor that redirects to
WatIEisLCIIEwhich also appears to be obsolete: URLs redirect to tf1info.fr.@pingu1 commented on GitHub (Jun 13, 2023):
I'm guessing they're still working on the rollout of their new player, the very same URL that gave a
This video is DRM protected.yesterday is now giving the samePermission insuffisanteas @dirkf mentioned, whether I'm using a FR proxy or not.I'm going to continue testing, full episode URLs, and will let you know here if something changes, but from what I understand, some additional work may be required on yt-dl side too?
@dirkf commented on GitHub (Jun 13, 2023):
It seems that the current tactics used in the extractor, as amended above, will only give us a fraction of the available shows, so any research by local users (en France) as to the URLs accessed while starting to play a show would be useful. Even then, the extractor used to use a loophole similar to that shown by Vangelis66 to get playable media and there may not be an equivalent in the new player.
@dirkf commented on GitHub (Jun 13, 2023):
The page says:
Presumably a MAX account would restore access after 3 days.
@pingu1 commented on GitHub (Jun 13, 2023):
After playing a bit with the page (I even created a free account), the web page seem to require accepting all cookies to access full episodes. If you reject cookies, or in Incognito Mode, the player won't load the video.
I will make tests with cookies and will update in case it works.
@Vangelis66 commented on GitHub (Jun 13, 2023):
I can confirm 😭 ; 14hr ago, I saved this log:
but now it returns:
FWIW, the
.mpdabove (unfortunately, the URI is uniquely tied to my IP address and has an expiration timestamp) is still valid now : 13970670.mpd.txtI'm only speculating here, but perhaps the
inadequate permissionerror is linked to them (TF1) now enforcing a user log-in to access "full-content", as opposed to episode excerpts/clips, rather than to a geo-IP ban; supposedly, thisinadequate permissionerror could be mitigated via supplying cookies from a logged-in browser session (?) ...Also 14hr ago, I experimented with the idea of a "mobile" UA; I ran:
which yielded:
This HLS manifest (again, generated uniquely for my specific IP) is, sadly, Apple FairPlay DRMed: 13991716.m3u8.txt
So, I'm running out of further ideas 😢 ...
... Can confirm on my side:
while
@octavioj commented on GitHub (Jun 13, 2023):
I hope someone finds a way soon. This new player of theirs broke a lot of things. Kodi plugins no longer work and streamlink also yields "permission insuffisante". TF1 seems intent on making things difficult to watch, or only watchable on browsers.
@gamer191 commented on GitHub (Jun 13, 2023):
If you remove
context=MYTF1you get this instead:I haven't tested that format, but I would note that the stream id contains
nodrm!PS: Thanks @dirkf for pointing out that the API mentions whether the formats are drm protected. Also, thanks @Vangelis66 for suggesting the mobile user agent trick. I accidentally discovered this because I was preparing to test that with the api, and was establishing which API parameters were essential and which were trackers
@Vangelis66 commented on GitHub (Jun 13, 2023):
You're certainly onto something there 😜 👍 ; are you being geo-fenced?
Additionally, @bashonly wrote here:
Well, as already posted above, I'm not being geo-blocked, so putting the above two hints into practice for the extractor test video:
13970670.json
... and thus:
Sadly, only maxes out at SD (576p) ; the DRMed manifest affords HD (720p):
Still,
SD >>> nothing😜@gamer191 commented on GitHub (Jun 13, 2023):
Nope, I was just short on time when I discovered this and too excited to not share it
I wonder why yt-dlp (and presumably yt-dl) currently send that parameter. It’s probably to get 720p formats, but I’ll do a git blame later
A manifest is just a list of URLs. I wonder if we can modify that manifest and get 720p 👀
@dirkf commented on GitHub (Jun 14, 2023):
720 formats are available with some content.
However (and why I didn't find this when testing), the problem URL https://www.tf1.fr/tmc/quotidien-avec-yann-barthes/videos/quotidien-du-8-juin-2023-14878832.html still gives
Permission insuffisante. This may just mean that it needs an account.For the blame see https://github.com/yt-dlp/yt-dlp/issues/7303.
@dirkf commented on GitHub (Jun 14, 2023):
Same issue with the problem video https://www.tf1.fr/tmc/une-nounou-d-enfer/videos/une-nounou-denfer-s03-e7-un-homme-metamorphose-01883134.html from https://github.com/yt-dlp/yt-dlp/issues/7303.
@dirkf commented on GitHub (Jun 14, 2023):
With a playable show like the extractor test video where the highest non-DRM resolution is 576p, you can get the id (bandwidth) of the 720p content from the DRM DASH manifest and add the corresponding
Representationto the non-DRM DASH manifest:To make a locally saved manifest playable, the
BaseURL(typicallydash/) must be completed from the manifest URL:@gamer191 commented on GitHub (Jun 14, 2023):
thanks, I got stuck on that during my testing before.
I shall return the favor by pointing out that that manifest can then be downloaded using yt-dlp with
--enable-file-urls@dirkf commented on GitHub (Jun 14, 2023):
Indeed, that was my test:
yt-dl -g -f bestvideo ...yt-dlp -v -F --allow-unplayable ...yt-dlp -v -f bestvideo -o - manifest --enable-file-urls | mpv -@Vangelis66 commented on GitHub (Jun 14, 2023):
dirkf, code has to be backported from
yt-dlpso that whenyt-dlis presented with a standalone DASH (.mpd) or HLS (.m3u8) manifest, it should clearly print a message about the eventual presence of cenc/DRM (the same wayyt-dlpdoes); currently, the message:produced is a "generic" one and the failure to detect "video formats" could be due to several other reasons (besides CENC):
whereas:
I'm not certain myself whether the
?pver=query is needed after all, since I get the same"delivery":results with both:... but, as I found out, the
pver"matter" was taken care of ingithub.com/dirkf/youtube-dl@081e6680af😉 (not merged intomaster)... and that was
github.com/dirkf/youtube-dl@b0a31cc6a4+github.com/dirkf/youtube-dl@7a37aa70a8from a year ago...@pingu1 : Can you report any progress? What would be indeed useful is if you managed to decipher what extra queries (if any) can be used for accessing the
Permission insuffisantefull episodes...For "https://www.tf1.fr/tmc/quotidien-avec-yann-barthes/videos/quotidien-du-8-juin-2023-14878832.html" (id=13991716), "https://mediainfo.tf1.fr/mediainfocombo/13991716" now gives:
@pingu1 commented on GitHub (Jun 15, 2023):
So far, what I tested is
youtube-dl -F <test_url>with--cookies cookies.txt>ERROR: Permission insuffisante--add-header "Authorizartion: Bearer <JWT>" >ERROR: Permission insuffisante`However, the web page loads the video properly. So, here are a few requests made by the web page with their respective responses
https://mediainfo.tf1.fr/mediainfocombo/69e7b229-f421-4881-9539-a0409120ddfd?pver=5010000&context=MYTF1&topDomain=www.tf1.fr&platform=web&device=desktop&os=macOS&osVersion=10.15.7&playerVersion=5.10.0&productName=mytf1&productVersion=2.59.1&browser=chrome&browserVersion=113(you will notice this is showing I'm in Canada, but it's the same response if I'm using a FR proxy)
Note: trying
youtube-dl -F <mpd url>gives aERROR: No video formats found;as mentioned in other messagesWeb page then makes a call to
https://vod-das.cdn-0.diff.tf1.fr/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaXAiOiIxMDcuMTkwLjM0LjM2IiwiY21jZCI6IiIsImV4cCI6MTY4Njg0Nzc3NCwiZ2lkIjoiNjRlNDc2NDE1YzVlNGI0YWEyNGMxZGFiYjQ5NjQ2MjYiLCJpYXQiOjE2ODY4MzMzNzQsImlzcyI6ImRlbGl2ZXJ5IiwibWF4YiI6MjgwMDAwMCwic3RlbSI6Ii8yL1VTUC0weDAvMTcvMTYvMTM5OTE3MTYvc3NtL2UyOGJhOTA4MTQ0OGI3NTIwZDJlNzUzYTEzYTNjNzRjYjk3MjM4NDVmY2FmY2NlM2IyMTk0MDZjZjM1YzJkNmMuaXNtLzEzOTkxNzE2Lm1wZCIsInN1YiI6IjY0ZTQ3NjQxNWM1ZTRiNGFhMjRjMWRhYmI0OTY0NjI2In0.tWfYjGdANJBW-j67pdCoWTpANxeI68iGYr9ILbwbrg4/2/USP-0x0/17/16/13991716/ssm/e28ba9081448b7520d2e753a13a3c74cb9723845fcafcce3b219406cf35c2d6c.ism/13991716.mpdand THIS returns the following XML
Then the fragments start getting downloaded via GET sent to
https://vod-das.cdn-0.diff.tf1.fr/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaXAiOiIxMDcuMTkwLjM0LjM2IiwiY21jZCI6IiIsImV4cCI6MTY4Njg0Nzc3NCwiZ2lkIjoiNjRlNDc2NDE1YzVlNGI0YWEyNGMxZGFiYjQ5NjQ2MjYiLCJpYXQiOjE2ODY4MzMzNzQsImlzcyI6ImRlbGl2ZXJ5IiwibWF4YiI6MjgwMDAwMCwic3RlbSI6Ii8yL1VTUC0weDAvMTcvMTYvMTM5OTE3MTYvc3NtL2UyOGJhOTA4MTQ0OGI3NTIwZDJlNzUzYTEzYTNjNzRjYjk3MjM4NDVmY2FmY2NlM2IyMTk0MDZjZjM1YzJkNmMuaXNtLzEzOTkxNzE2Lm1wZCIsInN1YiI6IjY0ZTQ3NjQxNWM1ZTRiNGFhMjRjMWRhYmI0OTY0NjI2In0.tWfYjGdANJBW-j67pdCoWTpANxeI68iGYr9ILbwbrg4/2/USP-0x0/17/16/13991716/ssm/e28ba9081448b7520d2e753a13a3c74cb9723845fcafcce3b219406cf35c2d6c.ism/dash/e28ba9081448b7520d2e753a13a3c74cb9723845fcafcce3b219406cf35c2d6c-audio_fra=128000.dashNow, I'm not an expert of YTDL, I'm not sure how I could help you more, so if you have any specific commands for me to run / test locally, let me know.
@dirkf commented on GitHub (Jun 15, 2023):
If you can run those tests with a version that sends
pverwith50100000(inextractor/wat.py), that would determine whether sending the latest player ID is important.@Vangelis66 commented on GitHub (Jun 15, 2023):
ffmpegwill also download a locally saved MPD manifest with a valid (full, not "relative" to the master MPD one)BaseURL, if yourffmpegbuild has been compiled with an enabled dash demuxer; that last part requires you configure a third-party XML parser, like--enable-libxml2, when building; olderffmpegversions (< 5.0 ?) would also need the option-protocol_whitelist "file,http,tcp,https,tls"...Even then, I've found out that you have to manually specify the desired video+audio "Representations" to fetch via
-mapflags for video+audio streams, becauseffmpegisn't very good itself at automatically picking the best "qualities" available 😞 ...@Vangelis66 commented on GitHub (Jun 15, 2023):
Merci pingu1 for your voluminous report 👍 ; the type of JSON response with valid delivery url:
on a
se connecter-only TF1 free title is exactly whatyt-dlneeds to get its hands on to overcome thePermission insuffisantehurdle...Sadly,
https://www.tf1.fr/tmc/quotidien-avec-yann-barthes/videos/quotidien-du-8-juin-2023-14878832.html
now shows:
i.e., AIUI, now requires a paid subscription plan to be watched (which perplexes things even more 😠 ) ...
https://www.tf1.fr/tmc/quotidien-avec-yann-barthes/videos/quotidien-deuxieme-partie-du-14-juin-2023-35738352.html
is available for free for the next 6 days 😜 ...
Are you certain that the needed cookies (exported from your logged-in TF1 session) were in the "legacy"
Netscape HTTP Cookieformat? Because that's the only type of acookies.txtfile thatyt-dlcan successfully parse...... Thus, it should be possible, at least in theory, to replicate the browser's behaviour in
yt-dlitself; some times, passing an exportedcookies.txtfile isn't just enough; have you also tried passing toyt-dlthe exact user-agent string of the browser (Google Chrome 113?) the cookies were extracted from? Thus, you'd issue:If you do get access, then you'd probably hit again the original
This video is DRM protected.error that was current on June 12th, before they enforced the mandatory log-in on June 13th (😠) ...This was also mentioned (en francais) in the
Replays MyTF1issue thread, here and here ; FWIW, JWT online decrypter: "https://jwt.io/"... Without being logged-in to TF1, this simple request URI doesn't produce a
delivery urlfor me,so additional queries/request headers are needed to extort the sought-after MPD URI 😭 ...
I also noted that the web page doesn't use the media id (
"id":"13991716") of the show (yt-dldoes use that), but rather the"vid":"69e7b229-f421-4881-9539-a0409120ddfd"when making the API request, but, probably, this isn't a deal-breaker here...For freely and anonymously accessible TF1 clips, I compiled locally a
yt-dlbuild withgithub.com/dirkf/youtube-dl@081e6680afmerged-in, and on top of it the "hack" found by @gamer191 (👍):As discussed already, some of those (DRM-free) max out at 576p (id=13970670, vid=f769c9e0-31fe-4234-a2fe-77ecafd2f0f4), others (like the one above, id=13994339, vid=9fc76431-f588-4c87-b7ec-cca1d578ff71) go all the way up to 720p...
If it comes down to it, pingu1 may have to share that free account, at least with the current maintainer 😉 ; BTW, "downstream" have this to say:
https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed
@pingu1 commented on GitHub (Jun 16, 2023):
Alright, so, from what I'm seeing with the program that I watch
So yeah, the video link I provided last week already expired for "free accounts".
I usually use Brave, but the DRM protection of the video is currently totally messing up the browser, even if I allow the streaming of protected content.
To watch videos from a connected account, I now use Chrome (Version 113.0.5672.126) on MacOS (13.3.1) and use the
Get cookies.txt LOCALLYChrome extension to export all my cookies in the Netscape format.I tried exporting my cookies only for tf1 domain, as well as for all cookies for all domains, but using
always gives the same error
From the web browser, I was able to get the associated mpd link, but not much luck with it either
results in
@dirkf commented on GitHub (Jun 16, 2023):
From this
we get the query data:
For some reason they want the player version twice (in different formats) and the
contextandproductNameparameters are essentially duplicates.The current yt-dl master extractor
Let's look at https://www.tf1.fr/tmc/quotidien-avec-yann-barthes/videos/quotidien-deuxieme-partie-du-14-juin-2023-35738352.html (at least for the next
6j).yt-dl release uses Wat ID 13993604 and returns
Permission insuffisante. The result is returned with a version equivalent to yt-dl master and with a new version that sendspveras5010000, and when sending all the parameters listed above. Even getting theVideoID (93cc5844-be74-4343-8df9-0730b76dddf6) and using that instead of the Wat ID (so apparently replicating the request shown above) gets the same answer.Some additional headers must be required.
OT: enemies of the Académie will be happy to see the use of "miracle" and "stars" to describe the slimming drug that the US stars (f.) are mad for:
@Zovi3U commented on GitHub (Jun 16, 2023):
Hi @pingu1 , the autorization header with the right token is mandatory but this header dont pass the proxy or the VPN on my test.. please try to make a echo of your request to see the result on your side (https://echo.hoppscotch.io/ or http://httpbin.org/anything).
@enigmathix commented on GitHub (Jun 18, 2023):
Here is some code to get the tokens:
The token should be passed to the header "Autorization: Bearer TOKEN" to obtain the list of videos.
The refresh_token could be used to get a new token but it's not necessary here because the script does a login every time.
Edit: simplified code, bootstrap is not necessary with limited login parameters.
@Vangelis66 commented on GitHub (Jun 18, 2023):
The day before yesterday I caved in ( 😜 ) and registered a free MYTF1 account, which would satisfy below proviso:
FYI, you'd need:
The "episode" (actually, it's the last part [3] of a full emission lasting 1h40m in total 😉 ) I used for testing is:
https://www.tf1.fr/tmc/quotidien-avec-yann-barthes/videos/quotidien-du-14-juin-2023-34621006.html
(id=13993616, vid=f9d23aaf-7d06-4107-828f-d28e518f8032)
For dissecting this, I just used my browser's Developer Tools...
The crucial web request to MYTF1's API looks like this:
[*]: redacted for privacy
My testing has revealed that the only absolutely necessary query of that default set is
?context=MYTF1; when being logged-in, you additionally have to pass as Request Header the gigya-issuedauthorization, which can be grabbed from your browser; in my case, it looks like below:If you decode the Bearer string up to the last dot (.), you get:
Lifespan of the
authorizationis ca. 24h since first generation...Then:
which returns this:
The
cencMPEG-DASH manifest received looks like below (parts of it removed, for privacy concerns):This one contains an embedded type of "JWT", between the first and second "/" of the URI:
If you decode this string up to the second dot (.), you get:
Lifespan of this MPD is ca. 4h since generation 😉 ...
If you feed it to
yt-dlp --allow-u -F, you get:Moving forward requires you (somehow) download the encrypted MPD and then circumvent DRM protection by (somehow) acquiring decryption key[s], which is a strict NO-NO 🚫 on this issue tracker...
To conclude,
... and this is the furthest you can go with
yt-dl(and simply posted to demonstrate how you can override thePermission insuffisanteobstacle 😉 ) ...As to the if "clear" (DRM-free) streams can be obtained by applying the @gamer191 find, I don't have good news to share 😢 :
which, sadly, returns:
Indeed, using my
youtube-dllocal build (from sourcegithub.com/dirkf/youtube-dl@081e6680afbut with the gamer191 "hack" applied):Unless someone else has an epiphany, the
tf1IE/watIEcan be updated simply for the sake of those "free-without-a-mandatory-account" short episode excerpts/clips...@Vangelis66 commented on GitHub (Jun 20, 2023):
5 days ago, @pingu1 wrote:
... Funnily enough, I only spotted this now (prescription glasses need to be replaced, am afraid 😄 ), but if you did issue
Authorizartionas the Request Header's name, no wonder you couldn't "get in"; should've been, as analysed above,authorization😃 ...@rclsilver commented on GitHub (Jun 27, 2023):
Hi,
The issue seems to have been fixed for an other project with https://github.com/Catch-up-TV-and-More/plugin.video.catchuptvandmore/pull/1164
Any chance to backport the fix in youtube-dl?
@octavioj commented on GitHub (Jun 27, 2023):
I think it requires porting inputstream.adaptive from Kodi to youtube-dl and yt-dlp . It would be interesting but not sure how hard it would be.
@Vangelis66 commented on GitHub (Jun 27, 2023):
@rclsilver , @octavioj
I don't want to burst your bubbles (😜 ), but to my knowledge (which isn't perfect, BTW), any Kodi-type plugin does not circumvent the actual DRM protection, which is exactly what the major issue is in this tracker and application (
youtube-dl):1:
2:
3:
4:
5:
IIANM, Kodi employs either a specialised plugin or a headless Google Chrome browser (e.g. on Raspberry Pis) with a working/whitelisted Widevine CDM, the decrypted media stream is then fed on-the-fly to the user's monitor (e.g. TV screen) ...
https://kodi.tv/article/dev-journal-kodi-and-drm/
octavioj wrote:
Kodiis first and foremost a rich media streaming application, whileyt-dl/yt-dlpare primarily downloaders for local/offline playback in the player of one's choice and not in the player the media service chooses to use...Even if these two apps borrowed code from CUTVM that deals with the new "must-log-in" MYTF1 policy, it'd be a moot point if avenues to clear (DRM-free) MYTF1 streams aren't discovered...