what_cd 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|