Advertisement
Guest User

Untitled

a guest
Oct 31st, 2022
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.95 KB | None | 0 0
  1. require "json"
  2.  
  3. module Krystalekeko
  4.   extend self
  5.  
  6.   def download_url(url : String)
  7.     downloads_folder = "./downloads/youtube"
  8.     save_path = "#{downloads_folder}/%(title)s.%(ext)s"
  9.  
  10.     stdout = IO::Memory.new
  11.     process = Process.new("./binaries/yt-dlp", [url, "-o", save_path, "-q", "--print-json"], output: stdout)
  12.     status = process.wait
  13.  
  14.     ytp_dlp_result = stdout.to_s
  15.     json_result = JSON.parse(ytp_dlp_result)
  16.  
  17.     title = json_result["title"]    
  18.     extension = json_result["ext"]
  19.  
  20.     resized_save_path = "#{downloads_folder}/#{title}-720p.mp4"
  21.     ffmpeg_stdout = IO::Memory.new
  22.     Process.run("./binaries/ffmpeg-5.1.1-amd64-static/ffmpeg", [
  23.       "-i",
  24.       "#{downloads_folder}/#{title}.#{extension}",
  25.       "-c:v",
  26.       "libx265",
  27.       "-vf",
  28.       "scale=1280:-2",
  29.       resized_save_path,
  30.     ], output: ffmpeg_stdout)
  31.   end
  32. end
  33.  
  34. Krystalekeko.download_url("https://www.youtube.com/watch?v=dSZshiYNOT4")
  35.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement