tusko / vimeo-private-downloader Goto Github PK
View Code? Open in Web Editor NEWScript gets you access to download private videos on Vimeo
Script gets you access to download private videos on Vimeo
I managed to get everything done. Video File is downloaded, Audio File is downloaded, both works.
I managed to run the bash script "sh vimeo-combine.sh" but then it says "FFMPEG" is not recognized or something.
Don't know how to get around...
.sort((v1, v2) => v1.avg_bitrate - v2.avg_bitrate)
^
TypeError: Cannot read properties of undefined (reading 'sort')
Hi there — first time posting an issue on Github. vimeo-private-downloader is downloading all parts of the video file and generating a m4v file, and then not continuing to download the audio segments. Any idea where the error may be? I'm not seeing an error message thrown in command line, the process simply stops.
Getting this error:
Video to be downloaded is uploaded in a private vimeo account, not sure if its encrypted, but it is embedded in a portal site.
Error: connect ETIMEDOUT 2001:4450:3a::ca8a:b370:443
Appears when:
Master.json - has base64_init=1&query_string_ranges=1
Tried removing &query_string_ranges=1, still occurs
Tried removing ?base64_init=1, still occurs
If occurs an error while you are downloading you'll need to stop the app in some cases.
Then, when you restart it, it considers that you already downloaded the incompleted file and just skip it. Then when you use the 'vimeo-combine' tool, the final video can be either with incomplete audio or video.
Another way to combine the m4v and m4a files with ffmpeg
ffmpg -i video.m4a -i video.m4v -c copy video.mp4
When there is a link in 'videojson.js' list that is expired the app crashes and finish.
What would you think could be a better solution? I was thinking that it could log a message to user set a new link, skip this one and try the next link.
undefined:1
410 Gone
^
SyntaxError: Unexpected token G in JSON at position 4
at JSON.parse (<anonymous>)
at IncomingMessage.<anonymous> ([...]/vimeo-private-downloader/vimeomaster.js:130:41)
at IncomingMessage.emit (events.js:322:22)
at endReadableNT (_stream_readable.js:1187:12)
at processTicksAndRejections (internal/process/task_queues.js:84:21)
Your script is great! Thank you so much!
But I found one issue:
If I fill my videojson.js with a lot of master.json urls, which belong to huge videos, the audio and video source files are being downloaded corruptly.
Is there a way to download the files sequentially?
Downloading video segment 81/82 of ./parts/vesica.m4v
→ 🏁 ./parts/vesica.m4v - video done
→ 📦 🎧 Downloading audio segment 0/82 of ./parts/vesica.m4a
→ 🏁 ./parts/vesica.m4v - video done
→
→ 📦 🎧 Downloading audio segment 0/82 of ./parts/vesica.m4a
node:events:371
throw er; // Unhandled 'error' event
^
Error [ERR_STREAM_WRITE_AFTER_END]: write after end
at new NodeError (node:internal/errors:371:5)
at _write (node:internal/streams/writable:319:11)
at WriteStream.Writable.write (node:internal/streams/writable:334:10)
at IncomingMessage. (/Users/username/Documents/GitHub/vimeo-private-downloader/index.js:114:34)
at IncomingMessage.emit (node:events:394:28)
at addChunk (node:internal/streams/readable:312:12)
at readableAddChunk (node:internal/streams/readable:287:9)
at IncomingMessage.Readable.push (node:internal/streams/readable:226:10)
at HTTPParser.parserOnBody (node:_http_common:141:24)
at HTTPParser.execute ()
Emitted 'error' event on WriteStream instance at:
at emitErrorNT (node:internal/streams/destroy:157:8)
at emitErrorCloseNT (node:internal/streams/destroy:122:3)
at processTicksAndRejections (node:internal/process/task_queues:83:21) {
code: 'ERR_STREAM_WRITE_AFTER_END'
}
Hi guys, Thanks so much for this awesome script. I tried it today and it didn't work for me. not sure if I'm doing something wrong, so apologize if this is something basic I'm missing.
I ran it using this node vimeo-combine.sh
Everything else ran perfectly fine, but when I got to combining the audio and video file, it returned this error. Has anyone else had this issue?
SyntaxError: Invalid or unexpected token at wrapSafe (internal/modules/cjs/loader.js:1054:16) at Module._compile (internal/modules/cjs/loader.js:1102:27) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10) at Module.load (internal/modules/cjs/loader.js:986:32) at Function.Module._load (internal/modules/cjs/loader.js:879:14) at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12) at internal/main/run_main_module.js:17:47
No longer works with current private videos unfortunatly.
`undefined:1
^SyntaxError: Unexpected token < in JSON at position 0
at JSON.parse ()
at IncomingMessage. (C:\Users\Helium\Downloads\vimeo-private-downloader-master\vimeo-private-downloader-master\vimeomaster.js:135:41)
←[90m at IncomingMessage.emit (events.js:327:22)←[39m
←[90m at endReadableNT (internal/streams/readable.js:1327:12)←[39m
←[90m at processTicksAndRejections (internal/process/task_queues.js:80:21)←[39m
`
At some point when downloading video segments, I have a ECONNRESET
error and it automatically switches to downloading audio segments.
...
→ 📦 📹 Downloading video segment 24/728 of ./parts/lm.m4v
→ 📦 📹 Downloading video segment 25/728 of ./parts/lm.m4v
→ 📦 📹 Downloading video segment 26/728 of ./parts/lm.m4v
→ ⚠️ Error: read ECONNRESET
→ 📦 🎧 Downloading audio segment 0/728 of ./parts/lm.m4a
→ 📦 🎧 Downloading audio segment 1/728 of ./parts/lm.m4a
→ 📦 🎧 Downloading audio segment 2/728 of ./parts/lm.m4a
...
→ 📦 🎧 Downloading audio segment 725/728 of ./parts/lm.m4a
→ 📦 🎧 Downloading audio segment 726/728 of ./parts/lm.m4a
→ 📦 🎧 Downloading audio segment 727/728 of ./parts/lm.m4a
→ 🏁 ./parts/lm.m4a - audio done
The audio segments finish successfully though.
the download process usually starts with video files then audio files ,is it possible to use some threading to download both the files to save waiting time.
I can't combine the parts in windows
Hello,
Thank you for this project.
I would like to know if it is still alive?
I got this message:
▶ node index.js
→ ⚠️ Error: connect ECONNREFUSED 88.221.27.153:443
Sometimes it goes for some segments and then connection refused.
▶ node index.js
→ 📦 📹 Downloading video segment 0/2536 of ./parts/test.m4v
→ 📦 📹 Downloading video segment 1/2536 of ./parts/test.m4v
......
→ 📦 📹 Downloading video segment 94/2536 of ./parts/test.m4v
→ ⚠️ Error: connect ECONNREFUSED 88.221.27.153:443
→ 📦 🎧 Downloading audio segment 0/2536 of ./parts/test.m4a
→ ⚠️ Error: connect ECONNREFUSED 88.221.27.153:443
I have followed all steps. Video and Audio is downloading but not working. it was working few months back not any more.
I tried on both Mac and Windows 10 but same result. Event combine script is not working.
From my experience the script works for some videos and doesn't work for others.
Looking at master.json
file of failed videos, I noticed that all of them have base_url='../../../'
, while the successful videos had base_url='../'
. This is just an observation, not sure if it is actually causing the error.
Failed videos seem to be downloading fine, however they can't be previewed nor combined using the combine tool. Ffmpeg complains about not being able to find the moov atom during the combine process.
I wanted to paste the contents of master.json
but it is rather large and is not accepted in pastebin.
sorry i'm learning i'm still learning to program and i still don't know how github works (unfortunately).
but I found a problem with characters in the titles of the lists.
when using ["], [?], ['] and ["] errors occur when saving the files in the "fs" (file System) and also with the executable "combine.sh"
Hi Tusko,
Thanks for the the instructions. I have a question about 4th point, please.
Many thanks!
I have download the audio and video after running the node script , I wanted to merge them and after running combine.sh ,no file generated in Converted folder.
ls *.m4a *.m4v | sed 's/.m4a//g;s/.m4v//g' | uniq
ls *.m4a *.m4v | sed 's/.m4a//g;s/.m4v//g' | uniq | awk '{m4a=$0".m4a";m4v=$0".m4v";mp4=$0".mp4"; printf("ffmpeg -y -loglevel quiet -i \"%s\" -i \"%s\" -c copy \"%s\"\n", m4a, m4v, mp4) }'
ls *.m4a *.m4v | sed 's/.m4a//g;s/.m4v//g' | uniq | awk '{print "echo Runing Task "NR" - " $0}{m4a=$0".m4a";m4v=$0".m4v";mp4=$0".mp4"; printf("ffmpeg -y -loglevel quiet -i \"%s\" -i \"%s\" -c copy \"%s\"\n", m4a, m4v, mp4) }' > combine.sh
chmod +x combine.sh
./combine.sh
is there any way to select the download quality?
thx so much for this script! it works amazingly well
→
Any ideas why?
Hi, I have node.js installed but encountered the following error while running node vimeomaster.js
c:\node\node-v12.18.1-win-x86>node vimeomaster.js
undefined:1
<HTML><HEAD>
^
SyntaxError: Unexpected token < in JSON at position 0
at JSON.parse (<anonymous>)
at IncomingMessage.<anonymous> (c:\node\node-v12.18.1-win-x86\node vimeomaster.js:123:41)
�[90m at IncomingMessage.emit (events.js:327:22)�[39m
�[90m at endReadableNT (_stream_readable.js:1221:12)�[39m
�[90m at processTicksAndRejections (internal/process/task_queues.js:84:21)�[39m
Hello everyone, today I was preparing to download a video as usual, but I was prompted that the json was incorrect. I have confirmed that my operation was correct, and this is the URL I obtained:
https://179vod-adaptive.akamaized.net/exp=1714915362~acl=%2Fefcf1c6a-82c3-4629-82e1-e658a1cda6f2%2F%2A~hmac=60e86ad7793c5342198eee12d428f5f5e5a078d845ef4ee8cf5eda440c5e659a/efcf1c6a-82c3-4629-82e1-e658a1cda6f2/sep/video/18d065ce,46330b00,639288d3,a7f36529,d6628b67/audio/4682c1ac,96058176,a8449bea/master.json?base64_init=1&query_string_ranges=1
This is the error message:
I noticed that the URL I obtained today seems different from the ones I used to get. I was still able to use it on April 20th. I don't know if Vimeo has changed their format. If any of you friends have encountered the same issue and know how to resolve it, please let me know. I would be sincerely grateful.
Hello, I'm trying to combine audio and video and this message appears:
Runing Task 1 - ep110.mp4
./combine.sh: line 2: ffmpeg: command not found
Waiting for the debugger to disconnect...
Can you help please?
Hi Tusko,
I've managed to follow all the steps, but the subtitles have not been downloaded. Do I need to do anything else to grab those as well?
Many thanks,
G
Hi,
Thank you so much for this excellent tool! It has earned me some impressed remarks regarding "computer magic". I am aware that making the tool more user friendly might cause legal consequences. However, I believe that your software could be even more awesome by providing the full user-friendliness. I envision a simple GUI where the user only has to provide a URL or even a list of URLs. Then, the code opens the webpage (e. g. using Selenium), looks for the master.js
file, writes the videojson.js
file and then calls the existing code.
I'm looking forward to hearing your thoughts about my suggestion.
Cheers!
I just wanted to say "thank you!" for sharing this project. It really helped me out. ❤️
You are currently expecting a master.json response to contain an ".audio" field. That is not required though.
PS D:\Downloads\VimeoPrivateDownloader> npm run combine
> [email protected] combine D:\Downloads\VimeoPrivateDownloader
> sh vimeo-combine.sh
'sh' is not recognized as an internal or external command,
operable program or batch file.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] combine: `sh vimeo-combine.sh`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] combine script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm WARN Local package.json exists, but node_modules missing, did you mean to install?
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\USER\AppData\Roaming\npm-cache\_logs\2021-06-04T09_07_09_038Z-debug.log
Error: found a segment with an empty url: {"start":0,"end":6.066666666666666,"url":"","size":1568577,"range":"8495-1577072"}
at D:\Downloads\vimeo-private-downloader-master\index.js:88:13
at Array.map ()
at processFile (D:\Downloads\vimeo-private-downloader-master\index.js:86:32)
at D:\Downloads\vimeo-private-downloader-master\index.js:40:5
at IncomingMessage. (D:\Downloads\vimeo-private-downloader-master\index.js:154:29)
at IncomingMessage.emit (node:events:526:35)
at endReadableNT (node:internal/streams/readable:1359:12)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
I have 2 files ,one is completed and after running video master I have this error
SyntaxError: Unexpected token G in JSON at position 0
at JSON.parse (<anonymous>)
at IncomingMessage.<anonymous> (E:\temp\vimeo-private-downloader-master\vimeo-private-downloader-master\vimeomaster.js:131:41)
at IncomingMessage.emit (events.js:327:22)
at endReadableNT (_stream_readable.js:1220:12)
at processTicksAndRejections (internal/process/task_queues.js:84:21)
hint : getJson function returns empty data.
When running vimeo-combine.sh i am getting the below error:
./combine.sh: line 2: ffmpeg: command not found
with the latest version, the downloaded video can not be played successfully and throw the blew error.
can you help to fix it, thank you very much?
my node version is 13.14.0
fs.js:1061
return binding.unlink(pathModule._makeLong(path));
^
Error: ENOENT: no such file or directory, unlink 'C:\Users\Administrator\Desktop\temporary\vimeo-private-downloader-master\parts.Beluga test.m4a~'
at Object.fs.unlinkSync (fs.js:1061:18)
at combineSegments (C:\Users\Administrator.ZGC-20130905TJJ\Desktop\temporary\vimeo-private-downloader-master\index.js:98:8)
at IncomingMessage.res.on (C:\Users\Administrator.ZGC-20130905TJJ\Desktop\temporary\vimeo-private-downloader-master\index.js:114:9)
at emitNone (events.js:111:20)
at IncomingMessage.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1064:12)
at _combinedTickCallback (internal/process/next_tick.js:139:11)
at process._tickCallback (internal/process/next_tick.js:181:9)
Hello,
Is there a way to change video quality? I tried with a video in 4k, 2k, 1080p, 720p, etc., changing this in the code:
const videoData = json.video.sort(v => v.height == 1080)
But the downloaded video is in 720p instead of 1080p.
Regards and thanks
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.