Sha256: 2e76ead083fa4f0f495afbba6e8c6abbfe9f48dc34306b3d8d2b49987daa62e4

Contents?: true

Size: 1.49 KB

Versions: 1

Compression:

Stored size: 1.49 KB

Contents

class IdsPlease
  module Grabbers
    class Facebook < IdsPlease::Grabbers::Base

      def grab_link
        @network_id   = page_source.scan(/entity_id":"(\d+)"/).flatten.first
        @avatar       = page_source.scan(/og:image" content="([^"]+)"/).flatten.first
        @display_name = page_source.scan(/og:title" content="([^"]+)"/).flatten.first
        @username     = page_source.scan(/og:url" content="[^"]+\/([^\/"]+)"/).flatten.first
        @avatar       = CGI.unescapeHTML(@avatar.encode('utf-8')) if @avatar
        @display_name = CGI.unescapeHTML(@display_name.encode('utf-8')) if @display_name
        @data = {}
        {
          type: page_source.scan(/og:type" content="([^"]+)"/).flatten.first.to_s.encode('utf-8'),
          description: page_source.scan(/og:description" content="([^"]+)"/).flatten.first.to_s.encode('utf-8'),
        }.each do |k, v|
          next if v.nil? || v == ''
          @data[k] = CGI.unescapeHTML(v).strip
        end
        @counts = {
          likes:  likes,
          visits: visits,
        }.delete_if {|k,v| v.nil? }
        self
      rescue => e
        p e
        return self
      end

      def likes
        page_source.scan(/>([^"]+) <span class=".+">likes/).flatten.first.to_s.tr(',','').to_i
      rescue => e
        p e
        return nil
      end

      def visits
        page_source.scan(/likes.+>([^"]+)<\/span> <span class=".+">visits/).flatten.first.to_s.tr(',','').to_i
      rescue => e
        p e
        return nil
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ids_please-2.2.0 lib/ids_please/grabbers/facebook.rb