Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Doesn’t always work on iOS safari #28

Closed
ibrahimk157 opened this issue Mar 12, 2020 · 7 comments
Closed

Doesn’t always work on iOS safari #28

ibrahimk157 opened this issue Mar 12, 2020 · 7 comments
Labels
is: bug Something isn't working

Comments

@ibrahimk157
Copy link

Hello,

When using this on safari on iOS, I don’t always get the download prompt. In most cases, it just plays the video with absolutely no prompt to download at all!

@Tzahi12345 Tzahi12345 added the is: bug Something isn't working label Mar 12, 2020
@Tzahi12345
Copy link
Owner

Interesting. I think I may see this bug as well in my testing. I'll look more into it and keep this issue updated.

@ibrahimk157
Copy link
Author

ibrahimk157 commented Mar 13, 2020

Interesting. I think I may see this bug as well in my testing. I'll look more into it and keep this issue updated.

I forgot to mention, that in most cases, when clicking the little floppy disk icon, it just gets stuck in a loop. Nothing really happens. Maybe that could be of some help?

Also, I’m not sure of this, but it could be that the docker container is being throttled for some odd reason. Not sure if it’s just me, but I think it’s a bit too slow compared to anything else being run on that same VPS (it’s the only docker container I have, everything else runs directly on the VPS). I tried running youtubedl-material on the VPS directly (To see if the issue still persists), but npm install gave the following error (probably has something to do with me being on centos 7 rather than ubuntu, in that case ubuntu doesn’t seem to work on my host for some weird reason):

npm ERR! errno HPE_UNEXPECTED_CONTENT_LENGTH
npm ERR! request to http://registry.npmjs.org/async failed, reason: Parse Error

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-03-13T05_18_30_495Z-debug.log

And here’s the log:

1 verbose cli [ '/usr/bin/node', '/bin/npm', 'install' ]
2 info using npm@6.4.1
3 info using node@v10.13.0
4 verbose npm-session 40108d960af040ff
5 silly install runPreinstallTopLevelLifecycles
6 silly preinstall backend@1.0.0
7 info lifecycle backend@1.0.0~preinstall: backend@1.0.0
8 silly install loadCurrentTree
9 silly install readLocalPackageData
10 timing stage:loadCurrentTree Completed in 25ms
11 silly install loadIdealTree
12 silly install cloneCurrentTreeToIdealTree
13 timing stage:loadIdealTree:cloneCurrentTree Completed in 1ms
14 silly install loadShrinkwrap
15 timing stage:loadIdealTree:loadShrinkwrap Completed in 9ms
16 silly install loadAllDepsIntoIdealTree
17 silly fetchPackageMetaData error for archiver@^3.1.1 request to http://registry.npmjs.org/archiver failed, reason: Parse Error
18 silly fetchPackageMetaData error for async@^3.1.0 request to http://registry.npmjs.org/async failed, reason: Parse Error
19 silly fetchPackageMetaData error for compression@^1.7.4 request to http://registry.npmjs.org/compression failed, reason: Parse Error
20 silly fetchPackageMetaData error for config@^3.2.3 request to http://registry.npmjs.org/config failed, reason: Parse Error
21 silly fetchPackageMetaData error for express@^4.17.1 request to http://registry.npmjs.org/express failed, reason: Parse Error
22 silly fetchPackageMetaData error for lowdb@^1.0.0 request to http://registry.npmjs.org/lowdb failed, reason: Parse Error
23 silly fetchPackageMetaData error for shortid@^2.2.15 request to http://registry.npmjs.org/shortid failed, reason: Parse Error
24 silly fetchPackageMetaData error for exe@^1.0.2 request to http://registry.npmjs.org/exe failed, reason: Parse Error
25 silly fetchPackageMetaData error for youtube-dl@^3.0.2 request to http://registry.npmjs.org/youtube-dl failed, reason: Parse Error
26 silly fetchPackageMetaData error for uuidv4@^6.0.6 request to http://registry.npmjs.org/uuidv4 failed, reason: Parse Error
27 silly fetchPackageMetaData error for async@^3.1.0 request to http://registry.npmjs.org/async failed, reason: Parse Error
28 silly fetchPackageMetaData error for archiver@^3.1.1 request to http://registry.npmjs.org/archiver failed, reason: Parse Error
29 silly fetchPackageMetaData error for compression@^1.7.4 request to http://registry.npmjs.org/compression failed, reason: Parse Error
30 silly fetchPackageMetaData error for config@^3.2.3 request to http://registry.npmjs.org/config failed, reason: Parse Error
31 silly fetchPackageMetaData error for lowdb@^1.0.0 request to http://registry.npmjs.org/lowdb failed, reason: Parse Error
32 silly fetchPackageMetaData error for express@^4.17.1 request to http://registry.npmjs.org/express failed, reason: Parse Error
33 silly fetchPackageMetaData error for shortid@^2.2.15 request to http://registry.npmjs.org/shortid failed, reason: Parse Error
34 silly fetchPackageMetaData error for exe@^1.0.2 request to http://registry.npmjs.org/exe failed, reason: Parse Error
35 silly fetchPackageMetaData error for uuidv4@^6.0.6 request to http://registry.npmjs.org/uuidv4 failed, reason: Parse Error
36 silly fetchPackageMetaData error for youtube-dl@^3.0.2 request to http://registry.npmjs.org/youtube-dl failed, reason: Parse Error
37 timing stage:rollbackFailedOptional Completed in 1ms
38 timing stage:runTopLevelLifecycles Completed in 878ms
39 silly saveTree backend@1.0.0
40 verbose type system
41 verbose stack FetchError: request to http://registry.npmjs.org/async failed, reason: Parse Error
41 verbose stack     at ClientRequest.req.on.err (/usr/lib/node_modules/npm/node_modules/node-fetch-npm/src/index.js:68:14)
41 verbose stack     at ClientRequest.emit (events.js:182:13)
41 verbose stack     at Socket.socketOnData (_http_client.js:447:9)
41 verbose stack     at Socket.emit (events.js:182:13)
41 verbose stack     at addChunk (_stream_readable.js:283:12)
41 verbose stack     at readableAddChunk (_stream_readable.js:264:11)
41 verbose stack     at Socket.Readable.push (_stream_readable.js:219:10)
41 verbose stack     at TCP.onStreamRead (internal/stream_base_commons.js:94:17)
42 verbose cwd /home/ibrahimk157/youtubedl-material
43 verbose Linux 3.10.0-1062.12.1.el7.centos.plus.x86_64
44 verbose argv "/usr/bin/node" "/bin/npm" "install"
45 verbose node v10.13.0
46 verbose npm  v6.4.1
47 error code HPE_UNEXPECTED_CONTENT_LENGTH
48 error errno HPE_UNEXPECTED_CONTENT_LENGTH
49 error request to http://registry.npmjs.org/async failed, reason: Parse Error
50 verbose exit [ 1, true ]

It just seems to be a bunch of issues flooding in all at once, apologies if this is overwhelming.

@Tzahi12345
Copy link
Owner

Tzahi12345 commented Mar 13, 2020

It just seems to be a bunch of issues flooding in all at once, apologies if this is overwhelming.

The more info the merrier :)

I forgot to mention, that in most cases, when clicking the little floppy disk icon, it just gets stuck in a loop. Nothing really happens. Maybe that could be of some help?

Do you get any errors when it fails to download from the web client?

To see these, click inspect element, then console to open up the console. Errors should be visible in red.

Just realized this isn't possible in iOS. Oops! Is it an iOS-only problem or does it not work on desktop as well?

npm install gave the following error (probably has something to do with me being on centos 7 rather than ubuntu, in that case ubuntu doesn’t seem to work on my host for some weird reason)

From a first glance it doesn't look like an OS issue, it looks like an NPM issue (I may be wrong).

Apparently someone else had a similar error, and what fixed it for them is updating npm, and then cleaning the npm cache.

To do this, run these commands:

npm install -g npm@latest
npm cache clean

Let me know if this fixes the npm error for you.

@ibrahimk157
Copy link
Author

npm cache clean

It only happens in iOS, nowhere else at all. Also, If i use a download manager app on iOS, it works fine. Only in safari does it simply not work (Well, it works sometimes) even though safari does have a download manager as of iOS 13.

Trying to update npm gets me a similar error as well:

npm ERR! errno HPE_UNEXPECTED_CONTENT_LENGTH
npm ERR! request to http://registry.npmjs.org/npm failed, reason: Parse Error
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-03-13T07_22_37_803Z-debug.log

The log being:

1 verbose cli [ '/usr/bin/node', '/bin/npm', 'install', '-g', 'npm@latest' ]
2 info using npm@6.4.1
3 info using node@v10.13.0
4 verbose npm-session 201e6b7ffb134f7e
5 silly install loadCurrentTree
6 silly install readGlobalPackageData
7 silly fetchPackageMetaData error for npm@latest request to http://registry.npmjs.org/npm failed, reason: Parse Error
8 timing stage:rollbackFailedOptional Completed in 3ms
9 timing stage:runTopLevelLifecycles Completed in 392ms
10 verbose type system
11 verbose stack FetchError: request to http://registry.npmjs.org/npm failed, reason: Parse Error
11 verbose stack     at ClientRequest.req.on.err (/usr/lib/node_modules/npm/node_modules/node-fetch-npm/src/index.js:68:14)
11 verbose stack     at ClientRequest.emit (events.js:182:13)
11 verbose stack     at Socket.socketOnData (_http_client.js:447:9)
11 verbose stack     at Socket.emit (events.js:182:13)
11 verbose stack     at addChunk (_stream_readable.js:283:12)
11 verbose stack     at readableAddChunk (_stream_readable.js:264:11)
11 verbose stack     at Socket.Readable.push (_stream_readable.js:219:10)
11 verbose stack     at TCP.onStreamRead (internal/stream_base_commons.js:94:17)
12 verbose cwd /home/ibrahimk157/youtubedl-material
13 verbose Linux 3.10.0-1062.12.1.el7.centos.plus.x86_64
14 verbose argv "/usr/bin/node" "/bin/npm" "install" "-g" "npm@latest"
15 verbose node v10.13.0
16 verbose npm  v6.4.1
17 error code HPE_UNEXPECTED_CONTENT_LENGTH
18 error errno HPE_UNEXPECTED_CONTENT_LENGTH
19 error request to http://registry.npmjs.org/npm failed, reason: Parse Error
20 verbose exit [ 1, true ]

Seems like npm is really messed up

@ibrahimk157
Copy link
Author

Update on this issue:

I noticed the following behavior after doing some digging in:

When i try to download the video/audio through youtubedl-material on iOS, it (like it should) takes me to the screen with the video preview and floppy disk save icon.

Now I previously mentioned that clicking the floppy disk icon would cause it to spin on a loop without any download prompt showing up.

HOWEVER, it seems like when that happens, it’s actually downloading the video in the background (no prompt or status bar or anything) and only after waiting forever do i get the download prompt, which when clicked makes the video download instantly (proving that it has already been downloaded in the background while waiting for the download prompt)

Not sure how well I described this (pretty sure i did a terrible job at that).

Furthermore, when using a download manager app on iOS, i get the download prompt as soon as the preview page loads up without having to click anywhere. However, the video/audio downloads with the title “Youtube Downloader.mp3” rather than the title of the video/song. And it’s metadata doesn’t contain the title of the video/song either.

So it seems to be two issues at once that might possibly be related.

This is all on the latest version (4.1)

@ibrahimk157
Copy link
Author

ibrahimk157 commented Jul 19, 2021

Update: It now works perfectly fine… not sure if you’ve fixed it or it (somehow) managed to resolve itself, but all seems to work perfectly now!

@Tzahi12345
Copy link
Owner

Interesting! No, nothing was changed, I assume Apple just updated iOS so it plays more nicely with downloads.

I did test this several times using BrowserStack (thankfully it's free for open-source projects), but all I could find was extremely inconsistent behavior -- sometimes it worked, sometimes it didn't. Some of my family members have iPhones and I think I saw the same thing there. I'll close the issue, but if it comes up again, feel free to drop a comment and I'll open this up again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
is: bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants