imgin 0.0.1.pre

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.
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: []