PAGE 104 11.6 A Few Things To Try

1. Adapt picture-downloading/file-renaming program to your computer.

Picture-download/file-rename program
# Mac gives a 'cross-device link error' when using File.rename
# to move between Volumes. So assume all pics are moved from camera drive
# to a folder on the computer, 'camera', and then need to be renamed and moved
# to a pictures folder on the desktop.

folder_name = 'Desktop/pics/'

pic_names = Dir['camera/**/*.{JPG,jpg}']

puts 'what would you like to call this batch?'
batch_name = gets.chomp

puts
print 'Downloading '+ pic_names.length.to_s+' files: '

pic_number = 1

pic_names.each do |name|
print '.'

new_name = if pic_number < 10
folder_name.to_s + batch_name + '0' + pic_number.to_s + '.jpg'
else
folder_name.to_s + batch_name + pic_number.to_s + '.jpg'
end

if File.exist? new_name
puts
puts 'DANGER: file names already exist, exiting!'
puts
exit
else
File.rename name, new_name
end

pic_number = pic_number + 1
end

puts
puts 'Done'


2. Build your own playlists.

def shuffle array

x = 0
track_number = 0
number_songs = 0
playlist = [ ]

number_songs = array.length


while x < number_songs

track_number = rand(number_songs)

if array[track_number] != ''
playlist.push array[track_number]
array[track_number] = ''
x = x + 1
else
end
end


filename = 'Desktop/playlist.m3u'

File.open filename, 'w' do |f|
f.puts playlist
end

end

tracks = Dir['Desktop/music/**/*.{ogg,mp3,m4a}']

shuffle tracks


3. Mixed random better playlist.

# music_shuffle tries to minimize clumping at the beginning of playlist,
# does not generate a perfectly mixed up playlist
# just less clumpy


def music_shuffle array

x = 0
track_number = 0
number_songs = 0
playlist = [ ]
full_song_name = [ ]
album_on_deck = ''
previous_album = ''

number_songs = array.length

while x < number_songs

track_number = rand(number_songs)

full_song_name = array[track_number].split'/'

album_on_deck = full_song_name[2]

if album_on_deck != previous_album

if array[track_number] != ''
playlist.push array[track_number]
array[track_number] = ''
x = x + 1
else
end

previous_album = album_on_deck

else
end

end

filename = 'Desktop/playlist.m3u'

File.open filename, 'w' do |f|
f.puts playlist
end

end

tracks = Dir['Desktop/music/**/*.{ogg,mp3,m4a}']

music_shuffle tracks