warren-bank / node-hls-downloader-tubitv

Command-line utility for downloading an offline copy of TubiTV HLS video streams.
GNU General Public License v2.0
63 stars 8 forks source link

Cannot specify a directory on a different drive than my system drive. #8

Open Lariria opened 1 year ago

Lariria commented 1 year ago

Forgive me if there are any errors in this report. I am new to using command line applications.

I am using the latest version, 1.5.2, of the application. When I try either the -P or --directory-prefix commands, set it to a valid folder on a different drive than my system drive, and then attempt a download, it gives me this error:

"Error: EPERM: operation not permitted, mkdir 'D:.' at Object.mkdirSync (node:fs:1396:3) at mkdirSync (C:\Users*name removed\AppData\Roaming\npm\node_modules\@warren-bank\node-hls-downloader-tubitv\lib\mkdir.js:22:8) at createDirectory (C:\Users*name removed\AppData\Roaming\npm\node_modules\@warren-bank\node-hls-downloader-tubitv\lib\mkdir.js:14:5) at start_downloadHLS (C:\Users*name removed\AppData\Roaming\npm\node_modules\@warren-bank\node-hls-downloader-tubitv\lib\process_cli.js:297:7) at process_video_data (C:\Users*name removed\AppData\Roaming\npm\node_modules\@warren-bank\node-hls-downloader-tubitv\lib\process_cli.js:246:17) at process_html (C:\Users*name removed\AppData\Roaming\npm\node_modules\@warren-bank\node-hls-downloader-tubitv\lib\process_cli.js:104:15) at process_url (C:\Users*name removed\AppData\Roaming\npm\node_modules\@warren-bank\node-hls-downloader-tubitv\lib\process_cli.js:66:11) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async process_argv (C:\Users*name removed*\AppData\Roaming\npm\node_modules\@warren-bank\node-hls-downloader-tubitv\lib\process_cli.js:376:7) { errno: -4048, syscall: 'mkdir', code: 'EPERM', path: 'D:.'"

I don't know where the log file is located, so I cannot post it, sorry. Tried searching, but I did not find it.

I would just use my system drive, but for this particular movie, the downloader is splitting the movie into over 800 chunks at slightly over 1 gigabyte a piece, and that is larger than my maximum SSD space. The movie is https://tubitv.com/movies/531390

I am using node version 18.16.0 LTS on Windows 10. My Windows 10 is up to date.

Have I left out any info needed?

warren-bank commented 1 year ago

notes:

  https://tubitv.com/movies/531390

  https://manifest.production-public.tubi.io/73edd89e-fac5-4c89-b732-b57f3dea36a8/6k8me0219s.m3u8?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjZG5fcHJlZml4IjoiaHR0cHM6Ly9ha2FtYWkyLnR1YmkudmlkZW8iLCJjb3VudHJ5IjoiVVMiLCJkZXZpY2VfaWQiOiI2NDE4ZGI4Zi1kNWNjLTQwZTgtYmMxMi02OGY0NWMwMWZkNDIiLCJleHAiOjE2ODUyNTgxMDAsInBsYXRmb3JtIjoiV0VCIiwidXNlcl9pZCI6MH0.YXtGoQtVKVHqgujySm0hKMMcQ1KjzYWLuIbn3_n7jm0&manifest=true
    master

  https://manifest.production-public.tubi.io/73edd89e-fac5-4c89-b732-b57f3dea36a8/cwqc96h3.m3u8?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjZG5fcHJlZml4IjoiaHR0cHM6Ly9ha2FtYWkyLnR1YmkudmlkZW8iLCJjb3VudHJ5IjoiVVMiLCJkZXZpY2VfaWQiOiI2NDE4ZGI4Zi1kNWNjLTQwZTgtYmMxMi02OGY0NWMwMWZkNDIiLCJleHAiOjE2ODUyNTgxMDAsInBsYXRmb3JtIjoiV0VCIiwidXNlcl9pZCI6MH0.YXtGoQtVKVHqgujySm0hKMMcQ1KjzYWLuIbn3_n7jm0&manifest=true
    768x576

video_manifests.zip

observations:

summary:

example:

  wget --no-check-certificate -O "video.mp4" "https://akamai2.tubi.video/73edd89e-fac5-4c89-b732-b57f3dea36a8/cwqc96h3.mp4"
warren-bank commented 1 year ago

well.. to be clear.. I saw 2x separate issues in your initial comment:

  1. downloading to a different drive letter (in Windows)
  2. the unusually large size of the video segments

my initial comment addressed (and solves) the 2nd issue.. but I still haven't addressed the 1st.. I'll look into that now and get back to you.

warren-bank commented 1 year ago

my test run:

  tubidl --version
  # ----
  # 1.5.2

  cd "C:\.workspace"
  tubidl -mc 10 -P "E:\tubidl_data" -u "https://tubitv.com/series/300005298/zo-zo-zombie"
  # ----
  # quit after the 1st episode has been fully downloaded and converted to mp4
  # length of episode: 13 minutes
  # file size: 226 MB

the result:

warren-bank commented 1 year ago

v1.5.3 fixes the issue with specifying an absolute directory path on Windows

but.. in re-running the above test:

warren-bank commented 1 year ago

I updated the dependency: node-hls-downloader v4.0.7.. if you re-install node-hls-downloader-tubitv, the updated dependency will be pulled too.. which prevents downloading duplicate video segment URLs.. so each tubitv episode (or movie) will pull 1x video file and 1x audio file.. however, the ffmpeg command to merge the video with the audio isn't working.. I'm not really sure why, but it can be done manually (for now).. for example:

cd "C:\.workspace"
tubidl --no-mp4 -mc 10 -P "E:\tubidl_data" -u "https://tubitv.com/series/300005298/zo-zo-zombie"

cd /D "E:\tubidl_data\Zo Zo Zombie\S01E01 - Zo Zo Zombie Chapter One"
ren "hls\video\segment_0.ts" "video.mp4"
ren "hls\audio\stream_0\segment_0.aac" "audio.mp4"
if not exist "mp4" mkdir "mp4"
ffmpeg -i "hls/video/video.mp4" -i "hls/audio/stream_0/audio.mp4" -c copy "mp4/video.mp4"
Lariria commented 1 year ago

Thank you very, very much!

warren-bank commented 1 year ago

v1.5.4 was just pushed to npm.. it provides a fallback ffmpeg mp4 conversion strategy that automates the example (above). I have no idea if this will work for every video, but it seems to work well.

now, all of the example code (above) can be replaced with:

cd "C:\.workspace"
tubidl -mc 10 -P "E:\tubidl_data" -u "https://tubitv.com/series/300005298/zo-zo-zombie"

..which uses only the normal pre-existing cli options to specify path and filename for the resulting mp4 file

Lariria commented 1 year ago

Thank you so much!