imgin 0.0.1.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/imgin.rb +55 -0
  3. metadata +71 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: caa9aba5b2a1d12b31b8fe47e0a0496f659b2bfa
4
+ data.tar.gz: affc75ba76162340aa14ef5d7b2f6e38dabfe84f
5
+ SHA512:
6
+ metadata.gz: ae2c039cc61bcce704d5bfffc75956b82f4029e8233a8471b850959e5c01dbd32dd02a62f8cc34c52f6422f937ae64fbbaebebcb36addb35b45916cc8a125dea
7
+ data.tar.gz: bfe9b60739b57ca0e7788033b43bc9749570b68cf5df8172c37fb6c710e72ca696c623314f6deb7082860d7b86897ec35e00353bfae890cc068fc575fa291b1f
@@ -0,0 +1,55 @@
1
+ # ImagIn program takes a word (or string) as an argument and
2
+ # returns a URL or an image based on an image search of that word or string
3
+ require 'Imgin/version'
4
+
5
+ module Imgin
6
+ require 'open-uri'
7
+ require 'nokogiri'
8
+
9
+ class Image
10
+ class << self
11
+ def get_search_results(search_phrase, size)
12
+ size_hash = { :small => "&imgsz=icon", :medium => "&imgsz=medium",
13
+ :large => "&imgsz=large", :huge => "&imgsz=wallpaper"}
14
+
15
+ search_phrase.gsub!(/\s/) { '+' }
16
+ page = Nokogiri::HTML(open("https://images.search.yahoo.com/search/images?p=#{search_phrase}#{size_hash[size.to_sym]}"))
17
+ end
18
+
19
+ def extract_links_to_imgs(page)
20
+ links_to_imgs = []
21
+ page.css('li.ld a').each {|link| links_to_imgs << link['href']}
22
+ links_to_imgs
23
+ end
24
+
25
+ def parse_image_links(links)
26
+ img_urls = []
27
+ img_url_pattern = /.*(imgurl=)(.*\.(jpg|jpeg|png|gif|svg))/
28
+ links.each do |link|
29
+ link_match = img_url_pattern.match(link)
30
+ if link_match
31
+ img_urls << link_match[2]
32
+ end
33
+ end
34
+ img_urls
35
+ end
36
+
37
+ def reformat_urls(img_urls)
38
+ img_urls.each do |url|
39
+ url.gsub!(/(%2F)/) { '/' }.gsub!(/(%2520)/) { '%20' }
40
+ end
41
+ end
42
+
43
+ def select_image(img_urls)
44
+ img_urls.sample
45
+ end
46
+
47
+ def get(search_phrase, size="")
48
+ links_to_imgs = extract_links_to_imgs(get_search_results(search_phrase, size))
49
+ img_links = parse_image_links(links_to_imgs)
50
+ select_image(reformat_urls(img_links))
51
+ end
52
+ end
53
+ end
54
+ end
55
+
metadata ADDED
@@ -0,0 +1,71 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: imgin
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.pre
5
+ platform: ruby
6
+ authors:
7
+ - José Menor, Brittany Mazza, Mason O'Neal, Iván Sued
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-02-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nokogiri
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.6.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.6.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 2.14.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 2.14.1
41
+ description: returns a URL for a sample image based on a given search word or phrase
42
+ email:
43
+ executables: []
44
+ extensions: []
45
+ extra_rdoc_files: []
46
+ files:
47
+ - lib/imgin.rb
48
+ homepage:
49
+ licenses: []
50
+ metadata: {}
51
+ post_install_message:
52
+ rdoc_options: []
53
+ require_paths:
54
+ - lib
55
+ required_ruby_version: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - '>='
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ required_rubygems_version: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - '>'
63
+ - !ruby/object:Gem::Version
64
+ version: 1.3.1
65
+ requirements: []
66
+ rubyforge_project:
67
+ rubygems_version: 2.2.2
68
+ signing_key:
69
+ specification_version: 4
70
+ summary: Imgin
71
+ test_files: []