Class: Crossfader::CLI

Inherits:
Thor
  • Object
show all
Includes:
HTTMultiParty
Defined in:
lib/crossfader/cli.rb

Instance Method Summary collapse

Constructor Details

#initializeCLI

Returns a new instance of CLI.



10
11
12
13
# File 'lib/crossfader/cli.rb', line 10

def initialize(*)
    @rcfile = Crossfader::RCFile.instance
    super
end

Instance Method Details

#authObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/crossfader/cli.rb', line 16

def auth
  say "Welcome! Before you can use crossfader, you'll first need to log in"
        say 'to your account and get an access token. Follow the steps below:'
        email = ask 'Enter your crossdfader.fm email address: '
        password = ask('Enter your crossfader.fm password: ', :echo => false)
        options = { :body => {email: email, password: password } }
      response = self.class.post('/users/login', options)
      if response.code == 200
        @rcfile[email] = { email: email, api_access_token: response['api_access_token'], dj_name: response['dj_name'] }
        say "\nAuthorized successfully!\n"
       else
        say "\nSomething went wrong. Tell Adam.\n"
       end
end

#batchObject



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/crossfader/cli.rb', line 78

def batch
  say "Time to batch convert and upload!"
  pack_name = ask "What do you want to name your new pack?"
  pack_sub = ask "Enter the subtitle for this pack:"
  dir = ask('Select a folder of loops to process and upload:')
  files = FileList.new("#{dir}/*.wav")
  files.each{|file| convert_wav_to_mp3(file) }
  loop_responses = files.map{|file| create_loop_from_file(file) }
  loop_ids = loop_responses.map{|r| r['id'] }
  response = create_new_pack(pack_name, pack_sub, loop_ids)
  if response.code == 200
    say "Success!"
  else
    say "Something went wrong."
  end
end

#cleanObject



96
97
98
99
100
101
# File 'lib/crossfader/cli.rb', line 96

def clean
  dir = ask('Select a folder of MP3s to delete: ')
  mp3s = FileList["#{dir}/*.mp3"]
  Rake::Cleaner.cleanup_files(mp3s)
  say "Removed MP3s successfully."
end

#convertObject



32
33
34
35
36
37
38
# File 'lib/crossfader/cli.rb', line 32

def convert
  say "Let's convert wavs to MP3s!"
  dir = ask('Select a folder of loops to convert: ')
  files = FileList.new("#{dir}/*.wav")
  files.each{|file| convert_wav_to_mp3(file) }
  say "The loops were converted successfully"
end

#create_packObject



50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/crossfader/cli.rb', line 50

def create_pack
  say "Create a new pack? That's a great idea!"
  pack_name = ask "What should we call this pack?"
  pack_sub = ask "Enter the subtitle for this pack:"
  response = create_new_pack(pack_name, pack_sub)
  say response.code
  if response.code == 200
    say "Successfully created a pack named #{pack_name}"
  else
    say "Something went wrong."
  end
end

#helpObject



64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/crossfader/cli.rb', line 64

def help
  say "\nYou can perform the following actions:"
  say "---\n\n"
  say "\`crossfader auth\` Authorize this app to work with the Crossfader.fm API.\n"
  say "\`crossfader convert\` : Convert a folder of .wav files to .mp3.\n"
  say "\`crossfader upload\` : Upload a folder of .mp3s to the server to create new loops.\n"
  say "\`crossfader batch\` : Create a new pack, convert a folder of .wav files to .mp3 files and upload them to the server in one step.\n" 
  say "\`crossfader create_pack\` : Create a new empty pack.\n\n"
  say "\`crossfader clean\` : Remove all MP3s from a folder.\n\n"
  say "---\n"
  say "Have questions, comments, or feed back? Contact Adam at [email protected]\n\n"
end

#uploadObject



41
42
43
44
45
46
47
# File 'lib/crossfader/cli.rb', line 41

def upload
  say "Time to upload some loops!"
  dir = ask('Select a folder of loops to upload: ')
  wavs = FileList["#{dir}/*.wav"]
  wavs.each{|file| create_loop_from_file(file) }
  say "The loops were uploaded successfully"
end