what_cd 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 57e94a9b268eda29b46fedb523c52213a55c6168
4
+ data.tar.gz: 1ff28ee6644868e2e6dbfc0054957f0b685cafbe
5
+ SHA512:
6
+ metadata.gz: 8c10517ee6d31ef8508cb25930d0495054a9c58fbd342d88f899947ac8557bdedd1ec787a5611192714b35a5e3bef9ea79ce6bfd87b3d47dfb152683e3b09f0d
7
+ data.tar.gz: 14bf5c332cfe9405bd532091727f8802c94a0474b1435267fcee2af835729b945dd755e1ff542c7589b23a25448a39fd5b3b3f3c475637374b6e259514598780
data/README.md ADDED
@@ -0,0 +1,4 @@
1
+ what.cd-tools
2
+ =============
3
+
4
+ Making contributing to what.cd less tedious.
data/bin/what_cd ADDED
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'rubygems'
5
+ rescue LoadError
6
+ # no rubygems to load, so we fail silently
7
+ end
8
+
9
+ require 'optparse'
10
+ require 'what_cd'
11
+
12
+ OPTIONS = {}
13
+ MANDATORY_OPTIONS = %w[]
14
+
15
+ parser = OptionParser.new do |opts|
16
+ opts.banner = <<BANNER
17
+ Usage: #{File.basename($0)} [directory]
18
+
19
+ Options are:
20
+ BANNER
21
+ opts.separator ''
22
+ opts.on('-v', '--version',
23
+ "Show the #{File.basename($0)} version number and exit") { require 'what-cd/version'; puts "what-cd #{WhatCD::VERSION}"; exit }
24
+ opts.on('-t', '--tracker',
25
+ "Create torrent file with tracker") { |tracker| OPTIONS[:tracker] = tracker }
26
+ opts.on('-e', '--encoding', String,
27
+ "Set lame encoding options", "Default: #{WhatCD.default_encoding}") { |encoding| OPTIONS[:encoding] = encoding }
28
+ opts.on('-h', '--help',
29
+ 'Show this help message.') { puts opts; exit }
30
+ opts.parse!(ARGV)
31
+
32
+ if MANDATORY_OPTIONS && MANDATORY_OPTIONS.find { |option| OPTIONS[option.to_sym].nil? }
33
+ puts opts; exit
34
+ end
35
+
36
+ # do stuff
37
+ dir = ARGV[0]
38
+
39
+ #WhatCD.convert(dir, OPTIONS)
40
+ end
data/lib/better.rb ADDED
@@ -0,0 +1,122 @@
1
+ #!/usr/bin/ruby
2
+ require 'shellwords'
3
+ require 'mktorrent'
4
+
5
+ '''
6
+ This tool is primarily for working through better.php with ease.
7
+ Essentially this tool will look at an existing release directory with
8
+ FLAC files and create a matching release with MP3 V0 files. A best attempt
9
+ is made to create an appropriate folder name. Any non-flac files are moved
10
+ over and then flac files are converted to MP3 V0.
11
+
12
+ Dependencies:
13
+ flac2mp3: https://github.com/ymendel/flac2mp3
14
+
15
+ '''
16
+
17
+ class Better
18
+
19
+ attr_reader :dir, :dir_name, :new_dir, :files, :tracker
20
+
21
+ def initialize(dir_name, tracker)
22
+ # dir will be modified later
23
+ @dir = dir_name
24
+ @dir_name = dir_name.chomp("/")
25
+ @tracker = tracker
26
+ @files = []
27
+
28
+ run
29
+ end
30
+
31
+ def run
32
+
33
+ handle_dirs
34
+
35
+ load_flac_files
36
+
37
+ puts @files
38
+
39
+ copy_files(@dir, @new_dir)
40
+
41
+ # Finally, convert to MP3 V0 if necessary
42
+ convert(@dir, @new_dir)
43
+
44
+ #create_torrent
45
+
46
+ puts "Woot! Conversion successful!"
47
+ puts "Find your files in #{new_dir}"
48
+ end
49
+
50
+ def load_flac_files
51
+ flac_files = Dir.entries(dir).select { |e| e.include? '.flac' }
52
+
53
+ if flac_files.empty?
54
+ puts "No flac files found. Exiting..."
55
+ exit
56
+ end
57
+
58
+ flac_files.each do | flac_file|
59
+ @files.push(dir + flac_file)
60
+ end
61
+ end
62
+
63
+
64
+ def handle_dirs
65
+ # clear up inconsistencies
66
+ if @dir.chars.last != '/'
67
+ @dir = @dir + '/'
68
+ end
69
+
70
+ # Since mutable
71
+ @new_dir = @dir.dup
72
+
73
+ determine_new_dir_name(@new_dir)
74
+
75
+ # Attach to full path
76
+ @dir = Dir.pwd + "/" + @dir
77
+ @new_dir = Dir.pwd + "/" + @new_dir
78
+
79
+ # Create the new directory if it does not exist
80
+ Dir.mkdir(@new_dir) unless File.exists?(@new_dir)
81
+ end
82
+
83
+ # Intelligently decide on a new directory name
84
+ def determine_new_dir_name(new_dir)
85
+ if new_dir.include? 'FLAC'
86
+ new_dir.gsub! 'FLAC', 'MP3 V0'
87
+ elsif new_dir.include? 'flac'
88
+ new_dir.gsub! 'flac', 'MP3 V0'
89
+ else
90
+ new_dir.gsub! '/', ' [MP3 V0]/'
91
+ end
92
+ end
93
+
94
+ def convert(dir, new_dir)
95
+
96
+ @files.each do |flac_file|
97
+ puts "Converting #{flac_file}"
98
+ cmd = "cd #{Shellwords.escape(new_dir)}; flac2mp3 #{Shellwords.escape(flac_file)} --encoding='--preset extreme' > /dev/null 2>&1"
99
+ output = system "bash -c \"#{cmd}\""
100
+ end
101
+ end
102
+
103
+ def copy_files(dir, new_dir)
104
+ # Copy all files from dir to new_dir
105
+ cmd = "cp -r #{Shellwords.escape(dir)}/* #{Shellwords.escape(new_dir)}"
106
+ system "bash -c \"#{cmd}\""
107
+
108
+ # Remove any flac files, as they will be replaced by MP#s
109
+ cmd = "rm #{Shellwords.escape(new_dir)}*.flac"
110
+ system "bash -c \"#{cmd}\""
111
+ end
112
+
113
+ def create_torrent
114
+ t = Torrent.new(@tracker)
115
+ @files.each do |flac_file|
116
+ t.add_file(flac_file)
117
+ end
118
+ t.defaultdir = @dir_name
119
+ t.set_private
120
+ t.write_torrent("#{@dir_name}.torrent")
121
+ end
122
+ end
@@ -0,0 +1,3 @@
1
+ class WhatCD
2
+ VERSION = "0.0.4"
3
+ end
data/lib/what_cd.rb ADDED
@@ -0,0 +1,14 @@
1
+ #$:.unshift File.dirname(__FILE__)
2
+
3
+ class WhatCD
4
+
5
+ def initialize(options = {})
6
+ end
7
+
8
+ class << self
9
+ # V0
10
+ def default_encoding
11
+ '--preset extreme'
12
+ end
13
+ end
14
+ end
metadata ADDED
@@ -0,0 +1,77 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: what_cd
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
+ platform: ruby
6
+ authors:
7
+ - Jason Parraga
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-10-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: flac2mp3
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: mktorrent
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Useful CLI tools for What.cd
42
+ email:
43
+ - sovietaced@gmail.com
44
+ executables:
45
+ - what_cd
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - README.md
50
+ - lib/better.rb
51
+ - lib/what_cd/version.rb
52
+ - lib/what_cd.rb
53
+ - bin/what_cd
54
+ homepage: https://github.com/Sovietaced/what-cd
55
+ licenses: []
56
+ metadata: {}
57
+ post_install_message:
58
+ rdoc_options: []
59
+ require_paths:
60
+ - lib
61
+ required_ruby_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ required_rubygems_version: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ requirements: []
72
+ rubyforge_project:
73
+ rubygems_version: 2.1.11
74
+ signing_key:
75
+ specification_version: 4
76
+ summary: Useful CLI tools for What.cd
77
+ test_files: []