what_cd 0.0.4

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.
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: []