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.
@@ -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: []