lib/subtitle.rb in undertexter-0.0.7 vs lib/subtitle.rb in undertexter-0.1.0

- old
+ new

@@ -1,5 +1,8 @@ +require 'fileutils' +require 'mimer_plus' + class Subtitle attr_accessor :details, :downloads, :cds, :title, :movie_title, :url def initialize(args) args.keys.each { |name| instance_variable_set "@" + name.to_s, args[name] } @@ -7,10 +10,56 @@ def url @language == :english ? "http://eng.undertexter.se/subtitle.php?id=#{id}" : "http://www.undertexter.se/utext.php?id=#{id}" end + # Downloading the file and saves it disk + def download!(args = {}) + if args[:to].nil? + dir = "/tmp" + file_name = "#{dir}/#{generate_file_name}" + else + dir = generate_custom_file_path(args) + file_name = "#{dir}/#{generate_file_name}" + end + + data = RestClient.get(self.url, :timeout => 10) rescue nil + file = File.new(file_name, 'w') + file.write(data) + file.close + + type = Mimer.identify(file_name) + + if type.zip? + file_ending = ".zip" + elsif type.rar? + file_ending = ".rar" + else + file_ending = "" + end + + new_file_name = "#{dir}/#{title.gsub(/\s+/, '.')}#{file_ending}" + + # Changing the name on the file + FileUtils.mv(file_name, new_file_name) + + # I like return :) + return new_file_name + end + private def id @details.match(/id=(\d+)/)[1] + end + + def generate_file_name + (0...30).map{65.+(rand(25)).chr}.join.downcase + end + + def generate_custom_file_path(args) + # If the path is relative + args[:to] = File.expand_path(args[:to]) unless args[:to].match(/^\//) + + # Makes sure that every directory structure looks the same + Dir.new(args[:to]).path end end \ No newline at end of file