rget 2.1.1 → 2.2.0
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 +4 -4
- data/README.md +4 -1
- data/bin/rget +1 -0
- data/lib/dropbox.rb +36 -0
- data/lib/webradio.rb +66 -11
- data/lib/youtube.rb +1 -1
- data/rget.gemspec +2 -1
- metadata +16 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 025b9f5f8c137bf257d8c267dc1586c43a2e9851
         | 
| 4 | 
            +
              data.tar.gz: de457800bc506b8950548f7d7fca1b3b753840ac
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 6ac3a4abdbba0cb87003feff1c584aecf87e13aa6eb1b018beb88d29631d634b13db49733febcaa882f06bf9cc74387ca3401a4b5e5fa9fc31c3bbfed2e5b49e
         | 
| 7 | 
            +
              data.tar.gz: 31619930129f831a5ab63ec2ec4c8b0ae8b137cc19515e66b9316f79a138a7acd3c1f87f479c729cbceaa6f9f703c391c7aef9f789526317b6a1ddbfb7bce5b9
         | 
    
        data/README.md
    CHANGED
    
    | @@ -14,4 +14,7 @@ For customize radio programs, copy `rget.yaml` to `~/.rget` or current work dire | |
| 14 14 |  | 
| 15 15 | 
             
                rget imas_cg            # download and convert to mp3 THE iDOLM@STER Cinderella Girls Radio
         | 
| 16 16 | 
             
                rget imastudio --no-mp3 # download imastudio only (saved .m4a file)
         | 
| 17 | 
            -
             | 
| 17 | 
            +
                rget trysail --path=/home/hoge/radio
         | 
| 18 | 
            +
                                        # srore mp3 file to specified directory
         | 
| 19 | 
            +
                rget suzakinishi --path=dropbpx://radio
         | 
| 20 | 
            +
            	                         # store mp3 file to radio folder of Dropbox
         | 
    
        data/bin/rget
    CHANGED
    
    
    
        data/lib/dropbox.rb
    ADDED
    
    | @@ -0,0 +1,36 @@ | |
| 1 | 
            +
            require "dropbox-api"
         | 
| 2 | 
            +
            require "dropbox-api/tasks"
         | 
| 3 | 
            +
            require 'pit'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module DropboxAuth
         | 
| 6 | 
            +
            	def self.client
         | 
| 7 | 
            +
            		token = Pit::get('rget-dropbox')
         | 
| 8 | 
            +
            		unless token[:api_key]
         | 
| 9 | 
            +
            			print "Enter dropbox app key: "
         | 
| 10 | 
            +
            			token[:api_key] = $stdin.gets.chomp
         | 
| 11 | 
            +
            			print "Enter dropbox app secret: "
         | 
| 12 | 
            +
            			token[:api_secret] = $stdin.gets.chomp
         | 
| 13 | 
            +
            			Pit::set('rget-dropbox', data: token)
         | 
| 14 | 
            +
            		end
         | 
| 15 | 
            +
            		Dropbox::API::Config.app_key    = token[:api_key]
         | 
| 16 | 
            +
            		Dropbox::API::Config.app_secret = token[:api_secret]
         | 
| 17 | 
            +
            		Dropbox::API::Config.mode       = 'dropbox'
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            		unless token[:access_token]
         | 
| 20 | 
            +
            			consumer = Dropbox::API::OAuth.consumer(:authorize)
         | 
| 21 | 
            +
            			request_token = consumer.get_request_token
         | 
| 22 | 
            +
            			puts "\nGo to this url and click 'Authorize' to get the token:"
         | 
| 23 | 
            +
            			puts request_token.authorize_url
         | 
| 24 | 
            +
            			query = request_token.authorize_url.split('?').last
         | 
| 25 | 
            +
            			verifier, = CGI.parse(query)['oauth_token']
         | 
| 26 | 
            +
            			print "\nOnce you authorize the app on Dropbox, press enter... "
         | 
| 27 | 
            +
            			$stdin.gets
         | 
| 28 | 
            +
            			access_token = request_token.get_access_token(oauth_verifier: verifier)
         | 
| 29 | 
            +
            			token[:access_token]  = access_token.token
         | 
| 30 | 
            +
            			token[:access_secret] = access_token.secret
         | 
| 31 | 
            +
            			Pit::set('rget-dropbox', data: token)
         | 
| 32 | 
            +
            		end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            		Dropbox::API::Client.new(token: token[:access_token], secret: token[:access_secret])
         | 
| 35 | 
            +
            	end
         | 
| 36 | 
            +
            end
         | 
    
        data/lib/webradio.rb
    CHANGED
    
    | @@ -35,6 +35,10 @@ class WebRadio | |
| 35 35 | 
             
            		raise 'do not instanciate directly, use WebRadio method.' if self.class == WebRadio
         | 
| 36 36 | 
             
            		@url = url
         | 
| 37 37 | 
             
            		@options = options
         | 
| 38 | 
            +
            		if @options.path =~ %r|^dropbox://|
         | 
| 39 | 
            +
            			require 'dropbox'
         | 
| 40 | 
            +
            			@dropbox = DropboxAuth.client
         | 
| 41 | 
            +
            		end
         | 
| 38 42 | 
             
            	end
         | 
| 39 43 |  | 
| 40 44 | 
             
            	def download(name)
         | 
| @@ -43,37 +47,88 @@ class WebRadio | |
| 43 47 |  | 
| 44 48 | 
             
            private
         | 
| 45 49 | 
             
            	def mp3ize(src, dst, delete_src = true)
         | 
| 50 | 
            +
            		if @options.mp3
         | 
| 51 | 
            +
            			if exist?(dst)
         | 
| 52 | 
            +
            				puts "#{dst} is existent, skipped."
         | 
| 53 | 
            +
            				return
         | 
| 54 | 
            +
            			end
         | 
| 55 | 
            +
            		else
         | 
| 56 | 
            +
            			if exist?(src)
         | 
| 57 | 
            +
            				puts "#{src} is existent, skipped."
         | 
| 58 | 
            +
            				return
         | 
| 59 | 
            +
            			end
         | 
| 60 | 
            +
            		end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
             | 
| 46 63 | 
             
            		# download src file
         | 
| 47 | 
            -
            		 | 
| 64 | 
            +
            		unless File.exist?(src)
         | 
| 48 65 | 
             
            			print "getting #{src}..."
         | 
| 49 66 | 
             
            			begin
         | 
| 50 67 | 
             
            				yield
         | 
| 51 68 | 
             
            				puts "done."
         | 
| 52 69 | 
             
            			rescue DownloadError => e
         | 
| 53 | 
            -
            				puts "failed."
         | 
| 54 70 | 
             
            				File.delete(src) if File.exist?(src)
         | 
| 71 | 
            +
            				puts "failed."
         | 
| 55 72 | 
             
            				$stderr.puts e.message
         | 
| 56 73 | 
             
            				return
         | 
| 57 74 | 
             
            			end
         | 
| 58 75 | 
             
            		end
         | 
| 76 | 
            +
            		if !@options.mp3 || src == dst
         | 
| 77 | 
            +
            			move(src) if @options.path
         | 
| 78 | 
            +
            			return
         | 
| 79 | 
            +
            		end
         | 
| 59 80 |  | 
| 60 81 | 
             
            		# convert to mp3
         | 
| 61 | 
            -
            		return self unless @options.mp3
         | 
| 62 | 
            -
             | 
| 63 82 | 
             
            		print "converting to mp3..."
         | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 83 | 
            +
                 	result = Open3.capture3("ffmpeg -i #{src} -ab 64k #{dst}")
         | 
| 84 | 
            +
            		if result[2].to_i == 0
         | 
| 85 | 
            +
            			File.delete(src) if delete_src
         | 
| 86 | 
            +
            			puts "done."
         | 
| 66 87 | 
             
            		else
         | 
| 67 | 
            -
             | 
| 68 | 
            -
            			 | 
| 69 | 
            -
             | 
| 88 | 
            +
            			File.delete(dst) if File.exist?(dst)
         | 
| 89 | 
            +
            			puts "failed."
         | 
| 90 | 
            +
            			$stderr.puts result[1]
         | 
| 91 | 
            +
            			return
         | 
| 92 | 
            +
            		end
         | 
| 93 | 
            +
            		move(dst) if @options.path
         | 
| 94 | 
            +
            	end
         | 
| 95 | 
            +
             | 
| 96 | 
            +
            	def exist?(dst)
         | 
| 97 | 
            +
            		if @dropbox
         | 
| 98 | 
            +
            			begin
         | 
| 99 | 
            +
            				!@dropbox.ls(dropbox_file(dst))[0]['is_deleted']
         | 
| 100 | 
            +
            			rescue Dropbox::API::Error::NotFound, NoMethodError
         | 
| 101 | 
            +
            				false
         | 
| 102 | 
            +
            			end
         | 
| 103 | 
            +
            		elsif @options.path
         | 
| 104 | 
            +
            			File.exist?(File.join(@options.path, dst))
         | 
| 105 | 
            +
            		else
         | 
| 106 | 
            +
            			File.exist?(dst)
         | 
| 107 | 
            +
            		end
         | 
| 108 | 
            +
            	end
         | 
| 109 | 
            +
             | 
| 110 | 
            +
            	def move(dst)
         | 
| 111 | 
            +
            		if @options.path
         | 
| 112 | 
            +
            			print "move to #{@options.path}..."
         | 
| 113 | 
            +
            			begin
         | 
| 114 | 
            +
            				if @dropbox
         | 
| 115 | 
            +
            					@dropbox.chunked_upload(dropbox_file(dst), open(dst))
         | 
| 116 | 
            +
            					File.delete(dst)
         | 
| 117 | 
            +
            				elsif @options.path
         | 
| 118 | 
            +
            					FileUtils.mv(dst, @options.path)
         | 
| 119 | 
            +
            				end
         | 
| 70 120 | 
             
            				puts "done."
         | 
| 71 | 
            -
            			 | 
| 121 | 
            +
            			rescue => e
         | 
| 72 122 | 
             
            				puts "failed."
         | 
| 73 | 
            -
            				$stderr.puts  | 
| 123 | 
            +
            				$stderr.puts e.message
         | 
| 74 124 | 
             
            			end
         | 
| 75 125 | 
             
            		end
         | 
| 76 126 | 
             
            	end
         | 
| 127 | 
            +
             | 
| 128 | 
            +
            	def dropbox_file(file)
         | 
| 129 | 
            +
            		path = @options.path.sub(%r|^dropbox://|, '')
         | 
| 130 | 
            +
            		File.join(path, file)
         | 
| 131 | 
            +
            	end
         | 
| 77 132 | 
             
            end
         | 
| 78 133 |  | 
| 79 134 | 
             
            def WebRadio(url, options)
         | 
    
        data/lib/youtube.rb
    CHANGED
    
    | @@ -16,7 +16,7 @@ class YouTube < WebRadio | |
| 16 16 | 
             
            		@src = "#{name}##{'%02d' % serial}.mp4"
         | 
| 17 17 | 
             
            		@dst = "#{name}##{'%02d' % serial}.mp3"
         | 
| 18 18 | 
             
            		mp3ize(@src, @dst) do
         | 
| 19 | 
            -
            			player_url = " | 
| 19 | 
            +
            			player_url = "https://www.youtube.com#{list[serial]}".sub(/&.*/, '')
         | 
| 20 20 | 
             
                 		result = Open3.capture3("viddl-rb -u -q '*:*:mp4' '#{player_url}'")
         | 
| 21 21 | 
             
            			video_url = result[0].split.last.chomp
         | 
| 22 22 | 
             
            			open(@src, 'wb:ASCII-8BIT') do |o|
         | 
    
        data/rget.gemspec
    CHANGED
    
    | @@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) | |
| 4 4 |  | 
| 5 5 | 
             
            Gem::Specification.new do |spec|
         | 
| 6 6 | 
             
              spec.name          = "rget"
         | 
| 7 | 
            -
              spec.version       = "2. | 
| 7 | 
            +
              spec.version       = "2.2.0"
         | 
| 8 8 | 
             
              spec.authors       = ["TADA Tadashi"]
         | 
| 9 9 | 
             
              spec.email         = ["t@tdtds.jp"]
         | 
| 10 10 | 
             
              spec.description   = %q{Downloading newest radio programs on the web. Supported radio stations are hibiki, animate, onsen, seaside communications, niconico and youtube.}
         | 
| @@ -22,6 +22,7 @@ Gem::Specification.new do |spec| | |
| 22 22 | 
             
              spec.add_runtime_dependency "niconico", ">= 1.7.0"
         | 
| 23 23 | 
             
              spec.add_runtime_dependency "viddl-rb"
         | 
| 24 24 | 
             
              spec.add_runtime_dependency "pit"
         | 
| 25 | 
            +
              spec.add_runtime_dependency "dropbox-api"
         | 
| 25 26 |  | 
| 26 27 | 
             
              spec.add_development_dependency "bundler", "~> 1.3"
         | 
| 27 28 | 
             
              spec.add_development_dependency "rake"
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: rget
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2. | 
| 4 | 
            +
              version: 2.2.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - TADA Tadashi
         | 
| @@ -80,6 +80,20 @@ dependencies: | |
| 80 80 | 
             
                - - ">="
         | 
| 81 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 82 | 
             
                    version: '0'
         | 
| 83 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 84 | 
            +
              name: dropbox-api
         | 
| 85 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 | 
            +
                requirements:
         | 
| 87 | 
            +
                - - ">="
         | 
| 88 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            +
                    version: '0'
         | 
| 90 | 
            +
              type: :runtime
         | 
| 91 | 
            +
              prerelease: false
         | 
| 92 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 | 
            +
                requirements:
         | 
| 94 | 
            +
                - - ">="
         | 
| 95 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            +
                    version: '0'
         | 
| 83 97 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 98 | 
             
              name: bundler
         | 
| 85 99 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -138,6 +152,7 @@ files: | |
| 138 152 | 
             
            - Rakefile
         | 
| 139 153 | 
             
            - bin/rget
         | 
| 140 154 | 
             
            - lib/animate.rb
         | 
| 155 | 
            +
            - lib/dropbox.rb
         | 
| 141 156 | 
             
            - lib/hibiki.rb
         | 
| 142 157 | 
             
            - lib/nicovideo.rb
         | 
| 143 158 | 
             
            - lib/onsen.rb
         |