Ascoware / get-iplayer-automator

The goal of Get iPlayer Automator is to allow iTunes and your Mac to become the hub for your British Television experience regardless of where in the world you are. Currently, Get iPlayer Automator allows you to download and watch BBC and ITV shows on your Mac. Series-Link/PVR functionality ensures you will never miss your favourite shows. Programmes are fully tagged and added to iTunes automatically upon completion. It is simple and easy to use, and runs on any machine running Mac OS X 10.7 or later. And since the shows are in iTunes, it is extremely easy to transfer them to your iPod, iPhone, or Apple TV allowing you to enjoy your shows on the go or on your television.
GNU General Public License v3.0
146 stars 26 forks source link

Unable to download ITV programmes #277

Open candcij opened 4 years ago

candcij commented 4 years ago

I am unable to download any ITV programme. (BBC downloads appears to be working correctly)

I am using Get iPlayer Automator Version 1.17 (20191130002) macOS Sierra Version 10.12.6 No proxy is being used.

The diagnosis shown for each failed ITV show is: Problem Unknown. Please submit a bug report from the application menu.

Example used: Endeavour Series 1 Episode 4

naq59 commented 4 years ago

I have the same. I think it may be a geocaching issue as it also means you can't watch using the ITV player directly.

rabrowne commented 4 years ago

I had a similar issue just recently in that ITV player would work on my Apple TV and iPad but not my iMac. Checking with my support team, they identified that ITV has added a new domain, sorry I don't have the details. Once they added that domain to my service I was able to use my iMac to watch ITV programmes and also downloading worked. Hope this helps.

PC-Thai commented 4 years ago

I have the same problem. BBC downloads working fine but for ITV i receive the same error message as candcij. It stopped working two days ago...

jayyisok commented 4 years ago

Able to watch on ITV’s website but not able to download. Receiving same error message as other users.

naq59 commented 4 years ago

My support team have now fixed it. It´s maybe not quite so stable as before but it works.

cgareth commented 4 years ago

Same issue; version 1.16, no proxy, in UK. I think the pertinent log entry is the last one: File "/Applications/Get iPlayer Automator.app/Contents/Resources/youtube-dl/youtube_dl/extractor/common.py", line 1281, in _sort_formats raise ExtractorError('No video formats found')

approtech commented 4 years ago

Same issue, even on a programme downloaded successfully a couple of weeks ago. I'm in the UK. Could ITV have implemented DRM? Programme attempted: Midsomer Murders S21 E02 (new) and E01 (successful on 25th January).

pmhird commented 4 years ago

Same issue here, can watch ITV hub on safari on iMac, have tried re-signing in to ITV, but to no avail, downloads fail. Critical part of log seems to be:

"ExtractorError: No video formats found; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type youtube-dl -U to update. Be sure to call youtube-dl with the --verbose flag and include its complete output."

PS BBC radio and TV working fine, just affects ITV. Using GIA 1.16

skovatch commented 4 years ago

I always hate it when people post things like "but it works for me", but in this case I have to. :-) I am able to download ITV shows with v1.17 -- I just tried Friday's Tipping Point.

I can update youtube-dl in the next release to see if that will help anyone, but I didn't notice anything in their release notes that indicated they fixed any problems with ITV. If it's failing for you, are you inside the UK?

candcij commented 4 years ago

Thanks for trying it for me (us). I'm afraid it still doesn't work for me and, yes, I am in the UK. I have just tried to download Friday's Tipping Point (the programme you downloaded successfully) and got exactly the same result as I had at the time I reported the issue: Problem Unknown. Please submit a bug report from the application menu.

BBC programmes are working fine, exactly as they have been for many months, but all ITV programmes I have tried during the last 3 days come up with the same error

Youngmath commented 4 years ago

Same problem here, another UK user getting exactly the same error messages trying to download White House Farm from ITV using 1.17 on a mac

ian02054 commented 4 years ago

Just to join in..it works SOMETOMES for me..if you keep retrying..sometimes over a couple of days..it will download..problems viewing itv live as well, so think it may be an issue with itv not gia.

On Sun, Feb 9, 2020, 12:00 Scott Kovatch notifications@github.com wrote:

I always hate it when people post things like "but it works for me", but in this case I have to. :-) I am able to download ITV shows with v1.17 -- I just tried Friday's Tipping Point.

I can update youtube-dl in the next release to see if that will help anyone, but I didn't notice anything in their release notes that indicated they fixed any problems with ITV. If it's failing for you, are you inside the UK?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/Ascoware/get-iplayer-automator/issues/277?email_source=notifications&email_token=AEDRDZTBGNCX5TQBIQ2SM4LRCAZD5A5CNFSM4KQYMJ52YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOELGR6SI#issuecomment-583868233, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEDRDZUPW73ATAIY5J2GCUTRCAZD5ANCNFSM4KQYMJ5Q .

cgareth commented 4 years ago

I always hate it when people post things like "but it works for me", but in this case I have to. :-) I am able to download ITV shows with v1.17 -- I just tried Friday's Tipping Point.

I can update youtube-dl in the next release to see if that will help anyone, but I didn't notice anything in their release notes that indicated they fixed any problems with ITV. If it's failing for you, are you inside the UK?

I too am in the UK; interestingly(?) GiA creates the programme folder on the Mac as usual but it is left empty after the "download failed" message. However I can watch ITV from their website, unlike Ian and RA here. An intriguing situation...!

Youngmath commented 4 years ago

Apologies, forgot to add that I can watch on the ITV web site, also that I am using the same version macOS Sierra Version 10.12.6 as candcij

pmhird commented 4 years ago

Hi, just to add, I upgraded to GIA 1.17 and it made no difference, still failing on ITV shows. And yes, I'm in the UK, no proxy in use.

steps39 commented 4 years ago

Hi, Same issue, in UK able to watch ITV web browser / phone apps etc., but no longer able to download ITV programmes. Verbose log information below. I don't know if this helps, but I tired to download the same programme using youtube-dl directly, I get a timeout error when trying to download web page, I have tried without the --no-geo-bypass and get the same issue and on two different internet service providers.

`ITV Download (ID=1a2292a0061): Downloading Cold Feet - Mon Feb 03 INFO: Preparing Request for Auth Info INFO: Requesting Metadata. DEBUG: Metadata response status code: 200 INFO: Metadata processed. DEBUG: youtube-dl args:["https://www.itv.com/hub/cold-feet/1a2292a0061", "-f", "mp4/best", "-o", "/Volumes/Macintosh HG/Cold Feet/Cold Feet.s09e04.Episode 4.%(ext)s", "--verbose"] DEBUG: youtube-dl environment: ["PYTHONPATH": "/Applications/Get iPlayer Automator.app/Contents/Resources", "PATH": "/Applications/Get iPlayer Automator.app/Contents/MacOS:/usr/bin"] [debug] System config: []

[debug] User config: [] [debug] Custom config: [] [debug] Command-line args: [u'https://www.itv.com/hub/cold-feet/1a2292a0061', u'-f', u'mp4/best', u'-o', u'/Volumes/Macintosh HG/Cold Feet/Cold Feet.s09e04.Episode 4.%(ext)s', u'--verbose']

[debug] Encodings: locale US-ASCII, fs utf-8, out None, pref US-ASCII [debug] youtube-dl version 2019.08.13

[debug] Python version 2.7.10 (CPython) - Darwin-15.6.0-x86_64-i386-64bit

[debug] exe versions: ffmpeg 4.1.3-tessus, ffprobe N-90346-g86c7d8df95, rtmpdump 2.4-102-ga3a600d-get_iplayer

[debug] Proxy map: {}

[debug] Using fake IP 25.67.233.219 (GB) as X-Forwarded-For.

[ITV] 1a2292a0061: Downloading webpage

[ITV] 1a2292a0061: Downloading XML

ITV Download (ID=1a2292a0061): youtube-dl finished downloading AppController: Downloads Finished

youtube-dl direct $youtube-dl --no-geo-bypass --verbose https://itv.com/hub/cold-feet/1a2292a0061 [debug] System config: [] [debug] User config: [] [debug] Custom config: [] [debug] Command-line args: ['--no-geo-bypass', '--verbose', 'https://itv.com/hub/cold-feet/1a2292a0061'] [debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8 [debug] youtube-dl version 2020.01.24 [debug] Python version 3.5.3 (CPython) - Linux-4.19.66-v7+-armv7l-with-debian-9.11 [debug] exe versions: ffmpeg 3.2.14-1, ffprobe 3.2.14-1 [debug] Proxy map: {} [ITV] 1a2292a0061: Downloading webpage ERROR: Unable to download webpage: <urlopen error [Errno 110] Connection timed out> (caused by URLError(TimeoutError(110, 'Connection timed out'),)) File "/home/pi/.local/lib/python3.5/site-packages/youtube_dl/extractor/common.py", line 627, in _request_webpage return self._downloader.urlopen(url_or_request) File "/home/pi/.local/lib/python3.5/site-packages/youtube_dl/YoutubeDL.py", line 2237, in urlopen return self._opener.open(req, timeout=self._socket_timeout) File "/usr/lib/python3.5/urllib/request.py", line 466, in open response = self._open(req, data) File "/usr/lib/python3.5/urllib/request.py", line 484, in _open '_open', req) File "/usr/lib/python3.5/urllib/request.py", line 444, in _call_chain result = func(*args) File "/home/pi/.local/lib/python3.5/site-packages/youtube_dl/utils.py", line 2728, in https_open req, **kwargs) File "/usr/lib/python3.5/urllib/request.py", line 1256, in do_open raise URLError(err)�

naq59 commented 4 years ago

I'm on 10.13.6/1.17 and I often have to retry downloading ITV at least twice before it works.

pmhird commented 4 years ago

Well I've retried the 3 Feb episode of Cold Feet about 200 times I reckon and its failed every time. (My GIA is set to auto-retry a failed download every 30mins)

Vangelis66 commented 4 years ago

@steps39 wrote:

I tried to download the same programme using youtube-dl directly, I get a timeout error when trying to download web page (snipped) $youtube-dl --no-geo-bypass --verbose https://itv.com/hub/cold-feet/1a2292a0061

... But that URI you fed yt-dl is not valid; that same time-out will happen when you try to visit that URI with a browser... 😉 Visiting the main ITVHub Cold Feet page: https://www.itv.com/hub/cold-feet/1a2292 the Feb 3rd episode has a URI of https://www.itv.com/hub/cold-feet/1a2292a0061

Using the latest (2020.01.24) yt-dl executable (sorry Mac users, I am currently on Windows), Cold Feet S09E04 comes down fine here:

youtube-dl --console-title --hls-prefer-native -c --no-part "https://www.itv.com/hub/cold-feet/1a2292a0061" --write-description --write-sub --convert-subs=srt =>

[ITV] 1a2292a0061: Downloading webpage
[ITV] 1a2292a0061: Downloading XML
WARNING: Unable to download XML: HTTP Error 504: Gateway Time-out
[ITV] 1a2292a0061: Downloading JSON metadata
[ITV] 1a2292a0061: Downloading m3u8 information
[info] Writing video description to: Episode 4-1a2292a0061.description
[info] Writing video subtitles to: Episode 4-1a2292a0061.en.vtt
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 232
[download] Destination: Episode 4-1a2292a0061.mp4
[download]   0.6% of ~552.47MiB at 860.39KiB/s ETA 13:11

... so, at first glance, I think we can absolve youtube-dl coding from any wrong-doing... :wink: The crux of the issue here is that (standalone) yt-dl is fed a www.itv.com hostname, not just a itv.com one (that results in time-outs).

Additional info: My own private tests have confirmed what is reported in some of the previous comments, i.e. that on ITV Hub's side some changes have been implemented recently; but the main playlist generating API (used in yt-dl's itv.py extractor) remained the same, so did the method of stream delivery (HLSe) and stream encryption (AES-128); the one thing that changed was the hostname of the CDN that serves the master and variant playlists, as well as the HLS fragments themselves; those using geo-fencing circumvention measures (e.g. smartDNS) may need to convey that change to their vendors (so that they "proxy" the new rather than the old CDN hostname...).

And I'll stress once again here the fact that having ITV Hub VOD streams working in (desktop) Chrome and Firefox doesn't mean automatically that ITV fetches via yt-dl should equally work; Chrome and Firefox by default get served MPEG-DASH streams with Common Encryption (cenc) DRM (these require a working Widevine CDM in the browser), that yt-dl will NEVER support natively. Desktop Safari might equally be served the above type of DRM'd streams, but I can't check this myself... 😞

Best regards 😄

sxmpete commented 4 years ago

If I understand Vangellis66 comments correctly, GIA (yt-dl) needs to reference www.itv.com, not itv.com. However, as verbose log below shows, GIA is generating the fully qualified domain name, and it's still getting gateway timeout. I don't understand how this could be a vpn vendor issue?? Get iPlayer Automator 1.17 Initialized.

INFO: Loading proxy settings... INFO: No proxy to load INFO: Proxy load complete. INFO: No proxy will be used AppController: Starting Downloads

Downloading Show 1/1:

ITV Download (ID=2a1229a0028): Downloading Endeavour - Sun Feb 09 INFO: Preparing Request for Auth Info INFO: Requesting Metadata. DEBUG: Metadata response status code: 200 INFO: Metadata processed. DEBUG: youtube-dl args:["https://www.itv.com/hub/endeavour/2a1229a0028", "-f", "mp4/best", "-o", "/Users/ xxxxxxxxxxx /Movies/TV Shows/Endeavour/Endeavour.s07e01.Episode 1.%(ext)s", "--verbose"] DEBUG: youtube-dl environment: ["PYTHONPATH": "/Users/ xxxxxxxxxxx /Downloads/Get iPlayer Automator.app/Contents/Resources", "PATH": "/Users/ xxxxxxxxxxx /Downloads/Get iPlayer Automator.app/Contents/MacOS:/usr/bin"] [debug] System config: []

[debug] User config: [] [debug] Custom config: [] [debug] Command-line args: [u'https://www.itv.com/hub/endeavour/2a1229a0028', u'-f', u'mp4/best', u'-o', u'/Users/ xxxxxxxxxxx /Movies/TV Shows/Endeavour/Endeavour.s07e01.Episode 1.%(ext)s', u'--verbose']

[debug] Encodings: locale US-ASCII, fs utf-8, out None, pref US-ASCII [debug] youtube-dl version 2019.08.13

[debug] Python version 2.7.10 (CPython) - Darwin-15.6.0-x86_64-i386-64bit

[debug] exe versions: ffmpeg 4.1.3-tessus, ffprobe N-90346-g86c7d8df95, rtmpdump 2.4-102-ga3a600d-get_iplayer

[debug] Proxy map: {}

[debug] Using fake IP 25.201.16.83 (GB) as X-Forwarded-For.

[ITV] 2a1229a0028: Downloading webpage

[ITV] 2a1229a0028: Downloading XML

WARNING: Unable to download XML: HTTP Error 504: Gateway Time-out

[ITV] 2a1229a0028: Downloading JSON metadata

[ITV] 2a1229a0028: Downloading m3u8 information

WARNING: Failed to download m3u8 information: <urlopen error [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590)>

ERROR: No video formats found; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type youtube-dl -U to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

ITV Download (ID=2a1229a0028): youtube-dl finished downloading AppController: Downloads Finished

Puzzled Peter

Vangelis66 commented 4 years ago

@sxmpete wrote:

If I understand @Vangelis66's comments correctly, GIA (yt-dl) needs to reference www.itv.com, not itv.com.

Hello 😄 ; my comment was mentioning the standalone yt-dl app, not GiA; I wrote:

The crux of the issue here is that yt-dl is fed a www.itv.com hostname, not just an itv.com one (that results in time-outs).

(I've now edited my original post to make this more clear... 😉 )

This was in response to @steps39's attempt to test standalone yt-dl for id=1a2292a0061; his GiA log confirms though that GiA itself is feeding embedded yt-dl the correct ITV hostname:

DEBUG: youtube-dl args:["https://**www**.itv.com/hub/cold-feet/1a2292a0061",

which is something you, too, confirm:

However, as verbose log below shows, GIA is generating the fully qualified domain name

The logic in testing the standalone yt-dl app is that if the fetch succeeds on one's setup (ISP/[W]LAN/OS version/DNS setup/UK-proxying solutions, etc.), then the GiA embedded yt-dl code should be exonerated; but possibly this approach is flawed, too, because, at least for Windows, the standalone yt-dl executable is an all-in-one solution, comprising all needed python (3.4.4) modules, not depending on OS installed python, which is the case for yt-dl on a Mac...

and it's still getting gateway timeout.

Are you referring to this?

[ITV] 2a1229a0028: Downloading XML WARNING: Unable to download XML: HTTP Error 504: Gateway Time-out

This is an expected and quite benign warning! It's the result of relic code inside yt-dl's ITV extractor from the era when ITV (player, not hub) used to deliver VOD through the RTMPE protocol; back then, they were using an older playlist API that would generate the stream data inside an XML file; that API has been deprecated for two years already, the XML file it used to produce is no more, hence the error spewed by yt-dl; there's an open issue over at the yt-dl tracker

https://github.com/ytdl-org/youtube-dl/issues/23177

reporting the above behaviour...

Failing to acquire an XML playlist, yt-dl moves over to trying the current playlist API, which generates results in the JSON format and, by your posted log, you do succeed in that stage:

[ITV] 2a1229a0028: Downloading JSON metadata [ITV] 2a1229a0028: Downloading m3u8 information

The most important part of your verbose log (and many thanks for providing that 👍 ) is the following one:

WARNING: Failed to download m3u8 information: <urlopen error [SSL:TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590)>

i.e. *you are failing to download (over HTTPS) the master HLS playlist (.m3u8) because of secure connection (SSL/TLS) issues**! No master playlist accessed, of course, results in

ERROR: No video formats found

In 2020, the deemed insecure TLS protocols v1.0 and v1.1 are being deprecated/phased out in servers, a client needing to make a secure connection must support at minimum TLS v1.2 (the current standard) and, preferably, TLS v1.3 (the finalised future standard).

I don't understand how this could be a VPN vendor issue??

If you're using a full blown VPN connection in your client, then you're simply connecting to a VPN server; the rest of the requests/connections to the ITV infrastructure (webpages, CDN, etc.) you're forwarding to that server are handled solely by the VPN server (the configuration of which is beyond your reach), so of course any connection issue when using a VPN can be a VPN vendor issue!

On your Mac, for connection purposes, yt-dl uses the OS provided python modules; I notice that

[debug] Python version 2.7.10 (CPython) - Darwin-15.6.0-x86_64-i386-64bit

Isn't that kinda old? I'm sure it can handle TLS v1.0, but can it handle v1.2/v1.3?

I've checked the new CDN hostname ITV now use to stream content (it's actually an Akamai node) on https://www.ssllabs.com/ssltest/index.html and it resolves to 2 IPs, 23.61.194.11, 23.61.194.43, both these servers support TLS 1.0/1.2/1.3 (but NOT 1.1) ... So, any secure connection issues may arise between VPN server and Akamai CDN, and between VPN server and client host (Mac computer); but I'm really out of my depth here, so my troubleshooting stops at this very point 😢 ...

@skovatch, does all this make any sense to you? Is it a case of obsolete python libraries on older Macs the cause of this issue, especially for UK users not behind a VPN? I'm sorry, but I can't offer additional advice...

skovatch commented 4 years ago

WARNING: Failed to download m3u8 information: <urlopen error [SSL:TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590)>

i.e. *you are failing to download (over HTTPS) the master HLS playlist (.m3u8) because of secure connection (SSL/TLS) issues**!

In 2020, the deemed insecure TLS protocols v1.0 and v1.1 are being deprecated/phased out on servers, a client needing to make a secure connection must support at minimum TLS v1.2 (the current standard) and, preferably, TLS v1.3 (the finalised future standard).

On your Mac, for connection purposes, yt-dl uses the OS provided python modules; I notice that

[debug] Python version 2.7.10 (CPython) - Darwin-15.6.0-x86_64-i386-64bit

Isn't that kinda old? I'm sure it can handle TLS v1.0, but can it handle v1.2/v1.3?

@skovatch, does all this make any sense to you? Is it a case of obsolete python libraries on Macs the cause of this issue, especially for UK users not behind a VPN? I'm sorry, but I can't offer additional advice...

@Vangelis66 thanks as always for your analysis. What you describe makes sense, but I think we can test it to be sure. For GiA, I use the system Python in /usr/bin, since I can safely assume it's available. On macOS Catalina, that is v2.7.16, which is fine. Older versions of macOS had a vulnerable version of OpenSSL that is used by Python for secure connections.

If it's failing for you, run this command in Terminal and report back here with the output.

/usr/bin/python -c "import json, urllib2; print json.load(urllib2.urlopen('https://www.howsmyssl.com/a/check'))['tls_version']"

If it doesn't report back TLS 1.2 or later that's a strong hint it might be the problem. If it is, I should be able to add a newer version of pyOpenSSL that is compatible.

cgareth commented 4 years ago

WARNING: Failed to download m3u8 information: <urlopen error [SSL:TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590)>

i.e. *you are failing to download (over HTTPS) the master HLS playlist (.m3u8) because of secure connection (SSL/TLS) issues! In 2020, the deemed insecure** TLS protocols v1.0 and v1.1 are being deprecated/phased out on servers, a client needing to make a secure connection must support at minimum TLS v1.2 (the current standard) and, preferably, TLS v1.3 (the finalised future standard). On your Mac, for connection purposes, yt-dl uses the OS provided python modules; I notice that

[debug] Python version 2.7.10 (CPython) - Darwin-15.6.0-x86_64-i386-64bit

Isn't that kinda old? I'm sure it can handle TLS v1.0, but can it handle v1.2/v1.3? @skovatch, does all this make any sense to you? Is it a case of obsolete python libraries on Macs the cause of this issue, especially for UK users not behind a VPN? I'm sorry, but I can't offer additional advice...

@Vangelis66 thanks as always for your analysis. What you describe makes sense, but I think we can test it to be sure. For GiA, I use the system Python in /usr/bin, since I can safely assume it's available. On macOS Catalina, that is v2.7.16, which is fine. Older versions of macOS had a vulnerable version of OpenSSL that is used by Python for secure connections.

If it's failing for you, run this command in Terminal and report back here with the output.

/usr/bin/python -c "import json, urllib2; print json.load(urllib2.urlopen('https://www.howsmyssl.com/a/check'))['tls_version']"

If it doesn't report back TLS 1.2 or later that's a strong hint it might be the problem. If it is, I should be able to add a newer version of pyOpenSSL that is compatible.

Hi Scott, My result is: TLS 1.0 (Sierra 10.12.4)

Youngmath commented 4 years ago

Good morning I get TLS 1.0 also on Sierra 10.12.6

Cheers

sxmpete commented 4 years ago

I have done a bit of investigation into this issue and have uncovered the following info. Apple has deprecated openssl support from El Capitan onwards at version 0.9.8 which only supports TSL 1.0. https://pyfound.blogspot.com/2017/01/time-to-upgrade-your-python-tls-v12.html
https://news.ycombinator.com/item?id=13539034

Either/both my VPN or ITV must have recently eliminated support for TSL V1.0 resulting in the secure connection issue. Since problem is experienced by folk inside UK with no VPN, then at least ITV has made the change.

Obvious solution is to upgrade to a version of openssl that supports newer TLS versions.

One approach is to download 3.x python binary from python.org (which contains the latest openssl) and installs 3.x python in parallel with system version. This is apparently recommended since some apps still require python 2.7.4. Version 3 is installed at usr>local (vs Apple supplied version in usr>bin) : however, I can’t figure out how to get GIA to use the new python/openssl instead of the system default. http://osxdaily.com/2018/06/13/how-install-update-python-3x-mac/ https://developer.hpe.com/blog/updating-python-and-openssl-on-os-x

Another approach would be to upgrade to latest version of openssl. https://www.openssl.org/source/ https://stackoverflow.com/questions/56639315/updating-openssl-to-1-1-1-on-macos
However, I don’t know how to compile a binary and with the second Brew installation method, there are symbolic links and PATH considerations which are a bit beyond me.

Hopefully someone a bit more technical can leverage this info into a solution for those less technically inclined…

xend0g commented 4 years ago

Verified the problem (using Get iPlayer Automator Version 1.17). On one machine with Sierra 10.12.6 (TLS 1.0) I have not been able to download ITV programmes, since 5th Feb; I tried it on a second machine with High Sierra 10.13.6 (TLS 1.2) and was able to download ITV programmes today. Yay! So the TLS/python upgrade will be needed from now on, for lower versions of Apple (10.12 or below), but how to get GIA to link with another version of python is beyond me.

steps39 commented 4 years ago

@Vangelis66 - thanks for pointing out my obvious mistake. @skovatch I running El Capitan 10.11.6 so Python 2.7.10 TLS 1.0

I have installed Python 2.7.17 such that if command was python alone then correct TLS would be used see below.

@skovatch would it be easy to just loose the /usr/bin from the python call, rather a hack and requires people needing to upgrade python (I hope there are no side-effects - I backed things up first). Alternative, I noted that using pip to install youtube-dl on a Raspberry Pi it uses Python 3.5 (CPython), so would now be the time to shift to Python 3 on GiA?


python -V reports 2.7.10 and /usr/bin/python -V report 2.7.10

So as administrator I have installed Python 2.7.17 from https://www.python.org/downloads/release/python-2717/ - then run the included Install Certificates.command and Update Shell Profile.command.

Now python -V report 2.7.17, python2 -V reports 2.7.17 and /usr/bin/python -V still report 2.7.10

Now I have: Command python or python2: Python 2.7.17 TLS 1.2 Command /usr/bin/python: Python 2.7.10 TLS 1.0

So if GiA used just python then it should work at least in terms of TLS.

howyallare commented 4 years ago

So the TLS/python upgrade will be needed from now on, for lower versions of Apple (10.12 or below),

Not an issue for High Sierra and above because that is when Apple switched to LibreSSL

but how to get GIA to link with another version of python is beyond me.

For now, create a symlink in the location where GiA looks for binaries using one of:

ln -sf /usr/local/bin/python2 /Applications/Get\ iPlayer\ Automator.app/Contents/MacOS/python

Remove the symlink if necessary when GiA is updated

EDIT 2022-02-01: Install Python 2 for compatibility with pycrypto package provided by GiA

steps39 commented 4 years ago

@howyallare :-) GiA now working on El Capitan 10.11.6 again having installed Python 2.7.17 and put the symlink in place, thanks.

websteth commented 4 years ago

So what all needs to be done to make this work again on Catalina?

From: steps39 notifications@github.com Date: Wednesday, February 12, 2020 at 10:08 AM To: Ascoware/get-iplayer-automator get-iplayer-automator@noreply.github.com Cc: Subscribed subscribed@noreply.github.com Subject: Re: [Ascoware/get-iplayer-automator] Unable to download ITV programmes (#277)

@howyallarehttps://github.com/howyallare :-) GiA now working on El Capitan 10.11.6 again having installed Python 2.7.17 and put the symlink in place, thanks.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/Ascoware/get-iplayer-automator/issues/277?email_source=notifications&email_token=AFIY35JUJKMMPFAOCUOJOSLRCQNGFA5CNFSM4KQYMJ52YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOELRKWHA#issuecomment-585280284, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AFIY35LF6KFPQAIN5URBHLTRCQNGFANCNFSM4KQYMJ5Q.

cgareth commented 4 years ago

@howyallare :-) GiA now working on El Capitan 10.11.6 again having installed Python 2.7.17 and put the symlink in place, thanks.

Could you run what you've done by us, step by step? Cheers!

websteth commented 4 years ago

Still having issues in catalina. I've got Python 3 installed and set the symlink but still getting the errors.

howyallare commented 4 years ago

So what all needs to be done to make this work again on Catalina?

If you are seeing this on Catalina:

WARNING: Failed to download m3u8 information: <urlopen error [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590)>

something both bad and unusual has happened to your system. I suspect you have some other problem.

skovatch commented 4 years ago

I think the ultimate solution is going to be including a compatible python interpreter in GiA. Otherwise there's no way to control what version of python is installed. Currently, due to how processes are launched on macOS I have to specify an environment in which they will run, and I know python is in /usr/bin. But since I can't assume that a version that will work with ITV is available, I'll have to add my own.

Let me think about this for a bit. There are a couple of tutorials on how to include python in an application so I should be able to figure something out.

steps39 commented 4 years ago

@cgareth "Could you run what you've done by us, step by step? Cheers!" In hindsight it would be better to install a separate Python rather than alter the default framework as I have done. However, for El Capitan this worked for me, but it changes Python on your system so may break other programs which rely on 2.7.10: Log on as administrator I installed Python 2.7.17 from https://www.python.org/downloads/release/python-2717/ - then ran the included Install Certificates.command and Update Shell Profile.command. Opened a terminal and upgraded the libraries: python2 -m pip install --upgrade requests Then I ran: ln -sf /usr/local/bin/python2 /Applications/Get\ iPlayer\ Automator.app/Contents/MacOS/python Then logged out of Administrator and ran GiA as normal user successfully downloading ITV programmes.

Edit correct python3 to python2 in link

steps39 commented 4 years ago

@skovatch thanks for your continuing work on this. Great that GiA is still able to work on El Capitan, as having Mac Pro 1.1 I can not upgrade to any higher operating system. So @howyallare suggestion of just linking to newer version of python fixed things for me - ln -sf /usr/local/bin/python2 /Applications/Get\ iPlayer\ Automator.app/Contents/MacOS/python, but incorporation of python should make support easier as less possibility for differences in environment breaking GiA.

pmhird commented 4 years ago

Hi,

I followed these steps exactly on El Capitan and we have a result! Well done guys, you are geniuses! Thank you for your efforts.

On 13 Feb 2020, at 08:39, steps39 notifications@github.com wrote:

 @cgareth "Could you run what you've done by us, step by step? Cheers!" In hindsight it would be better to install a separate Python rather than alter the default framework as I have done. However, for El Capitan this worked for me, but it changes Python on your system so may break other programs which rely on 2.7.10: Log on as administrator I installed Python 2.7.17 from https://www.python.org/downloads/release/python-2717/ - then ran the included Install Certificates.command and Update Shell Profile.command. Opened a terminal and upgraded the libraries: python2 -m pip install --upgrade requests Then I ran: ln -sf /usr/local/bin/python3 /Applications/Get\ iPlayer\ Automator.app/Contents/MacOS/python Then logged out of Administrator and ran GiA as normal user successfully downloading ITV programmes.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

howyallare commented 4 years ago

In hindsight it would be better to install a separate Python rather than alter the default framework as I have done.

You didn't actually replace the default Python framework itself, so scripts that use /usr/bin/python should work as before. Your shell environment now prefers the newer python binary, which comes as part of its own Python framework, so only scripts that use the first python found in the PATH environment variable would be affected, which isn't likely to be an issue for the average user. This is complicated a bit because by default the python.org installer places links in /usr/local/bin, which is also in $PATH. if you want to avoid that, customise the installation by deselecting the "Unix command line tools" and "Shell profile updater" packages. The symlink would then be (for Python 2):

ln -sf /Library/Frameworks/Python.framework/Versions/2.7/bin/python2 /Applications/Get\ iPlayer\ Automator.app/Contents/MacOS/python

You can use that symlink even if you perform the default installation of Python 2.

It won't make any difference to GiA running youtube-dl, but to undo PATH changes from the default installation, remove the lines it placed in ~/.bash_profile that add /Library/Frameworks/Python.framework/Versions/2.7/bin to the PATH environment variable and re-login. Also delete items in /usr/local/bin that are symlinks into that directory.

cgareth commented 4 years ago

@cgareth "Could you run what you've done by us, step by step? Cheers!"

In hindsight it would be better to install a separate Python rather than alter the default framework as I have done.

However, for El Capitan this worked for me, but it changes Python on your system so may break other programs which rely on 2.7.10:

Log on as administrator (if necessary) :

Download Python 2.7.17 from https://www.python.org/downloads/release/python-2717/ - and run the included "Install Certificates.command" and "Update Shell Profile.command".

Open the Terminal application and in order to upgrade the libraries, copy/paste this, and hit return:

python2 -m pip install --upgrade requests

Then copy/paste this, and hit return:

ln -sf /usr/local/bin/python2 /Applications/Get\ iPlayer\ Automator.app/Contents/MacOS/python

Log out of Administrator (if necessary), run GiA and enjoy successfully downloading ITV programmes.

Thank you very much Steps39, and for your advice too, @skovatch ; that has worked for me. I've taken the liberty of dumbing down these instructions even more. Really appreciate your efforts!

approtech commented 4 years ago

@cgareth - Many thanks for the very straightforward instructions. I tried a couple of times with no success, until I remembered that my GiA is in a sub-folder of Applications. After amending the final location string to paste into Terminal, everything is now back to normal.

Youngmath commented 4 years ago

@cgareth You are a toff sir, thank you and everyone else for your help. All good now!

m1ctk commented 4 years ago

I'm running macOS Sierra , is there not going to be a simple update to fix the ITV download problem ?

ian02054 commented 4 years ago

Same here on high sierra.

Lordsnooty05 commented 4 years ago

Yes, the simple answer I found is go back one edition and that worked for me. All these problems happened after Scott tried to fix the problems of the subtitles (which I never used) and then I couldn’t I couldn’t download ITV programs. So I have moved back one edition and it is downloading ITV programs..... no problem. This will do for me until a fix is found.

ian02054 commented 4 years ago

Thx.. i forgot you had said that previously.

On Thu, Feb 20, 2020, 06:24 Lordsnooty05 notifications@github.com wrote:

Yes, the simple answer I found is go back one edition and that worked for me. All these problems happened after Scott tried to fix the problems of the subtitles (which I never used) and then I couldn’t I couldn’t download ITV programs. So I have moved back one edition and it is downloading ITV programs..... no problem. This will do for me until a fix is found.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/Ascoware/get-iplayer-automator/issues/277?email_source=notifications&email_token=AEDRDZTGTO53MLOBAVV5MPTRDZR5XA5CNFSM4KQYMJ52YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEMNQDSY#issuecomment-588972491, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEDRDZRLIWYL2Z6VVV6CUOTRDZR5XANCNFSM4KQYMJ5Q .

m1ctk commented 4 years ago

1.18.1 you mean ? Makes no difference with me

Lordsnooty05 commented 4 years ago

No the one prior to 1.18.…..look it up. It's the one prior to fixing the Subtitles.....it downloads all ITV programmes without a hitch. Scott tried to fix the subtitles that some people wanted and everything went wrong but I'm sure he will sort it out but in the meantime this will work

m1ctk commented 4 years ago

17.2 or what ? Let me know please

Lordsnooty05 commented 4 years ago

Version 1.17 (20191130002)..this is the one I got and it is working right out of the box and downloads all ITV and BBC programmes (of course I don't know about subtitles as I don't use them as I am from the UK and speak English) I think this is the link for it https://github.com/Ascoware/get-iplayer-automator/releases/tag/v1.17

m1ctk commented 4 years ago

I found it but still no go with me https://github.com/Ascoware/get-iplayer-automator/releases/download/v1.17/Get.iPlayer.Automator.v1.17.b20191130002.zip