module Memegen
Module Memegen
provides free api driver for memegen.link/
@author Maanav Shah <shah.maanav.07@gmail.com>
Attributes
font[RW]
height[RW]
width[RW]
Public Instance Methods
generate(title, caption, image)
click to toggle source
Generate the meme using title, caption and image url
@param String title A title for the image @param String caption A caption for the image @param String image An url for image
@return File An image
# File lib/meme_generate/memegen.rb, line 61 def generate(title, caption, image) # check if title, caption and image is present and valid invalid = false if title.nil? || title.empty? logger.error('Empty title detected') invalid = true end if caption.nil? || caption.empty? logger.error('Empty caption detected') invalid = true end url = image.match(/.*(?=\.)/) if url.nil? || !image_exists?(url[0]) logger.error('Image not found') invalid = true end unless invalid # Replace the reserve words reserved_characters.each { |k, v| title.gsub!(k.to_s, v.to_s) } reserved_characters.each { |k, v| caption.gsub!(k.to_s, v.to_s) } # Generate the url url = "https://memegen.link/custom/#{title}/#{caption}.jpg?alt=#{image}" # Parameters options = {} options[:font] = @font if list_fonts.include?(@font) options[:width] = @width.to_i if @width.to_i > 100 options[:height] = @height.to_i if @height.to_i > 100 options[:share] = (@share == true) options.reject! { |_k, v| v.empty? } response = if options.empty? || options.nil? Unirest.get(url) else Unirest.get(url, parameters: options) end # Writing image File.open("#{Time.now.to_i}.jpeg", 'w+') do |f| f.write(response.body) f.close end logger.info('Meme generated') end end
list_fonts()
click to toggle source
Get the list of fonts
@return Array List of fonts
# File lib/meme_generate/memegen.rb, line 47 def list_fonts response = Unirest.get('https://memegen.link/api/fonts') response.body end
logger()
click to toggle source
Initializes logger
@return Logger Logger instancce
# File lib/meme_generate/memegen.rb, line 37 def logger @logger ||= Logger.new(STDOUT) end
reserved_characters()
click to toggle source
Initializes reserved_characters
that replaces special characters
@return Hash reserved_characters
to substitute
# File lib/meme_generate/memegen.rb, line 18 def reserved_characters @reserved_characters ||= { '_': '__', '-': '--', ' ': '-', '?': '~q', '%': '~p', '#': '~h', '/': '~s', '"': "''" } end
Private Instance Methods
image_exists?(url)
click to toggle source
Check if the image exists on remote URL
@param url A remote image url
@return boolean true/false if the image exists or not
# File lib/meme_generate/memegen.rb, line 117 def image_exists?(url) uri = URI(url) request = Net::HTTP.new uri.host response = request.request_head(uri.path) [200, 301].include?(response.code.to_i) end