gaqzi-youtube-downloader 0.5.1 → 0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. data/README +43 -0
  2. data/youtube-downloader +23 -21
  3. metadata +4 -2
data/README ADDED
@@ -0,0 +1,43 @@
1
+ Using some, for unix based systems, common tools to download movies
2
+ and optionally ripping the audio from them.
3
+
4
+ USAGE:
5
+ youtube-downloader <youtube-url> [command]
6
+
7
+ COMMANDS:
8
+ - audio
9
+ downloads the video to a fifo-pipe and start the processing directly
10
+ <3 mkfifo :)
11
+ - rip or all
12
+ rips the audio
13
+
14
+ With no command set it will download the video.
15
+
16
+ EDITING FILENAME:
17
+ This script is set to use the Ruby Readline library, I've not found a way to
18
+ add a default value to the line to be read in.
19
+
20
+ But I've added the default title toe Readline history buffer so press the
21
+ up arrow key on your keyboard to get it filled in so you can change it.
22
+
23
+ DEPENDENCIES:
24
+ - cURL, fetch or wget. We try to be smart and choose a good one
25
+ depending on the running system so this shouldn't be to big a deal.
26
+ - mplayer, for ripping the audio
27
+ - lame, for encoding the audio
28
+ - mkfifo, rm and touch ;)
29
+
30
+ CONFIGURATION:
31
+ In your home directory create a file named .youtube-downloader
32
+ with these values:
33
+
34
+ ---
35
+ # To download the files to the current directory set to .
36
+ :download_dir: .
37
+ :music_dir: .
38
+ :temp_dir: /tmp
39
+ :file_extension: flv
40
+
41
+ # If we want the timestamp on the files to be time of download instead
42
+ # of time of the file
43
+ :touch: true
@@ -1,16 +1,17 @@
1
- #!/usr/bin/env ruby -KU
2
- $KCODE = 'u'
1
+ #!/usr/bin/env ruby
2
+ $KCODE='u'
3
3
  require 'open-uri'
4
4
  require 'ftools'
5
+ require 'yaml'
6
+ require 'readline'
5
7
 
6
- # Save the downloads in these dirs, if you just want it to get saved in the
7
- # directory the script is run from; set to '.'
8
- $DOWNLOAD_DIR = "#{ENV['HOME']}/Movies"
9
- $MUSIC_DIR = "#{ENV['HOME']}/Music"
10
- $TEMP_DIR = '/tmp'
11
- $FILE_EXTENSION = 'flv' # Extension of the movies
12
- $TOUCH = true # I want my newly downloaded to be timestamped now
13
-
8
+ begin
9
+ ConfigYT = YAML::load_file(File.join(ENV['HOME'], '.youtube-downloader'))
10
+ rescue Errno::ENOENT
11
+ STDERR.puts "No configuration file found, please copy one."
12
+ STDERR.puts " cp #{File.dirname(__FILE__)}/.youtube-downloader ~/"
13
+ exit 1
14
+ end
14
15
 
15
16
 
16
17
  if ARGV.empty? or ARGV[0].match(/(-h)|((--)?help)/i)
@@ -28,7 +29,7 @@ end
28
29
 
29
30
  Video = Struct.new(:title, :video_id, :id) do
30
31
  def to_s
31
- "http://youtube.com/get_video.php?t=#{id}&video_id=#{video_id}"
32
+ "http://youtube.com/get_video.php?t=#{id}&video_id=#{video_id}&fmt=18"
32
33
  end
33
34
 
34
35
  def empty?
@@ -61,14 +62,15 @@ rescue Exception => e
61
62
  exit 1
62
63
  end
63
64
 
64
- print "Filename: [#{the_vid.title}]"
65
- name = STDIN.gets.strip
65
+ puts 'To edit filename press up arrow'
66
+ Readline::HISTORY.push the_vid.title
67
+ name = Readline::readline("Filename: [#{the_vid.title}] ") #STDIN.gets.strip
66
68
  name = if name.empty?
67
69
  the_vid.title
68
70
  else
69
71
  name
70
72
  end.gsub(/(['" &;<>|$#!])/, '\\\\\1') # Quote these so we can pass to shell
71
- the_file = "#{$DOWNLOAD_DIR}/#{name}.#{$FILE_EXTENSION}"
73
+ the_file = "#{ConfigYT[:download_dir]}/#{name}.#{ConfigYT[:file_extension]}"
72
74
 
73
75
  download_command = case ENV['OSTYPE']
74
76
  when 'darwin' # Mac OS X
@@ -80,14 +82,14 @@ download_command = case ENV['OSTYPE']
80
82
  end
81
83
 
82
84
  def rip_audio(file, name)
83
- `/usr/bin/env mkfifo #{$TEMP_DIR}/#{name}`
84
- IO.popen("/usr/bin/env lame -b 160 #{$TEMP_DIR}/#{name} #{$MUSIC_DIR}/#{name}.mp3")
85
- `/usr/bin/env mplayer #{file} -ao pcm:fast:file=#{$TEMP_DIR}/#{name} -vc null -vo null`
86
- `/usr/bin/env rm #{$TEMP_DIR}/#{name}`
85
+ `/usr/bin/env mkfifo #{ConfigYT[:temp_dir]}/#{name}`
86
+ IO.popen("/usr/bin/env lame -b 160 #{ConfigYT[:temp_dir]}/#{name} #{ConfigYT[:music_dir]}/#{name}.mp3")
87
+ `/usr/bin/env mplayer #{file} -ao pcm:fast:file=#{ConfigYT[:temp_dir]}/#{name} -vc null -vo null`
88
+ `/usr/bin/env rm #{ConfigYT[:temp_dir]}/#{name}`
87
89
  end
88
90
 
89
91
  def remove(name)
90
- `/usr/bin/env rm #{$DOWNLOAD_DIR}/#{name}.#{$FILE_EXTENSION}`
92
+ `/usr/bin/env rm #{the_file}`
91
93
  end
92
94
 
93
95
  case ARGV[1]
@@ -105,8 +107,8 @@ when /(all)|(rip)/i # Both audio and video
105
107
  `#{download_command}`
106
108
  rip_audio(the_file, name)
107
109
 
108
- `/usr/bin/env touch #{$DOWNLOAD_DIR}/#{name}.#{$FILE_EXTENSION}` if $TOUCH
110
+ `/usr/bin/env touch #{the_file}` if ConfigYT[:touch]
109
111
  else
110
112
  `#{download_command}`
111
- `/usr/bin/env touch #{$DOWNLOAD_DIR}/#{name}.#{$FILE_EXTENSION}` if $TOUCH
113
+ `/usr/bin/env touch #{the_file}` if ConfigYT[:touch]
112
114
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gaqzi-youtube-downloader
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: "0.6"
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Bj\xC3\xB6rn Andersson"
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: .
10
10
  cert_chain: []
11
11
 
12
- date: 2008-09-27 00:00:00 -07:00
12
+ date: 2009-03-07 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -23,6 +23,8 @@ extra_rdoc_files: []
23
23
 
24
24
  files:
25
25
  - youtube-downloader
26
+ - .youtube-downloader
27
+ - README
26
28
  has_rdoc: false
27
29
  homepage: http://github.com/ba/youtube-downloader
28
30
  post_install_message: