instagram-private-api 0.1.5.2
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 +7 -0
- data/.rspec +3 -0
- data/.travis.yml +5 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +6 -0
- data/Instagram-API.gemspec +36 -0
- data/LICENSE.txt +21 -0
- data/README.md +76 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/Instagram.rb +7 -0
- data/lib/Instagram/API/version.rb +5 -0
- data/lib/Instagram/account.rb +69 -0
- data/lib/Instagram/api.rb +66 -0
- data/lib/Instagram/constants.rb +20 -0
- data/lib/Instagram/device.rb +11852 -0
- data/lib/Instagram/feed.rb +18 -0
- data/lib/Instagram/user.rb +84 -0
- metadata +107 -0
@@ -0,0 +1,18 @@
|
|
1
|
+
module Instagram
|
2
|
+
module Feed
|
3
|
+
def self.user_media(user, data)
|
4
|
+
user_id = (!data[:id].nil? ? data[:id] : user.data[:id])
|
5
|
+
rank_token = Instagram::API.generate_rank_token user.session.scan(/ds_user_id=([\d]+);/)[0][0]
|
6
|
+
endpoint = "https://i.instagram.com/api/v1/feed/user/#{user_id}/"
|
7
|
+
param = "?rank_token=#{rank_token}" +
|
8
|
+
(!data[:max_id].nil? ? '&max_id=' + data[:max_id] : '')
|
9
|
+
result = Instagram::API.http(
|
10
|
+
url: endpoint + param,
|
11
|
+
method: 'GET',
|
12
|
+
user: user
|
13
|
+
)
|
14
|
+
|
15
|
+
JSON.parse result.body
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'digest/md5'
|
2
|
+
require 'Instagram/Device'
|
3
|
+
require 'Instagram/CONSTANTS'
|
4
|
+
|
5
|
+
module Instagram
|
6
|
+
class User
|
7
|
+
attr_reader :username
|
8
|
+
attr_reader :password
|
9
|
+
attr_reader :language
|
10
|
+
attr_reader :data
|
11
|
+
attr_writer :data
|
12
|
+
attr_reader :session
|
13
|
+
attr_writer :session
|
14
|
+
|
15
|
+
def initialize(username, password, session = nil, data = nil)
|
16
|
+
@username = username
|
17
|
+
@password = password
|
18
|
+
@language = 'en_US'
|
19
|
+
@session = session
|
20
|
+
@data = data
|
21
|
+
end
|
22
|
+
|
23
|
+
def search_for_user (username)
|
24
|
+
Instagram::Account.search_for_user(self, username)
|
25
|
+
end
|
26
|
+
|
27
|
+
def user_media(data = {})
|
28
|
+
Instagram::Feed.user_media(self, data)
|
29
|
+
end
|
30
|
+
|
31
|
+
def md5
|
32
|
+
Digest::MD5.hexdigest @username
|
33
|
+
end
|
34
|
+
|
35
|
+
def md5int
|
36
|
+
(md5.to_i(32) / 10e32).round
|
37
|
+
end
|
38
|
+
|
39
|
+
def api
|
40
|
+
(18 + (md5int % 5)).to_s
|
41
|
+
end
|
42
|
+
|
43
|
+
# @return [string]
|
44
|
+
def release
|
45
|
+
%w[4.0.4 4.3.1 4.4.4 5.1.1 6.0.1][md5int % 5]
|
46
|
+
end
|
47
|
+
|
48
|
+
def dpi
|
49
|
+
%w[801 577 576 538 515 424 401 373][md5int % 8]
|
50
|
+
end
|
51
|
+
|
52
|
+
def resolution
|
53
|
+
%w[3840x2160 1440x2560 2560x1440 1440x2560
|
54
|
+
2560x1440 1080x1920 1080x1920 1080x1920][md5int % 8]
|
55
|
+
end
|
56
|
+
|
57
|
+
def info
|
58
|
+
line = Device.devices[md5int % Device.devices.count]
|
59
|
+
{
|
60
|
+
manufacturer: line[0],
|
61
|
+
device: line[1],
|
62
|
+
model: line[2]
|
63
|
+
}
|
64
|
+
end
|
65
|
+
|
66
|
+
def useragent_hash
|
67
|
+
agent = [api + '/' + release, dpi + 'dpi',
|
68
|
+
resolution, info[:manufacturer], info[:model], info[:device], @language]
|
69
|
+
|
70
|
+
{
|
71
|
+
agent: agent.join('; '),
|
72
|
+
version: CONSTANTS::PRIVATE_KEY[:APP_VERSION]
|
73
|
+
}
|
74
|
+
end
|
75
|
+
|
76
|
+
def useragent
|
77
|
+
format('Instagram %s Android(%s)', useragent_hash[:version], useragent_hash[:agent].rstrip)
|
78
|
+
end
|
79
|
+
|
80
|
+
def device_id
|
81
|
+
'android-' + md5[0..15]
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
metadata
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: instagram-private-api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.5.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- vicoerv
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-11-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.16'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.16'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
description: Instagram private api, implemented from huttarichard/instagram-private-api
|
56
|
+
as best NODE-JS Instagram api
|
57
|
+
email:
|
58
|
+
- vicoerv@gmail.com
|
59
|
+
executables: []
|
60
|
+
extensions: []
|
61
|
+
extra_rdoc_files: []
|
62
|
+
files:
|
63
|
+
- ".rspec"
|
64
|
+
- ".travis.yml"
|
65
|
+
- CODE_OF_CONDUCT.md
|
66
|
+
- Gemfile
|
67
|
+
- Instagram-API.gemspec
|
68
|
+
- LICENSE.txt
|
69
|
+
- README.md
|
70
|
+
- Rakefile
|
71
|
+
- bin/console
|
72
|
+
- bin/setup
|
73
|
+
- lib/Instagram.rb
|
74
|
+
- lib/Instagram/API/version.rb
|
75
|
+
- lib/Instagram/account.rb
|
76
|
+
- lib/Instagram/api.rb
|
77
|
+
- lib/Instagram/constants.rb
|
78
|
+
- lib/Instagram/device.rb
|
79
|
+
- lib/Instagram/feed.rb
|
80
|
+
- lib/Instagram/user.rb
|
81
|
+
homepage: http://www.vicoervanda.com
|
82
|
+
licenses:
|
83
|
+
- MIT
|
84
|
+
metadata:
|
85
|
+
allowed_push_host: https://rubygems.org
|
86
|
+
post_install_message:
|
87
|
+
rdoc_options: []
|
88
|
+
require_paths:
|
89
|
+
- lib
|
90
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
100
|
+
requirements: []
|
101
|
+
rubyforge_project:
|
102
|
+
rubygems_version: 2.5.2
|
103
|
+
signing_key:
|
104
|
+
specification_version: 4
|
105
|
+
summary: Instagram private api, implemented from huttarichard/instagram-private-api
|
106
|
+
as best NODE-JS Instagram api
|
107
|
+
test_files: []
|