fbcrawl-colly 0.2.4 → 1.1.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.
@@ -1,4 +1 @@
1
-
2
- module FbcrawlColly
3
-
4
- end
1
+ require_relative './fbcrawl_colly'
@@ -0,0 +1,5 @@
1
+ require 'fbcrawl_services_pb'
2
+ require 'fbcrawl_colly/client'
3
+ module FbCrawlColly
4
+
5
+ end
@@ -0,0 +1,54 @@
1
+ module FbcrawlColly
2
+ class Client
3
+
4
+ def initialize(host_and_port)
5
+ @host_and_port = host_and_port
6
+ @client = new_grpc_client
7
+ @context = nil
8
+ end
9
+
10
+ def login(email, password, totp_secret = "")
11
+ cookies = @client.login(FbcrawlColly::LoginRequest.new(email: email, password: password, totp_secret: totp_secret)).cookies
12
+ @context = FbcrawlColly::Context.new(cookies: cookies)
13
+ cookies
14
+ end
15
+
16
+ def login_with_cookies(cookies)
17
+ @context = FbcrawlColly::Context.new(cookies: cookies)
18
+ end
19
+
20
+ def fetch_user_info(username)
21
+ s = @client.fetch_user_info(FbcrawlColly::FetchUserInfoRequest.new(context: @context, username: username))
22
+ end
23
+
24
+ def fetch_my_groups
25
+ s = @client.fetch_my_groups(FbcrawlColly::FetchMyGroupsRequest.new(context: @context))
26
+ end
27
+
28
+ def fetch_group_info(group_id_or_username)
29
+ s = @client.fetch_group_info(FbcrawlColly::FetchGroupInfoRequest.new(context: @context, group_username: group_id_or_username))
30
+ end
31
+
32
+ def fetch_group_feed(group_id, next_cursor = nil)
33
+ s = @client.fetch_group_feed(FbcrawlColly::FetchGroupFeedRequest.new(context: @context, group_id: group_id, next_cursor: next_cursor))
34
+ end
35
+
36
+ def fetch_post(group_id, post_id, comment_next_cursor = nil)
37
+ s = @client.fetch_post(FbcrawlColly::FetchPostRequest.new(context: @context, group_id: group_id, post_id: post_id, comment_next_cursor: comment_next_cursor))
38
+ end
39
+
40
+ def fetch_content_images(post_id, next_cursor = nil)
41
+ s = @client.fetch_content_images(FbcrawlColly::FetchContentImagesRequest.new(context: @context, post_id: post_id, next_cursor: next_cursor))
42
+ end
43
+
44
+ def fetch_image_url(image_id)
45
+ s = @client.fetch_image_url(FbcrawlColly::FetchImageUrlRequest.new(context: @context, image_id: image_id))
46
+ end
47
+
48
+ private
49
+
50
+ def new_grpc_client
51
+ FbcrawlColly::Grpc::Stub.new(@host_and_port, :this_channel_is_insecure)
52
+ end
53
+ end
54
+ end
@@ -1,3 +1,3 @@
1
1
  module FbcrawlColly
2
- VERSION = "0.2.4"
2
+ VERSION = "1.1.1"
3
3
  end
@@ -0,0 +1,127 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # source: fbcrawl.proto
3
+
4
+ require 'google/protobuf'
5
+
6
+ Google::Protobuf::DescriptorPool.generated_pool.build do
7
+ add_file("fbcrawl.proto", :syntax => :proto3) do
8
+ add_message "fbcrawl_colly.Context" do
9
+ optional :cookies, :string, 1
10
+ end
11
+ add_message "fbcrawl_colly.LoginRequest" do
12
+ optional :email, :string, 2
13
+ optional :password, :string, 3
14
+ optional :totp_secret, :string, 4
15
+ end
16
+ add_message "fbcrawl_colly.LoginResponse" do
17
+ optional :cookies, :string, 1
18
+ end
19
+ add_message "fbcrawl_colly.LoginWithCookiesRequest" do
20
+ optional :cookies, :string, 1
21
+ end
22
+ add_message "fbcrawl_colly.FetchMyGroupsRequest" do
23
+ optional :context, :message, 1, "fbcrawl_colly.Context"
24
+ end
25
+ add_message "fbcrawl_colly.FetchGroupInfoRequest" do
26
+ optional :context, :message, 1, "fbcrawl_colly.Context"
27
+ optional :group_username, :string, 2
28
+ end
29
+ add_message "fbcrawl_colly.FetchUserInfoRequest" do
30
+ optional :context, :message, 1, "fbcrawl_colly.Context"
31
+ optional :username, :string, 2
32
+ end
33
+ add_message "fbcrawl_colly.FetchGroupFeedRequest" do
34
+ optional :context, :message, 1, "fbcrawl_colly.Context"
35
+ optional :group_id, :int64, 2
36
+ optional :next_cursor, :string, 3
37
+ end
38
+ add_message "fbcrawl_colly.FetchPostRequest" do
39
+ optional :context, :message, 1, "fbcrawl_colly.Context"
40
+ optional :group_id, :int64, 2
41
+ optional :post_id, :int64, 3
42
+ optional :comment_next_cursor, :string, 4
43
+ end
44
+ add_message "fbcrawl_colly.FetchContentImagesRequest" do
45
+ optional :context, :message, 1, "fbcrawl_colly.Context"
46
+ optional :post_id, :int64, 2
47
+ optional :next_cursor, :string, 3
48
+ end
49
+ add_message "fbcrawl_colly.FetchImageUrlRequest" do
50
+ optional :context, :message, 1, "fbcrawl_colly.Context"
51
+ optional :image_id, :int64, 2
52
+ end
53
+ add_message "fbcrawl_colly.FacebookGroupList" do
54
+ repeated :groups, :message, 1, "fbcrawl_colly.FacebookGroup"
55
+ end
56
+ add_message "fbcrawl_colly.FacebookGroup" do
57
+ optional :id, :int64, 1
58
+ optional :name, :string, 2
59
+ optional :member_count, :int64, 3
60
+ end
61
+ add_message "fbcrawl_colly.FacebookUser" do
62
+ optional :id, :int64, 1
63
+ optional :name, :string, 2
64
+ optional :username, :string, 3
65
+ optional :friend_count, :int64, 4
66
+ end
67
+ add_message "fbcrawl_colly.FacebookPost" do
68
+ optional :id, :int64, 1
69
+ optional :group, :message, 2, "fbcrawl_colly.FacebookGroup"
70
+ optional :user, :message, 3, "fbcrawl_colly.FacebookUser"
71
+ optional :content, :string, 4
72
+ optional :comments, :message, 5, "fbcrawl_colly.CommentList"
73
+ optional :content_link, :string, 6
74
+ repeated :content_images, :message, 7, "fbcrawl_colly.FacebookImage"
75
+ optional :content_image, :message, 8, "fbcrawl_colly.FacebookImage"
76
+ optional :created_at, :int64, 9
77
+ optional :reaction_count, :int64, 10
78
+ optional :comment_count, :int64, 11
79
+ end
80
+ add_message "fbcrawl_colly.CommentList" do
81
+ repeated :comments, :message, 5, "fbcrawl_colly.FacebookComment"
82
+ optional :next_cursor, :string, 12
83
+ end
84
+ add_message "fbcrawl_colly.FacebookImage" do
85
+ optional :id, :int64, 1
86
+ optional :url, :string, 2
87
+ end
88
+ add_message "fbcrawl_colly.FacebookComment" do
89
+ optional :id, :int64, 1
90
+ optional :post, :message, 2, "fbcrawl_colly.FacebookPost"
91
+ optional :user, :message, 3, "fbcrawl_colly.FacebookUser"
92
+ optional :content, :string, 4
93
+ optional :created_at, :int64, 5
94
+ end
95
+ add_message "fbcrawl_colly.FacebookPostList" do
96
+ repeated :posts, :message, 1, "fbcrawl_colly.FacebookPost"
97
+ optional :next_cursor, :string, 2
98
+ end
99
+ add_message "fbcrawl_colly.FacebookImageList" do
100
+ repeated :images, :message, 1, "fbcrawl_colly.FacebookImage"
101
+ optional :next_cursor, :string, 2
102
+ end
103
+ end
104
+ end
105
+
106
+ module FbcrawlColly
107
+ Context = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.Context").msgclass
108
+ LoginRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.LoginRequest").msgclass
109
+ LoginResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.LoginResponse").msgclass
110
+ LoginWithCookiesRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.LoginWithCookiesRequest").msgclass
111
+ FetchMyGroupsRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FetchMyGroupsRequest").msgclass
112
+ FetchGroupInfoRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FetchGroupInfoRequest").msgclass
113
+ FetchUserInfoRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FetchUserInfoRequest").msgclass
114
+ FetchGroupFeedRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FetchGroupFeedRequest").msgclass
115
+ FetchPostRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FetchPostRequest").msgclass
116
+ FetchContentImagesRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FetchContentImagesRequest").msgclass
117
+ FetchImageUrlRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FetchImageUrlRequest").msgclass
118
+ FacebookGroupList = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FacebookGroupList").msgclass
119
+ FacebookGroup = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FacebookGroup").msgclass
120
+ FacebookUser = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FacebookUser").msgclass
121
+ FacebookPost = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FacebookPost").msgclass
122
+ CommentList = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.CommentList").msgclass
123
+ FacebookImage = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FacebookImage").msgclass
124
+ FacebookComment = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FacebookComment").msgclass
125
+ FacebookPostList = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FacebookPostList").msgclass
126
+ FacebookImageList = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("fbcrawl_colly.FacebookImageList").msgclass
127
+ end
@@ -0,0 +1,30 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # Source: fbcrawl.proto for package 'fbcrawl_colly'
3
+
4
+ require 'grpc'
5
+ require 'fbcrawl_pb'
6
+
7
+ module FbcrawlColly
8
+ module Grpc
9
+ class Service
10
+
11
+ include GRPC::GenericService
12
+
13
+ self.marshal_class_method = :encode
14
+ self.unmarshal_class_method = :decode
15
+ self.service_name = 'fbcrawl_colly.Grpc'
16
+
17
+ # Sends a greeting
18
+ rpc :Login, FbcrawlColly::LoginRequest, FbcrawlColly::LoginResponse
19
+ rpc :FetchMyGroups, FbcrawlColly::FetchMyGroupsRequest, FbcrawlColly::FacebookGroupList
20
+ rpc :FetchGroupInfo, FbcrawlColly::FetchGroupInfoRequest, FbcrawlColly::FacebookGroup
21
+ rpc :FetchUserInfo, FbcrawlColly::FetchUserInfoRequest, FbcrawlColly::FacebookUser
22
+ rpc :FetchGroupFeed, FbcrawlColly::FetchGroupFeedRequest, FbcrawlColly::FacebookPostList
23
+ rpc :FetchPost, FbcrawlColly::FetchPostRequest, FbcrawlColly::FacebookPost
24
+ rpc :FetchContentImages, FbcrawlColly::FetchContentImagesRequest, FbcrawlColly::FacebookImageList
25
+ rpc :FetchImageUrl, FbcrawlColly::FetchImageUrlRequest, FbcrawlColly::FacebookImage
26
+ end
27
+
28
+ Stub = Service.rpc_stub_class
29
+ end
30
+ end
data/main.go CHANGED
@@ -1,22 +1,17 @@
1
1
  package main
2
2
 
3
- /*
4
- #include <stdio.h>
5
- #include <stdlib.h>
6
-
7
- static void myprint(char* s) {
8
- printf("%s\n", s);
9
- }
10
-
11
-
12
- */
13
3
  import "C"
14
-
15
4
  import (
5
+ context "context"
16
6
  "flag"
17
- "github.com/golang/protobuf/proto"
18
- "qnetwork.net/fbcrawl/fbcolly"
19
- "unsafe"
7
+ "github.com/google/logger"
8
+ "google.golang.org/grpc"
9
+ "io/ioutil"
10
+ "log"
11
+ "net"
12
+ "os"
13
+ "qnetwork.net/fbcrawl/fbcrawl"
14
+ "qnetwork.net/fbcrawl/fbcrawl/pb"
20
15
  )
21
16
 
22
17
  const logPath = "parse.log"
@@ -27,91 +22,87 @@ var password = flag.String("password", "change_me", "facebook password")
27
22
  var otp = flag.String("otp", "123456", "facebook otp")
28
23
  var groupId = flag.String("groupId", "334294967318328", "facebook group id, default is 334294967318328")
29
24
 
30
- var allInstances = map[uintptr]*fbcolly.Fbcolly{}
31
-
32
- //export Init
33
- func Init() uintptr {
25
+ func getColly(context *pb.Context) *fbcolly.Fbcolly {
34
26
  instance := fbcolly.New()
35
- ptr := (uintptr)(unsafe.Pointer(instance))
36
- allInstances[ptr] = instance
37
- return ptr
27
+ if context != nil && len(context.Cookies) > 0 {
28
+ _ = instance.LoginWithCookies(context.Cookies)
29
+ }
30
+
31
+ return instance
38
32
  }
39
33
 
40
- //export FreeColly
41
- func FreeColly(pointer unsafe.Pointer) {
42
- delete(allInstances, uintptr(pointer))
34
+ // server is used to implement helloworld.GreeterServer.
35
+ type server struct {
36
+ pb.GrpcServer
43
37
  }
44
38
 
45
- //export Login
46
- func Login(pointer unsafe.Pointer, email *C.char, password *C.char) *C.char {
47
- p := (*fbcolly.Fbcolly)(pointer)
48
- cookies, err := p.Login(C.GoString(email), C.GoString(password), "")
39
+ func (s server) Login(ctx context.Context, request *pb.LoginRequest) (*pb.LoginResponse, error) {
40
+ p := getColly(nil)
41
+
42
+ cookies, err := p.Login(request.Email, request.Password, request.TotpSecret)
49
43
  if err == nil {
50
- return C.CString(cookies)
44
+ return &pb.LoginResponse{Cookies: cookies}, err
51
45
  }
52
- return nil
46
+ return nil, err
47
+ }
48
+
49
+ func (s server) FetchMyGroups(ctx context.Context, request *pb.FetchMyGroupsRequest) (*pb.FacebookGroupList, error) {
50
+ p := getColly(request.Context)
51
+ err, groupInfo := p.FetchMyGroups()
52
+ return groupInfo, err
53
53
  }
54
54
 
55
- //export LoginWithCookies
56
- func LoginWithCookies(pointer unsafe.Pointer, cookies *C.char) {
57
- p := (*fbcolly.Fbcolly)(pointer)
58
- p.LoginWithCookies(C.GoString(cookies))
55
+ func (s server) FetchGroupInfo(ctx context.Context, request *pb.FetchGroupInfoRequest) (*pb.FacebookGroup, error) {
56
+ p := getColly(request.Context)
57
+ err, groupInfo := p.FetchGroupInfo(request.GroupUsername)
58
+ return groupInfo, err
59
59
  }
60
60
 
61
- //export FetchGroupInfo
62
- func FetchGroupInfo(pointer unsafe.Pointer, groupId int64) unsafe.Pointer {
63
- p := (*fbcolly.Fbcolly)(pointer)
64
- _, groupInfo := p.FetchGroupInfo(groupId)
65
- marshaled, _ := proto.Marshal(groupInfo)
66
- return C.CBytes(append(marshaled, 0))
61
+ func (s server) FetchUserInfo(ctx context.Context, request *pb.FetchUserInfoRequest) (*pb.FacebookUser, error) {
62
+ p := getColly(request.Context)
63
+ err, userInfo := p.FetchUserInfo(request.Username)
64
+ return userInfo, err
67
65
  }
68
- //export FetchGroupFeed
69
- func FetchGroupFeed(pointer unsafe.Pointer, groupId int64) unsafe.Pointer {
70
- p := (*fbcolly.Fbcolly)(pointer)
71
- _, postsList := p.FetchGroupFeed(groupId)
72
- marshaledPostsList, _ := proto.Marshal(postsList)
73
- return C.CBytes(append(marshaledPostsList, 0))
66
+
67
+ func (s server) FetchGroupFeed(ctx context.Context, request *pb.FetchGroupFeedRequest) (*pb.FacebookPostList, error) {
68
+ p := getColly(request.Context)
69
+ err, postsList := p.FetchGroupFeed(request.GroupId, request.NextCursor)
70
+ return postsList, err
74
71
  }
75
72
 
76
- //export FetchPost
77
- func FetchPost(pointer unsafe.Pointer, groupId int64, postId int64) unsafe.Pointer {
78
- p := (*fbcolly.Fbcolly)(pointer)
79
- _, post := p.FetchPost(groupId, postId)
80
- marshaledPost, _ := proto.Marshal(post)
81
- return C.CBytes(append(marshaledPost, 0))
73
+ func (s server) FetchPost(ctx context.Context, request *pb.FetchPostRequest) (*pb.FacebookPost, error) {
74
+ p := getColly(request.Context)
75
+ err, post := p.FetchPost(request.GroupId, request.PostId, request.CommentNextCursor)
76
+ return post, err
82
77
  }
83
78
 
84
- //export FetchContentImages
85
- func FetchContentImages(pointer unsafe.Pointer, postId int64) unsafe.Pointer {
86
- p := (*fbcolly.Fbcolly)(pointer)
87
- _, imageList := p.FetchContentImages(postId)
88
- marshaled, _ := proto.Marshal(imageList)
89
- return C.CBytes(append(marshaled, 0))
79
+ func (s server) FetchContentImages(ctx context.Context, request *pb.FetchContentImagesRequest) (*pb.FacebookImageList, error) {
80
+ p := getColly(request.Context)
81
+ err, imageList := p.FetchContentImages(request.PostId, request.NextCursor)
82
+ return imageList, err
90
83
  }
91
84
 
92
- //export FetchImageUrl
93
- func FetchImageUrl(pointer unsafe.Pointer, imageId int64) unsafe.Pointer {
94
- p := (*fbcolly.Fbcolly)(pointer)
95
- _, image := p.FetchImageUrl(imageId)
96
- marshaled, _ := proto.Marshal(image)
97
- return C.CBytes(append(marshaled, 0))
85
+ func (s server) FetchImageUrl(ctx context.Context, request *pb.FetchImageUrlRequest) (*pb.FacebookImage, error) {
86
+ p := getColly(request.Context)
87
+ err, image := p.FetchImageUrl(request.ImageId)
88
+ return image, err
98
89
  }
99
90
 
100
91
  func main() {
101
- //r := regexp.MustCompile("/([\\d\\w.]+)").FindStringSubmatch()[1]
102
- //print(r.FindStringSubmatch("/liem.phamthanh.161?refid=18&__tn__=R")[1])
103
- //flag.Parse()
104
- //
105
- ////post := fbcrawl.FacebookPost{}
106
- ////bPost, err := proto.Marshal(&post)
107
- //
108
- //lf, err := os.OpenFile(logPath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0660)
109
- //if err != nil {
110
- // logger.Fatalf("Failed to open log file: %v", err)
111
- //}
112
- //defer lf.Close()
113
- //defer logger.Init("fb-colly", *verbose, false, lf).Close()
114
- //f := fbcolly.New()
115
- //err = f.Login(*email, *password, *otp)
116
- //f.FetchGroupFeed(*groupId)
92
+ logger.Init("fb-colly", true, false, ioutil.Discard)
93
+
94
+ port := os.Getenv("PORT")
95
+ if len(port) == 0 {
96
+ port = "50051"
97
+ }
98
+ lis, err := net.Listen("tcp", ":"+port)
99
+ logger.Info("Port listened at", port)
100
+ if err != nil {
101
+ log.Fatalf("failed to listen: %v", err)
102
+ }
103
+ s := grpc.NewServer()
104
+ pb.RegisterGrpcServer(s, &server{})
105
+ if err := s.Serve(lis); err != nil {
106
+ log.Fatalf("failed to serve: %v", err)
107
+ }
117
108
  }
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fbcrawl-colly
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Duy Le
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-15 00:00:00.000000000 Z
11
+ date: 2020-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: ffi
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: google-protobuf
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -39,13 +25,13 @@ dependencies:
39
25
  - !ruby/object:Gem::Version
40
26
  version: '0'
41
27
  - !ruby/object:Gem::Dependency
42
- name: rake-compiler
28
+ name: grpc
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - ">="
46
32
  - !ruby/object:Gem::Version
47
33
  version: '0'
48
- type: :development
34
+ type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
@@ -56,12 +42,12 @@ description: Crawl mbasic.facebook.com using GO Colly
56
42
  email:
57
43
  - duyleekun@gmail.com
58
44
  executables: []
59
- extensions:
60
- - ext/fbcrawl_colly/extconf.rb
45
+ extensions: []
61
46
  extra_rdoc_files: []
62
47
  files:
63
48
  - ".gitignore"
64
49
  - CODE_OF_CONDUCT.md
50
+ - Dockerfile
65
51
  - Gemfile
66
52
  - Gemfile.lock
67
53
  - LICENSE.txt
@@ -69,18 +55,19 @@ files:
69
55
  - Rakefile
70
56
  - bin/console
71
57
  - bin/setup
72
- - ext/fbcrawl_colly/.gitignore
73
- - ext/fbcrawl_colly/Makefile
74
- - ext/fbcrawl_colly/extconf.rb
75
- - fbcolly/fbcolly.go
76
58
  - fbcrawl-colly.gemspec
77
59
  - fbcrawl.proto
60
+ - fbcrawl/fbcolly.go
61
+ - fbcrawl/pb/fbcrawl.pb.go
62
+ - fbcrawl/pb/fbcrawl_grpc.pb.go
78
63
  - go.mod
79
64
  - go.sum
80
65
  - lib/fbcrawl-colly.rb
81
- - lib/fbcrawl_colly/colly.rb
82
- - lib/fbcrawl_colly/ffi.rb
66
+ - lib/fbcrawl_colly.rb
67
+ - lib/fbcrawl_colly/client.rb
83
68
  - lib/fbcrawl_colly/version.rb
69
+ - lib/pb/fbcrawl_pb.rb
70
+ - lib/pb/fbcrawl_services_pb.rb
84
71
  - main.go
85
72
  homepage: http://github.com/duyleekun/fbcrawl-colly
86
73
  licenses:
@@ -93,6 +80,7 @@ post_install_message:
93
80
  rdoc_options: []
94
81
  require_paths:
95
82
  - lib
83
+ - lib/pb
96
84
  required_ruby_version: !ruby/object:Gem::Requirement
97
85
  requirements:
98
86
  - - ">="