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 +7 -0
- data/README.md +4 -0
- data/bin/what_cd +40 -0
- data/lib/better.rb +122 -0
- data/lib/what_cd/version.rb +3 -0
- data/lib/what_cd.rb +14 -0
- metadata +77 -0
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
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
|
data/lib/what_cd.rb
ADDED
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: []
|