funky 0.2.0 → 0.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 46500b4ee5d1c68792512b9cf131180960761e1f
4
- data.tar.gz: 0a189efa28c00babc417f76508e6086d714143fe
3
+ metadata.gz: d76c2fdd3918dd49adec887a52a8cd55d1062658
4
+ data.tar.gz: 60c4af9c11e05e4d40c9d077e03a5847131580bb
5
5
  SHA512:
6
- metadata.gz: 6253eaff7e502716d92bd33c5147da6e57fbb400fc7ca7b0bffe8fd3862f738546563b8e7069aa74ae60ff174832951019998ebfd8393bab0d8ae84871acf56d
7
- data.tar.gz: cd773bba9f1f366dee400e473d052bf8065c502eb8dd740e38a24ef2e7015fb293a58c35c6aa1869a5bbbc4ac177a38c7cf9f6f2f519d144e1fd3ef72a590bbd
6
+ metadata.gz: f0a9bdfdc29390b523a28d83af059744a3b7ede1a55089881aa83e2b94b0195dfd4acdd93b3cdbcc38f6653fc23ffdf320862fd89fb63d73939e0d7fded85c0e
7
+ data.tar.gz: b62532c7eeeb17680771a2d30b40cc2a82c6f06b2cce55594d6855bff4d4f6d6e9e8b0318eb7c12a42fd95bbd2506d9a11bdeb0d6488ba6a3d591e0c9503a7d9
@@ -6,6 +6,15 @@ For more information about changelogs, check
6
6
  [Keep a Changelog](http://keepachangelog.com) and
7
7
  [Vandamme](http://tech-angels.github.io/vandamme).
8
8
 
9
+ ## 0.2.1 - 2016/06/16
10
+
11
+ * [FEATURE] Add method to find video by url, `Funky::Video.find_by_url!(url)`.
12
+ The following URL formats are currently supported:
13
+ - `https://www.facebook.com/{page_name}/videos/vb.{alt_page_id}/{video_id}/`
14
+ - `https://www.facebook.com/{page_name}/videos/{video_id}/`
15
+ - `https://www.facebook.com/{page_id}/videos/{video_id}/`
16
+ - `https://www.facebook.com/video.php?v={video_id}`
17
+
9
18
  ## 0.2.0 - 2016/06/07
10
19
 
11
20
  **How to upgrade**
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  [![Build Status](https://travis-ci.org/Fullscreen/funky.svg?branch=master)](https://travis-ci.org/Fullscreen/funky)
2
2
  [![Coverage Status](https://coveralls.io/repos/github/Fullscreen/funky/badge.svg?branch=master)](https://coveralls.io/github/Fullscreen/funky?branch=master)
3
3
  [![Dependency Status](https://gemnasium.com/badges/github.com/Fullscreen/funky.svg)](https://gemnasium.com/github.com/Fullscreen/funky)
4
+ [![Code Climate](http://img.shields.io/codeclimate/github/Fullscreen/funky.svg)](https://codeclimate.com/github/Fullscreen/funky)
4
5
  [![Gem Version](https://badge.fury.io/rb/funky.svg)](https://badge.fury.io/rb/funky)
5
6
 
6
7
  # Funky
@@ -94,6 +95,32 @@ If a non-existing video ID is passed into #find, Funky::ContentNotFound will be
94
95
  Funky::Video.find('doesnotexist') # => raises Funky::ContentNotFound
95
96
  ```
96
97
 
98
+ ### Use #find_by_url!(url) to get a single video from a url
99
+
100
+ ```ruby
101
+ video = Funky::Video.find_by_url!('https://www.facebook.com/video.php?v=10154439119663508')
102
+ video.id # => '10154439119663508'
103
+ video.like_count # => 1169
104
+ video.comment_count # => 65
105
+ video.share_count # => 348
106
+ video.view_count # => 10121
107
+ ```
108
+
109
+ If a non-existing video url is passed into #find_by, Funky::ContentNotFound will be raised.
110
+
111
+ ```ruby
112
+ Funky::Video.find_by_url!('https://www.facebook.com/video.php?v=doesnotexist')
113
+ # => raises Funky::ContentNotFound
114
+ ```
115
+
116
+ The current URL formats are supported:
117
+
118
+ - `https://www.facebook.com/{page_name}/videos/vb.{alt_page_id}/{video_id}`
119
+ - `https://www.facebook.com/{page_name}/videos/{video_id}`
120
+ - `https://www.facebook.com/{page_id}/videos/{video_id}`
121
+ - `https://www.facebook.com/video.php?v={video_id}`
122
+
123
+
97
124
  ### Connection error
98
125
 
99
126
  Should there be a case where Funky is unable to connect to Facebook, `Funky::ConnectionError` will be raised.
@@ -0,0 +1,19 @@
1
+ module Funky
2
+ class URL
3
+ attr_reader :url
4
+ VIDEO_ID_REGEXES = [/videos\/(\d*)/i, /v=(\d*)/i, /\/v.\..*\/(\d*)\b/i]
5
+
6
+ def initialize(url)
7
+ @url = url
8
+ end
9
+
10
+ def video_id
11
+ return unless url.include? 'facebook.com'
12
+ VIDEO_ID_REGEXES.each do |regex|
13
+ url.match regex
14
+ return $1 unless $1.nil? || $1.empty? || !$1.size.between?(15,17)
15
+ end
16
+ nil
17
+ end
18
+ end
19
+ end
@@ -1,3 +1,3 @@
1
1
  module Funky
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -1,5 +1,6 @@
1
1
  require 'funky/html/page'
2
2
  require 'funky/html/parser'
3
+ require 'funky/url'
3
4
 
4
5
  module Funky
5
6
  class Video
@@ -90,6 +91,21 @@ module Funky
90
91
  new counters.merge(id: video_id)
91
92
  end
92
93
 
94
+ # Similar to #find, but it finds the video by url instead of video id.
95
+ # Fetches the data from Facebook's HTML and instantiates the data
96
+ # into a single Funky::Video object. It can accept one only video url.
97
+ #
98
+ # @example Getting a video by url
99
+ # url = 'https://www.facebook.com/video.php?v=203203106739575'
100
+ # Funky::Video.find_by_url!(url) # => #<Funky::Video>
101
+ #
102
+ # @return [Funky::Video] the data scraped from Facebook's HTML
103
+ # and encapsulated into a Funky::Video object.
104
+ def self.find_by_url!(url)
105
+ url = URL.new(url)
106
+ find(url.video_id)
107
+ end
108
+
93
109
  private
94
110
 
95
111
  def self.fetch_and_parse_data(ids)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: funky
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Philip Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-08 00:00:00.000000000 Z
11
+ date: 2016-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -123,6 +123,7 @@ files:
123
123
  - lib/funky/errors.rb
124
124
  - lib/funky/html/page.rb
125
125
  - lib/funky/html/parser.rb
126
+ - lib/funky/url.rb
126
127
  - lib/funky/version.rb
127
128
  - lib/funky/video.rb
128
129
  homepage: https://github.com/Fullscreen/funky