wikipedia-client 1.9.1 → 1.14.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +27 -0
- data/.gitignore +1 -0
- data/Gemfile +10 -0
- data/README.md +171 -0
- data/lib/wikipedia.rb +0 -2
- data/lib/wikipedia/client.rb +26 -23
- data/lib/wikipedia/page.rb +4 -0
- data/lib/wikipedia/url.rb +4 -1
- data/lib/wikipedia/version.rb +1 -1
- data/spec/fixtures/Innopolis.json +1 -0
- data/spec/lib/client_spec.rb +25 -17
- data/wikipedia-client.gemspec +2 -21
- metadata +16 -92
- data/.travis.yml +0 -8
- data/Gemfile.lock +0 -93
- data/README.textile +0 -163
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c57749d6568f7bb54afd4bd4e76046f0929e4a9d65a41f361fdf173acc5b8eb7
|
4
|
+
data.tar.gz: 4847192d06827db273c03a24729045afa385503992bb054ea1473340b43bb85b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 298686f89d1f5fe977efb1764844dbeb8432cd4bcf3f1c7143e7597c8d5a316d0b7951a6ad603f4804bcab1f2101e41cd1d90ae86bb261c962c345d528e609b7
|
7
|
+
data.tar.gz: eb81094561f2f6b9a1d72a97723014018775fdbf165fe123d7f258b71eea1a2e5f2dc5b27f50fb474966d25e4436e90c7d86b7cc022db6d479bf5daa524285e0
|
@@ -0,0 +1,27 @@
|
|
1
|
+
name: Test
|
2
|
+
on:
|
3
|
+
pull_request:
|
4
|
+
push: { branches: master }
|
5
|
+
|
6
|
+
jobs:
|
7
|
+
test:
|
8
|
+
name: Ruby ${{ matrix.ruby }}
|
9
|
+
runs-on: ubuntu-latest
|
10
|
+
strategy:
|
11
|
+
matrix: { ruby: ['2.5', '2.6', '2.7', '3.0'] }
|
12
|
+
|
13
|
+
steps:
|
14
|
+
- name: Checkout code
|
15
|
+
uses: actions/checkout@v2
|
16
|
+
|
17
|
+
- name: Setup Ruby
|
18
|
+
uses: ruby/setup-ruby@v1
|
19
|
+
with:
|
20
|
+
ruby-version: '${{ matrix.ruby }}'
|
21
|
+
bundler-cache: true
|
22
|
+
|
23
|
+
- name: Run tests
|
24
|
+
run: bundle exec rspec
|
25
|
+
|
26
|
+
- name: Run rubocop
|
27
|
+
run: bundle exec rubocop
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/README.md
ADDED
@@ -0,0 +1,171 @@
|
|
1
|
+
# Wikipedia API CLient
|
2
|
+
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/wikipedia-client.svg)](https://badge.fury.io/rb/wikipedia-client)
|
4
|
+
[![Build Status](https://github.com/kenpratt/wikipedia-client/workflows/Test/badge.svg)](https://github.com/kenpratt/wikipedia-client/actions?query=workflow%3ATest)
|
5
|
+
|
6
|
+
|
7
|
+
Allows you to get wikipedia content through their API. This uses the
|
8
|
+
alpha API, not the deprecated query.php API type.
|
9
|
+
|
10
|
+
Wikipedia API reference: <http://en.wikipedia.org/w/api.php>
|
11
|
+
|
12
|
+
Adopted from: <http://code.google.com/p/wikipedia-client/>
|
13
|
+
|
14
|
+
## Installation
|
15
|
+
|
16
|
+
```
|
17
|
+
gem install wikipedia-client
|
18
|
+
```
|
19
|
+
|
20
|
+
## Usage
|
21
|
+
|
22
|
+
```ruby
|
23
|
+
require 'wikipedia'
|
24
|
+
page = Wikipedia.find( 'Getting Things Done' )
|
25
|
+
#=> #<Wikipedia:Page>
|
26
|
+
|
27
|
+
page.title
|
28
|
+
#=> 'Getting Things Done'
|
29
|
+
|
30
|
+
page.fullurl
|
31
|
+
#=> 'http://en.wikipedia.org/wiki/Getting_Things_Done'
|
32
|
+
|
33
|
+
page.text
|
34
|
+
#=> 'Getting Things Done is a time-management method...'
|
35
|
+
|
36
|
+
page.content
|
37
|
+
#=> all the wiki markup appears here...
|
38
|
+
|
39
|
+
page.summary
|
40
|
+
#=> only the wiki summary appears here...
|
41
|
+
|
42
|
+
page.categories
|
43
|
+
#=> [..., "Category:Self-help books", ...]
|
44
|
+
|
45
|
+
page.links
|
46
|
+
#=> [..., "Business", "Cult following", ...]
|
47
|
+
|
48
|
+
page.extlinks
|
49
|
+
# => [..., "http://www.example.com/", ...]
|
50
|
+
|
51
|
+
page.images
|
52
|
+
#=> ["File:Getting Things Done.jpg", ...]
|
53
|
+
|
54
|
+
page.image_urls
|
55
|
+
#=> ["http://upload.wikimedia.org/wikipedia/en/e/e1/Getting_Things_Done.jpg"]
|
56
|
+
|
57
|
+
page.image_thumburls
|
58
|
+
#=> ["https://upload.wikimedia.org/wikipedia/en/thumb/e/e1/Getting_Things_Done.jpg/200px-Getting_Things_Done.jpg"]
|
59
|
+
|
60
|
+
# or with custom width argument:
|
61
|
+
page.image_thumburls(100)
|
62
|
+
#=> ["https://upload.wikimedia.org/wikipedia/en/thumb/e/e1/Getting_Things_Done.jpg/100px-Getting_Things_Done.jpg"]
|
63
|
+
|
64
|
+
page.image_descriptionurls
|
65
|
+
#=> ["http://en.wikipedia.org/wiki/File:Getting_Things_Done.jpg"]
|
66
|
+
|
67
|
+
page.main_image_url
|
68
|
+
#=> "https://upload.wikimedia.org/wikipedia/en/e/e1/Getting_Things_Done.jpg"
|
69
|
+
|
70
|
+
page.coordinates
|
71
|
+
#=> [48.853, 2.3498, "", "earth"]
|
72
|
+
|
73
|
+
page.templates
|
74
|
+
#=> [..., "Template:About", ...]
|
75
|
+
|
76
|
+
page.langlinks
|
77
|
+
#=> {..., "de"=>"Getting Things Done", "eo"=>"Igi aferojn finitaj", "zh"=>"尽管去做", ...}
|
78
|
+
```
|
79
|
+
|
80
|
+
## Configuration
|
81
|
+
|
82
|
+
This is by default configured like this:
|
83
|
+
|
84
|
+
```ruby
|
85
|
+
Wikipedia.configure {
|
86
|
+
domain 'en.wikipedia.org'
|
87
|
+
path 'w/api.php'
|
88
|
+
}
|
89
|
+
```
|
90
|
+
|
91
|
+
## Advanced
|
92
|
+
|
93
|
+
See the API spec at <http://en.wikipedia.org/w/api.php>.
|
94
|
+
|
95
|
+
If you need data that is not already present, you can override parameters.
|
96
|
+
|
97
|
+
For example, to retrieve only the page info:
|
98
|
+
|
99
|
+
```ruby
|
100
|
+
page = Wikipedia.find( 'Getting Things Done', :prop => "info" )
|
101
|
+
|
102
|
+
page.title
|
103
|
+
#=> "Getting Things Done"
|
104
|
+
|
105
|
+
page.raw_data
|
106
|
+
#=> {"query"=>{"pages"=>{"959928"=>{"pageid"=>959928, "ns"=>0,
|
107
|
+
"title"=>"Getting Things Done", "touched"=>"2010-03-10T00:04:09Z",
|
108
|
+
"lastrevid"=>348481810, "counter"=>0, "length"=>7891}}}}
|
109
|
+
```
|
110
|
+
|
111
|
+
## Contributing
|
112
|
+
|
113
|
+
### Getting the code, and running the tests
|
114
|
+
|
115
|
+
```
|
116
|
+
git clone git@github.com:kenpratt/wikipedia-client.git
|
117
|
+
cd wikipedia-client
|
118
|
+
bundle install
|
119
|
+
bundle exec spec
|
120
|
+
```
|
121
|
+
|
122
|
+
### Pushing a new release of the Gem
|
123
|
+
|
124
|
+
1. Edit `lib/wikipedia/version.rb`, changing `VERSION`.
|
125
|
+
2. Test that the current branch will work as a gem, by testing in an external directory:
|
126
|
+
1. Make a test directory.
|
127
|
+
2. Add a `Gemfile` with:
|
128
|
+
```
|
129
|
+
source 'https://rubygems.org'
|
130
|
+
|
131
|
+
gem 'wikipedia-client', :path => '/path/to/local/wikipedia-client'
|
132
|
+
```
|
133
|
+
|
134
|
+
3. And a `test.rb` file with:
|
135
|
+
```
|
136
|
+
require 'wikipedia'
|
137
|
+
|
138
|
+
page = Wikipedia.find('Ruby')
|
139
|
+
puts page.title
|
140
|
+
```
|
141
|
+
|
142
|
+
4. And then run `bundle install && bundle exec ruby test.rb`
|
143
|
+
3. Build the gem: `bundle exec gem build wikipedia-client.gemspec`.
|
144
|
+
4. Commit the changes: `git commit -a -m 'Version bump to 1.4.0' && git tag v1.4.0 && git push && git push --tag`
|
145
|
+
5. Publish the result to RubyGems: `bundle exec gem push wikipedia-client-1.4.0.gem`.
|
146
|
+
6. Test the released gem in an external directory:
|
147
|
+
1. Make a test directory.
|
148
|
+
2. Add a `Gemfile` with:
|
149
|
+
```
|
150
|
+
source 'https://rubygems.org'
|
151
|
+
|
152
|
+
gem 'wikipedia-client'
|
153
|
+
```
|
154
|
+
|
155
|
+
3. And a `test.rb` file with:
|
156
|
+
```
|
157
|
+
require 'wikipedia'
|
158
|
+
|
159
|
+
page = Wikipedia.find('Ruby')
|
160
|
+
puts page.title
|
161
|
+
```
|
162
|
+
|
163
|
+
4. And then run `bundle install && bundle exec ruby test.rb`
|
164
|
+
|
165
|
+
## Thanks!
|
166
|
+
|
167
|
+
Copyright (c) 2008 Cyril David, released under the MIT license
|
168
|
+
|
169
|
+
Adopted by Ken Pratt (ken@kenpratt.net) in 2010/03
|
170
|
+
|
171
|
+
Thanks to all the [Contributors](https://github.com/kenpratt/wikipedia-client/graphs/contributors).
|
data/lib/wikipedia.rb
CHANGED
data/lib/wikipedia/client.rb
CHANGED
@@ -1,7 +1,13 @@
|
|
1
|
+
require 'addressable'
|
2
|
+
require 'cgi'
|
3
|
+
require 'open-uri'
|
4
|
+
require 'set'
|
5
|
+
|
1
6
|
module Wikipedia
|
2
7
|
class Client
|
3
8
|
# see http://en.wikipedia.org/w/api.php
|
4
|
-
|
9
|
+
BASE_URL_TEMPLATE = '%{protocol}://%{domain}/%{path}?action=%{action}&format=json'.freeze
|
10
|
+
BASE_URL_OPTIONS = Set.new([:protocol, :domain, :path, :action])
|
5
11
|
|
6
12
|
attr_accessor :follow_redirects
|
7
13
|
|
@@ -34,11 +40,12 @@ module Wikipedia
|
|
34
40
|
def request_page( title, options = {} )
|
35
41
|
request( {
|
36
42
|
action: 'query',
|
37
|
-
prop: %w[info revisions links extlinks images categories coordinates templates extracts pageimages],
|
43
|
+
prop: %w[info revisions links extlinks images categories coordinates templates extracts pageimages langlinks],
|
38
44
|
rvprop: 'content',
|
39
45
|
inprop: 'url',
|
40
46
|
pithumbsize: 200,
|
41
47
|
explaintext: '',
|
48
|
+
lllimit: 500,
|
42
49
|
titles: title
|
43
50
|
}.merge( options ) )
|
44
51
|
end
|
@@ -65,7 +72,6 @@ module Wikipedia
|
|
65
72
|
end
|
66
73
|
|
67
74
|
def request( options )
|
68
|
-
require 'open-uri'
|
69
75
|
URI.parse( url_for( options ) ).read( 'User-Agent' => Configuration[:user_agent] )
|
70
76
|
end
|
71
77
|
|
@@ -79,36 +85,33 @@ module Wikipedia
|
|
79
85
|
}
|
80
86
|
end
|
81
87
|
|
82
|
-
def url_for(
|
83
|
-
url = BASE_URL.dup
|
88
|
+
def url_for(options)
|
84
89
|
options = configuration_options.merge( options )
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
end
|
93
|
-
url
|
90
|
+
|
91
|
+
url_options, query_options = split_hash(options, BASE_URL_OPTIONS)
|
92
|
+
normalized_query_options = query_options.map { |k, v| [k, normalize_value(v)] }
|
93
|
+
|
94
|
+
base_url = BASE_URL_TEMPLATE % url_options
|
95
|
+
query_string = Addressable::URI.form_encode(normalized_query_options)
|
96
|
+
base_url + '&' + query_string
|
94
97
|
end
|
95
98
|
|
96
|
-
def
|
99
|
+
def normalize_value( val )
|
97
100
|
case val
|
98
101
|
when Array
|
99
|
-
|
102
|
+
val.flatten.join( '|' )
|
100
103
|
else
|
101
|
-
|
104
|
+
val
|
102
105
|
end
|
103
106
|
end
|
104
107
|
|
105
|
-
def
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
val
|
108
|
+
def split_hash(hash, keys)
|
109
|
+
h1 = {}
|
110
|
+
h2 = {}
|
111
|
+
hash.each do |k, v|
|
112
|
+
(keys.include?(k) ? h1 : h2).store(k, v)
|
111
113
|
end
|
114
|
+
[h1, h2]
|
112
115
|
end
|
113
116
|
end
|
114
117
|
end
|
data/lib/wikipedia/page.rb
CHANGED
@@ -60,6 +60,10 @@ module Wikipedia
|
|
60
60
|
page['extlinks'].map { |c| c['*'] } if page['extlinks']
|
61
61
|
end
|
62
62
|
|
63
|
+
def langlinks
|
64
|
+
Hash[page['langlinks'].collect { |c| [c['lang'], c['*']] }] if page['langlinks']
|
65
|
+
end
|
66
|
+
|
63
67
|
def images
|
64
68
|
page['images'].map { |c| c['title'] } if page['images']
|
65
69
|
end
|
data/lib/wikipedia/url.rb
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
require 'uri'
|
2
|
+
require 'addressable'
|
3
|
+
|
1
4
|
module Wikipedia
|
2
5
|
class Url
|
3
6
|
def initialize(wiki_url)
|
@@ -8,7 +11,7 @@ module Wikipedia
|
|
8
11
|
return @title if @title
|
9
12
|
|
10
13
|
uri = URI.parse( @wiki_url )
|
11
|
-
@title = URI.
|
14
|
+
@title = Addressable::URI.unencode( uri.path.sub(/\/wiki\//, '') )
|
12
15
|
end
|
13
16
|
end
|
14
17
|
end
|
data/lib/wikipedia/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
{"continue":{"plcontinue":"46867293|0|Alkeyevsky_District","tlcontinue":"46867293|10|Infobox_Russian_town","continue":"||info|revisions|extlinks|images|categories|coordinates|extracts|pageimages|langlinks"},"warnings":{"extracts":{"*":"\"exlimit\" was too large for a whole article extracts request, lowered to 1."}},"query":{"pages":{"46867293":{"pageid":46867293,"ns":0,"title":"Innopolis","contentmodel":"wikitext","pagelanguage":"en","pagelanguagehtmlcode":"en","pagelanguagedir":"ltr","touched":"2018-03-17T20:09:26Z","lastrevid":826758180,"length":7900,"fullurl":"https://en.wikipedia.org/wiki/Innopolis","editurl":"https://en.wikipedia.org/w/index.php?title=Innopolis&action=edit","canonicalurl":"https://en.wikipedia.org/wiki/Innopolis","revisions":[{"contentformat":"text/x-wiki","contentmodel":"wikitext","*":"{{Distinguish|Innopoli}}\n\n{{Infobox Russian town\n|en_name=Innopolis\n|ru_name=\u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441\n|loc_name1=\u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441\n|loc_lang1=Tatar\n|image_skyline=\u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441. \u0422\u0435\u0445\u043d\u043e\u043f\u0430\u0440\u043a \u0438\u043c. \u0410.\u0421. \u041f\u043e\u043f\u043e\u0432\u0430.JPG\n|image_caption=A.S. Popov [[science park|technology park]] in Innopolis\n|coordinates = {{coord|55|44|N|48|44|E|display=inline,title}}\n|map_label_position=right\n|image_coa=\n|coa_caption=\n|image_flag=\n|flag_caption=\n|anthem=\n|anthem_ref=\n|holiday=\n|holiday_ref=\n|federal_subject=[[Republic of Tatarstan]]\n|federal_subject_ref=<ref name=\"RTatarstan_admlist\" />\n|adm_data_as_of=March 2015\n|adm_district_jur=[[Verkhneuslonsky District]]\n|adm_district_jur_ref=<ref name=\"RTatarstan_admlist\" />\n|inhabloc_cat=Town\n|inhabloc_cat_ref=<ref name=\"RTatarstan_admlist\" />\n|inhabloc_type=\n|inhabloc_type_ref=\n|mun_data_as_of=December 2014\n|mun_district_jur=Verkhneuslonsky Municipal District\n|mun_district_jur_ref=<ref name=\"RTatarstanVerkhneuslonskyD_mun\" />\n|urban_settlement_jur=Innopolis Urban Settlement\n|urban_settlement_jur_ref=<ref name=\"RTatarstanVerkhneuslonskyD_mun\" />\n|mun_admctr_of=Innopolis Urban Settlement\n|mun_admctr_of_ref=<ref name=\"RTatarstanVerkhneuslonskyD_mun\" />\n|leader_title=\n|leader_title_ref=\n|leader_name=\n|leader_name_ref=\n|representative_body=\n|representative_body_ref=\n|area_of_what=\n|area_as_of=\n|area_km2=\n|area_km2_ref=\n<!--\n|pop_2010census=did not exist in 2010\n|pop_2010census_ref=-->\n|pop_density=\n|pop_density_as_of=\n|pop_density_ref=\n|pop_latest=96\n|pop_latest_date=2016\n|pop_latest_ref=<ref name=\"2016Est\" />\n|established_date=December 24, 2012\n|established_title=\n|established_date_ref=<ref name=\"Established\" />\n|current_cat_date=December 16, 2014\n|current_cat_date_ref=<ref name=\"TownStatus\" />\n|postal_codes=420500\n|dialing_codes=\n|dialing_codes_ref=\n|website=http://www.innopolis.ru\n|website_ref=\n|date=June 2015\n}}\n'''Innopolis''' ({{lang-ru|\u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441}}; {{lang-tt|\u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441|Innopolis}}) is a [[types of inhabited localities in Russia|town]] in [[Verkhneuslonsky District]] of the [[Republic of Tatarstan]], [[Russia]], a [[satellite town|satellite]] of [[Kazan]], the [[capital city|capital]] of the republic.\n\nThis is the smallest town in Russia<ref>http://www.photokzn.ru/news/0/8880-innopolis</ref> with 96 inhabitants according to the 2016 estimate.<ref name=\"2016Est\">Republic of Tatarstan Territorial Branch of the [[Russian Federal State Statistics Service|Federal State Statistics Service]]. [http://tatstat.gks.ru/wps/wcm/connect/rosstat_ts/tatstat/resources/4f3274804c0d84f9ab87abc621b350d8/%D0%9C%D0%9E%D1%87%D0%B8%D1%81%D0%BB2016.pdf \u0427\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u0435\u043b\u0435\u043d\u0438\u044f \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u043e 2016 \u0433.] {{ru icon}}</ref>\n\n==History==\n[[File:Medvedev, Nikiforov, Minnihanov in Kazan Innopolis (groundbreaking ceremony).jpeg|thumb|left|Inauguration of the Innopolis' foundation, June 2012. Left to right: [[Rustam Minnikhanov]], the [[President of the Republic of Tatarstan]]; [[Dmitry Medvedev]], the [[Prime Minister of Russia]]; [[Nikolay Nikiforov]], [[Ministry of Communications and Mass Media (Russia)|Minister of Communications and Mass Media]]]]\n\n[[File:Residental area.jpg|thumb|left|Residential area]]\n[[File:Innopolis University.jpg|thumb|left|The main building of the University of Innopolis]]\n\nInnopolis was established on December 24, 2012<ref name=\"Established\">Resolution #2622-IV-GS</ref> as a technology park. Town status was granted to it on December 16, 2014.<ref name=\"TownStatus\">Law #115-ZRT</ref>\n\n==Administrative and municipal status==\nWithin the [[subdivisions of Russia#Administrative divisions|framework of administrative divisions]], the [[types of inhabited localities in Russia|town]] of Innopolis is subordinated to [[Verkhneuslonsky District]].<ref name=\"RTatarstan_admlist\">Order #01-02/9</ref> As a [[subdivisions of Russia#Municipal divisions|municipal division]], Innopolis is incorporated within Verkhneuslonsky Municipal District as '''Innopolis Urban Settlement'''.<ref name=\"RTatarstanVerkhneuslonskyD_mun\">Law #19-ZRT</ref>\n\n\n==Urban Infrastructure==\nThe basis of the housing stock of Innopolis is 4 blocks of multi-storey apartment houses - 16 houses for 840 apartments - built by the State Housing Fund under the President of the Republic of Tatarstan and intended for leasing to residents of Innopolis and students.\n\nAs of the end of 2016, there was a kindergarten, a school, an IT lyceum, a sports and medical center, post offices, client offices of AK Bars and Sberbank, a beauty salon, a coffee shop and a supermarket in Innopolis.\n\n==References==\n===Notes===\n{{Reflist}}\n\n===Sources===\n*{{RussiaAdmMunRef|ta|adm|list}}\n*{{RussiaAdmMunRef|ta|mun|list|verkhneuslonsky}}\n*{{Cite Russian law\n|ru_entity=\u0413\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0421\u043e\u0432\u0435\u0442 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\n|ru_type=\u041f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\n|ru_number=2622-IV-\u0413\u0421\n|ru_date=24 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2012 \u0433.\n|ru_title=\u041e\u0431 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0430\u0441\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 \u2014 \u043f\u043e\u0441\u0451\u043b\u043a\u0430 \u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441 \u043d\u0430 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0438 \u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\n|ru_effective_date=\n|ru_published_in=\"\u0412\u0435\u0434\u043e\u043c\u043e\u0441\u0442\u0438 \u0413\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0421\u043e\u0432\u0435\u0442\u0430 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\u0430\", \u211612 (III \u0447\u0430\u0441\u0442\u044c), \u0441\u0442. 1926\n|ru_published_date=2012\n|ru_url=\n|en_entity=[[State Council of the Republic of Tatarstan]]\n|en_type=Resolution\n|en_number=2622-IV-GS\n|en_date=December 24, 2012\n|en_title=On Establishing an Inhabited Locality\u2014the Settlement of Innopolis\u2014on the Territory of Verkhneuslonsky District of the Republic of Tatarstan\n|en_effective_date=\n|en_url=\n}}\n*{{Cite Russian law\n|ru_entity=\u0413\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0421\u043e\u0432\u0435\u0442 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\n|ru_type=\u0417\u0430\u043a\u043e\u043d\n|ru_number=115-\u0417\u0420\u0422\n|ru_date=13 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2014 \u0433.\n|ru_title=\u041e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u0441\u0451\u043b\u043a\u0430 \u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441 \u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0433\u0440\u0430\u043d\u0438\u0446 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0412\u0432\u0435\u0434\u0435\u043d\u0441\u043a\u043e-\u0421\u043b\u043e\u0431\u043e\u0434\u0441\u043a\u043e\u0433\u043e \u0441\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0441\u0435\u043b\u0435\u043d\u0438\u044f \u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u043e\u0433\u043e \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0417\u0430\u043a\u043e\u043d \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d \"\u041e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0433\u0440\u0430\u043d\u0438\u0446 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0439 \u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \"\u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u0438\u0439 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0439\u043e\u043d\" \u0438 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0432 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0435\"\n|ru_effective_date=\u0441\u043e \u0434\u043d\u044f \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0438\u044f\n|ru_published_in=\"\u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\", \u2116183\n|ru_published_date=16 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2014 \u0433\n|ru_url=\n|en_entity=[[State Council of the Republic of Tatarstan]]\n|en_type=Law\n|en_number=115-ZRT\n|en_date=December 13, 2014\n|en_title=On the Transformation of the Settlement of Innopolis in Verkhneuslonsky District, on Changing the Borders of Several Municipal Formations, and on Transforming Vvedensko-Slobodskoye Rural Settlement in Verkhneuslonsky Municipal District, as well as Amending the Law of the Republic of Tatarstan \"On Establishing the Borders of the Territories and the Status of the Municipal Formation of \"Verkhneuslonsky Municipal District\" and of the Municipal Formations It Comprises\"\n|en_effective_date=the day of the official publication\n|en_url=\n}}\n\n{{Republic of Tatarstan}}\n{{Use mdy dates|date=June 2015}}\n\n[[Category:Cities and towns in Tatarstan]]\n[[Category:Populated places established in 2012]]\n[[Category:Naukograds]]\n[[Category:Information technology places]]"}],"links":[{"ns":0,"title":"Administrative centre"},{"ns":0,"title":"Administrative divisions of the Republic of Tatarstan"},{"ns":0,"title":"Agryz"},{"ns":0,"title":"Agryzsky District"},{"ns":0,"title":"Aksubayevo"},{"ns":0,"title":"Aksubayevsky District"},{"ns":0,"title":"Aktanyshsky District"},{"ns":0,"title":"Aktyubinsky, Republic of Tatarstan"},{"ns":0,"title":"Alexeyevskoye, Republic of Tatarstan"},{"ns":0,"title":"Alexeyevsky District, Republic of Tatarstan"}],"extlinks":[{"*":"//tools.wmflabs.org/geohack/geohack.php?pagename=Innopolis¶ms=55_44_N_48_44_E_region:RU-TA_type:city"},{"*":"http://pravo.tatarstan.ru"},{"*":"http://tatstat.gks.ru/wps/wcm/connect/rosstat_ts/tatstat/resources/4f3274804c0d84f9ab87abc621b350d8/%D0%9C%D0%9E%D1%87%D0%B8%D1%81%D0%BB2016.pdf"},{"*":"http://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http://www.consultant.ru/cons/cgi/online.cgi?req=doc&base=LAW&n=201180"},{"*":"http://vinfo.russianpost.ru/servlet/department"},{"*":"http://www.consultant.ru/cons/cgi/online.cgi?req=doc&base=LAW&n=201180"},{"*":"http://www.innopolis.ru"},{"*":"http://www.photokzn.ru/news/0/8880-innopolis"}],"images":[{"ns":6,"title":"File:Coat of Arms of Tatarstan.svg"},{"ns":6,"title":"File:Flag of Tatarstan.svg"},{"ns":6,"title":"File:Innopolis University.jpg"},{"ns":6,"title":"File:Map of Russia - Republic of Tatarstan (2008-03).svg"},{"ns":6,"title":"File:Medvedev, Nikiforov, Minnihanov in Kazan Innopolis (groundbreaking ceremony).jpeg"},{"ns":6,"title":"File:Outline Map of Tatarstan.svg"},{"ns":6,"title":"File:Red pog.svg"},{"ns":6,"title":"File:Residental area.jpg"},{"ns":6,"title":"File:\u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441. \u0422\u0435\u0445\u043d\u043e\u043f\u0430\u0440\u043a \u0438\u043c. \u0410.\u0421. \u041f\u043e\u043f\u043e\u0432\u0430.JPG"}],"categories":[{"ns":14,"title":"Category:Articles containing Russian-language text"},{"ns":14,"title":"Category:Articles containing Tatar-language text"},{"ns":14,"title":"Category:Articles with Russian-language external links"},{"ns":14,"title":"Category:Cities and towns in Tatarstan"},{"ns":14,"title":"Category:Coordinates on Wikidata"},{"ns":14,"title":"Category:Information technology places"},{"ns":14,"title":"Category:Naukograds"},{"ns":14,"title":"Category:Populated places established in 2012"},{"ns":14,"title":"Category:Use mdy dates from June 2015"}],"coordinates":[{"lat":55.73333333,"lon":48.73333333,"primary":"","globe":"earth"}],"templates":[{"ns":10,"title":"Template:Category handler"},{"ns":10,"title":"Template:Cite Russian law"},{"ns":10,"title":"Template:Coord"},{"ns":10,"title":"Template:DMCA"},{"ns":10,"title":"Template:Dated maintenance category"},{"ns":10,"title":"Template:Distinguish"},{"ns":10,"title":"Template:FULLROOTPAGENAME"},{"ns":10,"title":"Template:ISO 639 name ru"},{"ns":10,"title":"Template:Infobox"},{"ns":10,"title":"Template:Infobox Russian inhabited locality"}],"extract":"Innopolis (Russian: \u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441; Tatar: Cyrillic \u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441, Latin Innopolis) is a town in Verkhneuslonsky District of the Republic of Tatarstan, Russia, a satellite of Kazan, the capital of the republic.\nThis is the smallest town in Russia with 96 inhabitants according to the 2016 estimate.\n\n\n== History ==\n\nInnopolis was established on December 24, 2012 as a technology park. Town status was granted to it on December 16, 2014.\n\n\n== Administrative and municipal status ==\nWithin the framework of administrative divisions, the town of Innopolis is subordinated to Verkhneuslonsky District. As a municipal division, Innopolis is incorporated within Verkhneuslonsky Municipal District as Innopolis Urban Settlement.\n\n\n== Urban Infrastructure ==\nThe basis of the housing stock of Innopolis is 4 blocks of multi-storey apartment houses - 16 houses for 840 apartments - built by the State Housing Fund under the President of the Republic of Tatarstan and intended for leasing to residents of Innopolis and students.\nAs of the end of 2016, there was a kindergarten, a school, an IT lyceum, a sports and medical center, post offices, client offices of AK Bars and Sberbank, a beauty salon, a coffee shop and a supermarket in Innopolis.\n\n\n== References ==\n\n\n=== Notes ===\n\n\n=== Sources ===\n\u041c\u0438\u043d\u0438\u0441\u0442\u0435\u0440\u0441\u0442\u0432\u043e \u044e\u0441\u0442\u0438\u0446\u0438\u0438 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d. \u041f\u0440\u0438\u043a\u0430\u0437 \u211601-02/9 \u043e\u0442 4 \u0444\u0435\u0432\u0440\u0430\u043b\u044f 2014 \u0433. \u00ab\u041e\u0431 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0438 \u0440\u0435\u0435\u0441\u0442\u0440\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u043e-\u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0435\u0434\u0438\u043d\u0438\u0446 \u0438 \u043d\u0430\u0441\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u0432 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0435 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\u00bb, \u0432 \u0440\u0435\u0434. \u041f\u0440\u0438\u043a\u0430\u0437\u0430 \u211601-02/160 \u043e\u0442 11 \u043c\u0430\u0440\u0442\u0430 2015 \u0433. \u00ab\u041e \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u041f\u0440\u0438\u043a\u0430\u0437 \u041c\u0438\u043d\u0438\u0441\u0442\u0435\u0440\u0441\u0442\u0432\u0430 \u044e\u0441\u0442\u0438\u0446\u0438\u0438 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d \u043e\u0442 04.02.2014 \u211601-02/9 \"\u041e\u0431 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0438 \u0440\u0435\u0435\u0441\u0442\u0440\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u043e-\u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0435\u0434\u0438\u043d\u0438\u0446 \u0438 \u043d\u0430\u0441\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u0432 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0435 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\"\u00bb. \u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d: \u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 \u043f\u0440\u0430\u0432\u043e\u0432\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u041c\u0438\u043d\u0438\u0441\u0442\u0435\u0440\u0441\u0442\u0432\u0430 \u044e\u0441\u0442\u0438\u0446\u0438\u0438 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d (http://pravo.tatarstan.ru), 27 \u0444\u0435\u0432\u0440\u0430\u043b\u044f 2014 \u0433. (Ministry of Justice of the Republic of Tatarstan. Order #01-02/9 of February 4, 2014 On the Adoption of the Registry of the Administrative-Territorial Units and Inhabited Localities in the Republic of Tatarstan, as amended by the Order #01-02/160 of March 11, 2015 On Amending the Order of the Ministry of Justice of the Republic of Tatarstan #01-02/9 of February 4, 2014 \"On the Adoption of the Registry of the Administrative-Territorial Units and Inhabited Localities in the Republic of Tatarstan\". ).\n\u0413\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0421\u043e\u0432\u0435\u0442 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d. \u0417\u0430\u043a\u043e\u043d \u211619-\u0417\u0420\u0422 \u043e\u0442 31 \u044f\u043d\u0432\u0430\u0440\u044f 2005 \u0433. \u00ab\u041e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0433\u0440\u0430\u043d\u0438\u0446 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0439 \u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \"\u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u0438\u0439 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0439\u043e\u043d\" \u0438 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0432 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0435\u00bb, \u0432 \u0440\u0435\u0434. \u0417\u0430\u043a\u043e\u043d\u0430 \u2116115-\u0417\u0420\u0422 \u043e\u0442 13 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2014 \u0433. \u00ab\u041e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u0441\u0451\u043b\u043a\u0430 \u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441 \u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0433\u0440\u0430\u043d\u0438\u0446 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0412\u0432\u0435\u0434\u0435\u043d\u0441\u043a\u043e-\u0421\u043b\u043e\u0431\u043e\u0434\u0441\u043a\u043e\u0433\u043e \u0441\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0441\u0435\u043b\u0435\u043d\u0438\u044f \u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u043e\u0433\u043e \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0417\u0430\u043a\u043e\u043d \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d \"\u041e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0433\u0440\u0430\u043d\u0438\u0446 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0439 \u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \"\u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u0438\u0439 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0439\u043e\u043d\" \u0438 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0432 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0435\"\u00bb. \u0412\u0441\u0442\u0443\u043f\u0438\u043b \u0432 \u0441\u0438\u043b\u0443 \u0441\u043e \u0434\u043d\u044f \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0438\u044f. \u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d: \"\u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\", \u2116\u211618\u201319, 1 \u0444\u0435\u0432\u0440\u0430\u043b\u044f 2005 \u0433. (State Council of the Republic of Tatarstan. Law #19-ZRT of January 31, 2005 On Establishing the Borders of the Territories and the Status of the Municipal Formation of \"Verkhneuslonsky Municipal District\" and of the Municipal Formations It Comprises, as amended by the Law #115-ZRT of December 13, 2014 On the Transformation of the Settlement of Innopolis in Verkhneuslonsky District, on Changing the Borders of Several Municipal Formations, and on Transforming Vvedensko-Slobodskoye Rural Settlement in Verkhneuslonsky Municipal District, as well as Amending the Law of the Republic of Tatarstan \"On Establishing the Borders of the Territories and the Status of the Municipal Formation of \"Verkhneuslonsky Municipal District\" and of the Municipal Formations It Comprises\". Effective as of the day of the official publication.).\n\u0413\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0421\u043e\u0432\u0435\u0442 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d. \u041f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u21162622-IV-\u0413\u0421 \u043e\u0442 24 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2012 \u0433. \u00ab\u041e\u0431 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0430\u0441\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 \u2014 \u043f\u043e\u0441\u0451\u043b\u043a\u0430 \u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441 \u043d\u0430 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0438 \u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\u00bb. \u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d: \"\u0412\u0435\u0434\u043e\u043c\u043e\u0441\u0442\u0438 \u0413\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0421\u043e\u0432\u0435\u0442\u0430 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\u0430\", \u211612 (III \u0447\u0430\u0441\u0442\u044c), \u0441\u0442. 1926, 2012. (State Council of the Republic of Tatarstan. Resolution #2622-IV-GS of December 24, 2012 On Establishing an Inhabited Locality\u2014the Settlement of Innopolis\u2014on the Territory of Verkhneuslonsky District of the Republic of Tatarstan. ).\n\u0413\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0421\u043e\u0432\u0435\u0442 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d. \u0417\u0430\u043a\u043e\u043d \u2116115-\u0417\u0420\u0422 \u043e\u0442 13 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2014 \u0433. \u00ab\u041e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u0441\u0451\u043b\u043a\u0430 \u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441 \u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0433\u0440\u0430\u043d\u0438\u0446 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0412\u0432\u0435\u0434\u0435\u043d\u0441\u043a\u043e-\u0421\u043b\u043e\u0431\u043e\u0434\u0441\u043a\u043e\u0433\u043e \u0441\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u0441\u0435\u043b\u0435\u043d\u0438\u044f \u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u043e\u0433\u043e \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u043d\u0435\u0441\u0435\u043d\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0417\u0430\u043a\u043e\u043d \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d \"\u041e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0433\u0440\u0430\u043d\u0438\u0446 \u0442\u0435\u0440\u0440\u0438\u0442\u043e\u0440\u0438\u0439 \u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \"\u0412\u0435\u0440\u0445\u043d\u0435\u0443\u0441\u043b\u043e\u043d\u0441\u043a\u0438\u0439 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0439\u043e\u043d\" \u0438 \u043c\u0443\u043d\u0438\u0446\u0438\u043f\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 \u0432 \u0435\u0433\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0435\"\u00bb. \u0412\u0441\u0442\u0443\u043f\u0438\u043b \u0432 \u0441\u0438\u043b\u0443 \u0441\u043e \u0434\u043d\u044f \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u0438\u044f. \u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d: \"\u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0430 \u0422\u0430\u0442\u0430\u0440\u0441\u0442\u0430\u043d\", \u2116183, 16 \u0434\u0435\u043a\u0430\u0431\u0440\u044f 2014 \u0433. (State Council of the Republic of Tatarstan. Law #115-ZRT of December 13, 2014 On the Transformation of the Settlement of Innopolis in Verkhneuslonsky District, on Changing the Borders of Several Municipal Formations, and on Transforming Vvedensko-Slobodskoye Rural Settlement in Verkhneuslonsky Municipal District, as well as Amending the Law of the Republic of Tatarstan \"On Establishing the Borders of the Territories and the Status of the Municipal Formation of \"Verkhneuslonsky Municipal District\" and of the Municipal Formations It Comprises\". Effective as of the day of the official publication.).","thumbnail":{"source":"https://upload.wikimedia.org/wikipedia/commons/thumb/5/55/%D0%98%D0%BD%D0%BD%D0%BE%D0%BF%D0%BE%D0%BB%D0%B8%D1%81._%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BF%D0%B0%D1%80%D0%BA_%D0%B8%D0%BC._%D0%90.%D0%A1._%D0%9F%D0%BE%D0%BF%D0%BE%D0%B2%D0%B0.JPG/200px-%D0%98%D0%BD%D0%BD%D0%BE%D0%BF%D0%BE%D0%BB%D0%B8%D1%81._%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BF%D0%B0%D1%80%D0%BA_%D0%B8%D0%BC._%D0%90.%D0%A1._%D0%9F%D0%BE%D0%BF%D0%BE%D0%B2%D0%B0.JPG","width":200,"height":133},"pageimage":"\u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441._\u0422\u0435\u0445\u043d\u043e\u043f\u0430\u0440\u043a_\u0438\u043c._\u0410.\u0421._\u041f\u043e\u043f\u043e\u0432\u0430.JPG","langlinks":[{"lang":"ba","*":"\u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441"},{"lang":"bg","*":"\u0418\u043d\u043e\u043f\u043e\u043b\u0438\u0441"},{"lang":"he","*":"\u05d0\u05d9\u05e0\u05d5\u05e4\u05d5\u05dc\u05d9\u05e1"},{"lang":"hsb","*":"Innopolis"},{"lang":"lb","*":"Innopolis"},{"lang":"ru","*":"\u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441"},{"lang":"tt","*":"\u0418\u043d\u043d\u043e\u043f\u043e\u043b\u0438\u0441"},{"lang":"wo","*":"Innopolis"}]}}}}
|
data/spec/lib/client_spec.rb
CHANGED
@@ -161,15 +161,9 @@ describe Wikipedia::Client, '.find page (Edsger_Dijkstra)' do
|
|
161
161
|
@client.follow_redirects = true
|
162
162
|
@page = @client.find('Edsger Dijkstra')
|
163
163
|
[
|
164
|
-
'/en/4/4a/Commons-logo.svg',
|
165
|
-
'/en/4/48/Folder_Hexagonal_Icon.svg',
|
166
164
|
'/commons/5/57/Dijkstra_Animation.gif',
|
167
165
|
'/commons/c/c9/Edsger_Dijkstra_1994.jpg',
|
168
|
-
'/commons/d/d9/Edsger_Wybe_Dijkstra.jpg'
|
169
|
-
'/commons/0/00/Complex-adaptive-system.jpg',
|
170
|
-
'/en/4/4d/Centrum-wiskunde-informatica-logo.png',
|
171
|
-
'/commons/7/7b/An_illustration_of_the_dining_philosophers_problem.png',
|
172
|
-
'/commons/3/37/Detail_of_a_1Kb_ferrite_core_RAM-module_of_an_1960s_Electrologica_X1_computer.jpg'
|
166
|
+
'/commons/d/d9/Edsger_Wybe_Dijkstra.jpg'
|
173
167
|
].each do |image|
|
174
168
|
expect(@page.image_urls).to include('https://upload.wikimedia.org/wikipedia' + image)
|
175
169
|
end
|
@@ -179,13 +173,9 @@ describe Wikipedia::Client, '.find page (Edsger_Dijkstra)' do
|
|
179
173
|
@client.follow_redirects = true
|
180
174
|
@page = @client.find('Edsger Dijkstra')
|
181
175
|
[
|
182
|
-
'/en/thumb/4/4a/Commons-logo.svg/200px-Commons-logo.svg.png',
|
183
|
-
'/en/thumb/4/48/Folder_Hexagonal_Icon.svg/200px-Folder_Hexagonal_Icon.svg.png',
|
184
176
|
'/commons/thumb/5/57/Dijkstra_Animation.gif/200px-Dijkstra_Animation.gif',
|
185
177
|
'/commons/thumb/c/c9/Edsger_Dijkstra_1994.jpg/200px-Edsger_Dijkstra_1994.jpg',
|
186
|
-
'/commons/thumb/d/d9/Edsger_Wybe_Dijkstra.jpg/200px-Edsger_Wybe_Dijkstra.jpg'
|
187
|
-
'/commons/thumb/0/00/Complex-adaptive-system.jpg/200px-Complex-adaptive-system.jpg',
|
188
|
-
'/en/thumb/4/4d/Centrum-wiskunde-informatica-logo.png/200px-Centrum-wiskunde-informatica-logo.png'
|
178
|
+
'/commons/thumb/d/d9/Edsger_Wybe_Dijkstra.jpg/200px-Edsger_Wybe_Dijkstra.jpg'
|
189
179
|
].each do |image|
|
190
180
|
expect(@page.image_thumburls).to include('https://upload.wikimedia.org/wikipedia' + image)
|
191
181
|
end
|
@@ -195,13 +185,9 @@ describe Wikipedia::Client, '.find page (Edsger_Dijkstra)' do
|
|
195
185
|
@client.follow_redirects = true
|
196
186
|
@page = @client.find('Edsger Dijkstra')
|
197
187
|
[
|
198
|
-
'/en/thumb/4/4a/Commons-logo.svg/100px-Commons-logo.svg.png',
|
199
|
-
'/en/thumb/4/48/Folder_Hexagonal_Icon.svg/100px-Folder_Hexagonal_Icon.svg.png',
|
200
188
|
'/commons/thumb/5/57/Dijkstra_Animation.gif/100px-Dijkstra_Animation.gif',
|
201
189
|
'/commons/thumb/c/c9/Edsger_Dijkstra_1994.jpg/100px-Edsger_Dijkstra_1994.jpg',
|
202
|
-
'/commons/thumb/d/d9/Edsger_Wybe_Dijkstra.jpg/100px-Edsger_Wybe_Dijkstra.jpg'
|
203
|
-
'/commons/thumb/0/00/Complex-adaptive-system.jpg/100px-Complex-adaptive-system.jpg',
|
204
|
-
'/en/thumb/4/4d/Centrum-wiskunde-informatica-logo.png/100px-Centrum-wiskunde-informatica-logo.png'
|
190
|
+
'/commons/thumb/d/d9/Edsger_Wybe_Dijkstra.jpg/100px-Edsger_Wybe_Dijkstra.jpg'
|
205
191
|
].each do |image|
|
206
192
|
expect(@page.image_thumburls(100)).to include('https://upload.wikimedia.org/wikipedia' + image)
|
207
193
|
end
|
@@ -277,3 +263,25 @@ describe Wikipedia::Client, '.find page (mocked)' do
|
|
277
263
|
expect(@page.image_urls).to eq(nil)
|
278
264
|
end
|
279
265
|
end
|
266
|
+
|
267
|
+
describe Wikipedia::Client, 'page.langlinks' do
|
268
|
+
before(:each) do
|
269
|
+
@client = Wikipedia::Client.new
|
270
|
+
@innopolis = File.read(File.dirname(__FILE__) + '/../fixtures/Innopolis.json')
|
271
|
+
expect(@client).to receive(:request).and_return(@innopolis)
|
272
|
+
end
|
273
|
+
|
274
|
+
it 'should contain langlinks' do
|
275
|
+
@page = @client.find('Innopolis')
|
276
|
+
expect(@page.langlinks).to include(
|
277
|
+
'ba' => 'Иннополис',
|
278
|
+
'bg' => 'Инополис',
|
279
|
+
'he' => 'אינופוליס',
|
280
|
+
'hsb' => 'Innopolis',
|
281
|
+
'lb' => 'Innopolis',
|
282
|
+
'ru' => 'Иннополис',
|
283
|
+
'tt' => 'Иннополис',
|
284
|
+
'wo' => 'Innopolis'
|
285
|
+
)
|
286
|
+
end
|
287
|
+
end
|
data/wikipedia-client.gemspec
CHANGED
@@ -4,7 +4,6 @@ $LOAD_PATH.push File.expand_path('../lib', __FILE__)
|
|
4
4
|
require 'wikipedia/version'
|
5
5
|
require 'date'
|
6
6
|
|
7
|
-
# rubocop:disable Metrics/BlockLength
|
8
7
|
Gem::Specification.new do |s|
|
9
8
|
s.name = 'wikipedia-client'
|
10
9
|
s.version = Wikipedia::VERSION
|
@@ -19,34 +18,16 @@ Gem::Specification.new do |s|
|
|
19
18
|
s.email = 'ken@kenpratt.net'
|
20
19
|
|
21
20
|
s.homepage = 'http://github.com/kenpratt/wikipedia-client'
|
22
|
-
s.rubygems_version = '1.8.23'
|
23
21
|
s.summary = 'Ruby client for the Wikipedia API'
|
24
22
|
s.platform = Gem::Platform::RUBY
|
25
23
|
s.files = `git ls-files`.split("\n")
|
26
24
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
27
25
|
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
28
|
-
s.
|
29
|
-
s.extra_rdoc_files = ['README.textile']
|
26
|
+
s.extra_rdoc_files = ['README.md']
|
30
27
|
s.bindir = 'bin'
|
31
28
|
|
32
29
|
s.require_paths << 'lib'
|
33
30
|
s.rdoc_options << '--title' << 'wikipedia-client' << '--main' << '-ri'
|
34
31
|
|
35
|
-
s.
|
36
|
-
s.add_development_dependency('rspec', '~> 3.0')
|
37
|
-
s.add_development_dependency('rdoc', '~> 4.0')
|
38
|
-
s.add_development_dependency('jeweler', '~> 1.8')
|
39
|
-
s.add_development_dependency('rubocop', '~> 0.48')
|
40
|
-
|
41
|
-
if s.respond_to? :specification_version
|
42
|
-
s.specification_version = 3
|
43
|
-
|
44
|
-
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0')
|
45
|
-
s.add_development_dependency('thoughtbot-shoulda', '~> 2.11', ['>= 2.11'])
|
46
|
-
else
|
47
|
-
s.add_dependency('thoughtbot-shoulda', ['>= 0'])
|
48
|
-
end
|
49
|
-
else
|
50
|
-
s.add_dependency('thoughtbot-shoulda', ['>= 0'])
|
51
|
-
end
|
32
|
+
s.add_runtime_dependency 'addressable', '~> 2.7'
|
52
33
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wikipedia-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cyril David
|
@@ -10,116 +10,39 @@ authors:
|
|
10
10
|
- Aishwarya Subramanian
|
11
11
|
- Pietro Menna
|
12
12
|
- Sophie Rapoport
|
13
|
-
autorequire:
|
13
|
+
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date:
|
16
|
+
date: 2021-04-29 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
|
-
name:
|
19
|
+
name: addressable
|
20
20
|
requirement: !ruby/object:Gem::Requirement
|
21
21
|
requirements:
|
22
22
|
- - "~>"
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: '
|
25
|
-
type: :
|
24
|
+
version: '2.7'
|
25
|
+
type: :runtime
|
26
26
|
prerelease: false
|
27
27
|
version_requirements: !ruby/object:Gem::Requirement
|
28
28
|
requirements:
|
29
29
|
- - "~>"
|
30
30
|
- !ruby/object:Gem::Version
|
31
|
-
version: '
|
32
|
-
- !ruby/object:Gem::Dependency
|
33
|
-
name: rspec
|
34
|
-
requirement: !ruby/object:Gem::Requirement
|
35
|
-
requirements:
|
36
|
-
- - "~>"
|
37
|
-
- !ruby/object:Gem::Version
|
38
|
-
version: '3.0'
|
39
|
-
type: :development
|
40
|
-
prerelease: false
|
41
|
-
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
requirements:
|
43
|
-
- - "~>"
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '3.0'
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: rdoc
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
requirements:
|
50
|
-
- - "~>"
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: '4.0'
|
53
|
-
type: :development
|
54
|
-
prerelease: false
|
55
|
-
version_requirements: !ruby/object:Gem::Requirement
|
56
|
-
requirements:
|
57
|
-
- - "~>"
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: '4.0'
|
60
|
-
- !ruby/object:Gem::Dependency
|
61
|
-
name: jeweler
|
62
|
-
requirement: !ruby/object:Gem::Requirement
|
63
|
-
requirements:
|
64
|
-
- - "~>"
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: '1.8'
|
67
|
-
type: :development
|
68
|
-
prerelease: false
|
69
|
-
version_requirements: !ruby/object:Gem::Requirement
|
70
|
-
requirements:
|
71
|
-
- - "~>"
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
version: '1.8'
|
74
|
-
- !ruby/object:Gem::Dependency
|
75
|
-
name: rubocop
|
76
|
-
requirement: !ruby/object:Gem::Requirement
|
77
|
-
requirements:
|
78
|
-
- - "~>"
|
79
|
-
- !ruby/object:Gem::Version
|
80
|
-
version: '0.48'
|
81
|
-
type: :development
|
82
|
-
prerelease: false
|
83
|
-
version_requirements: !ruby/object:Gem::Requirement
|
84
|
-
requirements:
|
85
|
-
- - "~>"
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
version: '0.48'
|
88
|
-
- !ruby/object:Gem::Dependency
|
89
|
-
name: thoughtbot-shoulda
|
90
|
-
requirement: !ruby/object:Gem::Requirement
|
91
|
-
requirements:
|
92
|
-
- - "~>"
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
version: '2.11'
|
95
|
-
- - ">="
|
96
|
-
- !ruby/object:Gem::Version
|
97
|
-
version: '2.11'
|
98
|
-
type: :development
|
99
|
-
prerelease: false
|
100
|
-
version_requirements: !ruby/object:Gem::Requirement
|
101
|
-
requirements:
|
102
|
-
- - "~>"
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
version: '2.11'
|
105
|
-
- - ">="
|
106
|
-
- !ruby/object:Gem::Version
|
107
|
-
version: '2.11'
|
31
|
+
version: '2.7'
|
108
32
|
description: Ruby client for the Wikipedia API
|
109
33
|
email: ken@kenpratt.net
|
110
34
|
executables: []
|
111
35
|
extensions: []
|
112
36
|
extra_rdoc_files:
|
113
|
-
- README.
|
37
|
+
- README.md
|
114
38
|
files:
|
115
39
|
- ".editorconfig"
|
40
|
+
- ".github/workflows/test.yml"
|
116
41
|
- ".gitignore"
|
117
42
|
- ".rubocop.yml"
|
118
|
-
- ".travis.yml"
|
119
43
|
- Gemfile
|
120
|
-
- Gemfile.lock
|
121
44
|
- MIT-LICENSE
|
122
|
-
- README.
|
45
|
+
- README.md
|
123
46
|
- Rakefile
|
124
47
|
- init.rb
|
125
48
|
- install.rb
|
@@ -135,6 +58,7 @@ files:
|
|
135
58
|
- spec/fixtures/Edsger_Dijkstra_section_0.json
|
136
59
|
- spec/fixtures/Edsger_content.txt
|
137
60
|
- spec/fixtures/File_Edsger_Wybe_Dijkstra_jpg.json
|
61
|
+
- spec/fixtures/Innopolis.json
|
138
62
|
- spec/fixtures/Sealand_Dynasty.json
|
139
63
|
- spec/fixtures/sanitization_samples/Ceawlin_of_Wessex-raw.txt
|
140
64
|
- spec/fixtures/sanitization_samples/Ceawlin_of_Wessex-sanitized.txt
|
@@ -174,7 +98,7 @@ homepage: http://github.com/kenpratt/wikipedia-client
|
|
174
98
|
licenses:
|
175
99
|
- MIT
|
176
100
|
metadata: {}
|
177
|
-
post_install_message:
|
101
|
+
post_install_message:
|
178
102
|
rdoc_options:
|
179
103
|
- "--title"
|
180
104
|
- wikipedia-client
|
@@ -194,10 +118,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
194
118
|
- !ruby/object:Gem::Version
|
195
119
|
version: '0'
|
196
120
|
requirements: []
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
specification_version: 3
|
121
|
+
rubygems_version: 3.0.3
|
122
|
+
signing_key:
|
123
|
+
specification_version: 4
|
201
124
|
summary: Ruby client for the Wikipedia API
|
202
125
|
test_files:
|
203
126
|
- spec/fixtures/Edsger_Dijkstra.json
|
@@ -205,6 +128,7 @@ test_files:
|
|
205
128
|
- spec/fixtures/Edsger_Dijkstra_section_0.json
|
206
129
|
- spec/fixtures/Edsger_content.txt
|
207
130
|
- spec/fixtures/File_Edsger_Wybe_Dijkstra_jpg.json
|
131
|
+
- spec/fixtures/Innopolis.json
|
208
132
|
- spec/fixtures/Sealand_Dynasty.json
|
209
133
|
- spec/fixtures/sanitization_samples/Ceawlin_of_Wessex-raw.txt
|
210
134
|
- spec/fixtures/sanitization_samples/Ceawlin_of_Wessex-sanitized.txt
|
data/.travis.yml
DELETED
data/Gemfile.lock
DELETED
@@ -1,93 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
wikipedia-client (1.9.1)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: https://rubygems.org/
|
8
|
-
specs:
|
9
|
-
addressable (2.3.5)
|
10
|
-
ast (2.3.0)
|
11
|
-
builder (3.2.2)
|
12
|
-
diff-lcs (1.3)
|
13
|
-
faraday (0.8.8)
|
14
|
-
multipart-post (~> 1.2.0)
|
15
|
-
git (1.2.6)
|
16
|
-
github_api (0.10.1)
|
17
|
-
addressable
|
18
|
-
faraday (~> 0.8.1)
|
19
|
-
hashie (>= 1.2)
|
20
|
-
multi_json (~> 1.4)
|
21
|
-
nokogiri (~> 1.5.2)
|
22
|
-
oauth2
|
23
|
-
hashie (2.0.5)
|
24
|
-
highline (1.6.19)
|
25
|
-
httpauth (0.2.0)
|
26
|
-
jeweler (1.8.8)
|
27
|
-
builder
|
28
|
-
bundler (~> 1.0)
|
29
|
-
git (>= 1.2.5)
|
30
|
-
github_api (= 0.10.1)
|
31
|
-
highline (>= 1.6.15)
|
32
|
-
nokogiri (= 1.5.10)
|
33
|
-
rake
|
34
|
-
rdoc
|
35
|
-
json (1.8.6)
|
36
|
-
jwt (0.1.8)
|
37
|
-
multi_json (>= 1.5)
|
38
|
-
multi_json (1.8.1)
|
39
|
-
multi_xml (0.5.5)
|
40
|
-
multipart-post (1.2.0)
|
41
|
-
nokogiri (1.5.10)
|
42
|
-
oauth2 (0.9.2)
|
43
|
-
faraday (~> 0.8)
|
44
|
-
httpauth (~> 0.2)
|
45
|
-
jwt (~> 0.1.4)
|
46
|
-
multi_json (~> 1.0)
|
47
|
-
multi_xml (~> 0.5)
|
48
|
-
rack (~> 1.2)
|
49
|
-
parser (2.4.0.0)
|
50
|
-
ast (~> 2.2)
|
51
|
-
powerpack (0.1.1)
|
52
|
-
rack (1.5.2)
|
53
|
-
rainbow (2.2.2)
|
54
|
-
rake
|
55
|
-
rake (10.1.0)
|
56
|
-
rdoc (4.0.1)
|
57
|
-
json (~> 1.4)
|
58
|
-
rspec (3.0.0)
|
59
|
-
rspec-core (~> 3.0.0)
|
60
|
-
rspec-expectations (~> 3.0.0)
|
61
|
-
rspec-mocks (~> 3.0.0)
|
62
|
-
rspec-core (3.0.4)
|
63
|
-
rspec-support (~> 3.0.0)
|
64
|
-
rspec-expectations (3.0.4)
|
65
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
66
|
-
rspec-support (~> 3.0.0)
|
67
|
-
rspec-mocks (3.0.4)
|
68
|
-
rspec-support (~> 3.0.0)
|
69
|
-
rspec-support (3.0.4)
|
70
|
-
rubocop (0.48.1)
|
71
|
-
parser (>= 2.3.3.1, < 3.0)
|
72
|
-
powerpack (~> 0.1)
|
73
|
-
rainbow (>= 1.99.1, < 3.0)
|
74
|
-
ruby-progressbar (~> 1.7)
|
75
|
-
unicode-display_width (~> 1.0, >= 1.0.1)
|
76
|
-
ruby-progressbar (1.8.1)
|
77
|
-
thoughtbot-shoulda (2.11.1)
|
78
|
-
unicode-display_width (1.2.1)
|
79
|
-
|
80
|
-
PLATFORMS
|
81
|
-
ruby
|
82
|
-
|
83
|
-
DEPENDENCIES
|
84
|
-
jeweler (~> 1.8)
|
85
|
-
rake (~> 10.1)
|
86
|
-
rdoc (~> 4.0)
|
87
|
-
rspec (~> 3.0)
|
88
|
-
rubocop (~> 0.48)
|
89
|
-
thoughtbot-shoulda (~> 2.11, >= 2.11)
|
90
|
-
wikipedia-client!
|
91
|
-
|
92
|
-
BUNDLED WITH
|
93
|
-
1.15.1
|
data/README.textile
DELETED
@@ -1,163 +0,0 @@
|
|
1
|
-
h1. Wikipedia
|
2
|
-
|
3
|
-
!https://badge.fury.io/rb/wikipedia-client.svg!:https://badge.fury.io/rb/wikipedia-client !https://travis-ci.org/kenpratt/wikipedia-client.svg?branch=master!:https://travis-ci.org/kenpratt/wikipedia-client
|
4
|
-
|
5
|
-
Allows you to get wikipedia content through their API. This uses the
|
6
|
-
alpha API, not the deprecated query.php API type
|
7
|
-
|
8
|
-
Wikipedia API reference: "http://en.wikipedia.org/w/api.php":http://en.wikipedia.org/w/api.php
|
9
|
-
|
10
|
-
Adopted from: "http://code.google.com/p/wikipedia-client/":http://code.google.com/p/wikipedia-client/
|
11
|
-
|
12
|
-
h2. Installation
|
13
|
-
|
14
|
-
<pre><code>gem install wikipedia-client</code></pre>
|
15
|
-
|
16
|
-
h2. Examples
|
17
|
-
|
18
|
-
<pre><code>require 'wikipedia'
|
19
|
-
page = Wikipedia.find( 'Getting Things Done' )
|
20
|
-
|
21
|
-
=> #<Wikipedia:Page>
|
22
|
-
|
23
|
-
page.title
|
24
|
-
|
25
|
-
=> 'Getting Things Done'
|
26
|
-
|
27
|
-
page.fullurl
|
28
|
-
|
29
|
-
=> 'http://en.wikipedia.org/wiki/Getting_Things_Done'
|
30
|
-
|
31
|
-
page.text
|
32
|
-
|
33
|
-
=> 'Getting Things Done is a time-management method...'
|
34
|
-
|
35
|
-
page.content
|
36
|
-
|
37
|
-
=> # all the wiki markup appears here...
|
38
|
-
|
39
|
-
page.summary
|
40
|
-
|
41
|
-
=> # only the wiki summary appears here...
|
42
|
-
|
43
|
-
page.categories
|
44
|
-
|
45
|
-
=> [..., "Category:Self-help books", ...]
|
46
|
-
|
47
|
-
page.links
|
48
|
-
|
49
|
-
=> [..., "Business", "Cult following", ...]
|
50
|
-
|
51
|
-
page.extlinks
|
52
|
-
|
53
|
-
=> [..., "http://www.example.com/", ...]
|
54
|
-
|
55
|
-
page.images
|
56
|
-
|
57
|
-
=> ["File:Getting Things Done.jpg", ...]
|
58
|
-
|
59
|
-
page.image_urls
|
60
|
-
|
61
|
-
=> ["http://upload.wikimedia.org/wikipedia/en/e/e1/Getting_Things_Done.jpg"]
|
62
|
-
|
63
|
-
default width: 200
|
64
|
-
|
65
|
-
page.image_thumburls
|
66
|
-
|
67
|
-
=> ["https://upload.wikimedia.org/wikipedia/en/thumb/e/e1/Getting_Things_Done.jpg/200px-Getting_Things_Done.jpg"]
|
68
|
-
|
69
|
-
or with custom width argument:
|
70
|
-
|
71
|
-
page.image_thumburls(100)
|
72
|
-
|
73
|
-
=> ["https://upload.wikimedia.org/wikipedia/en/thumb/e/e1/Getting_Things_Done.jpg/100px-Getting_Things_Done.jpg"]
|
74
|
-
|
75
|
-
page.image_descriptionurls
|
76
|
-
|
77
|
-
=> ["http://en.wikipedia.org/wiki/File:Getting_Things_Done.jpg"]
|
78
|
-
|
79
|
-
page.main_image_url
|
80
|
-
|
81
|
-
=> "https://upload.wikimedia.org/wikipedia/en/e/e1/Getting_Things_Done.jpg"
|
82
|
-
|
83
|
-
page.coordinates
|
84
|
-
|
85
|
-
=> [48.853, 2.3498, "", "earth"]
|
86
|
-
|
87
|
-
page.templates
|
88
|
-
|
89
|
-
=> [..., "Template:About", ...]</code></pre>
|
90
|
-
|
91
|
-
h2. Configuration
|
92
|
-
|
93
|
-
This is by default configured like this:
|
94
|
-
|
95
|
-
<pre><code>Wikipedia.configure {
|
96
|
-
domain 'en.wikipedia.org'
|
97
|
-
path 'w/api.php'
|
98
|
-
}</code></pre>
|
99
|
-
|
100
|
-
h2. Advanced
|
101
|
-
|
102
|
-
See the API spec at "http://en.wikipedia.org/w/api.php":http://en.wikipedia.org/w/api.php
|
103
|
-
|
104
|
-
If you need data that is not already present, you can override parameters.
|
105
|
-
|
106
|
-
For example, to retrieve only the page info:
|
107
|
-
|
108
|
-
<pre><code>page = Wikipedia.find( 'Getting Things Done', :prop => "info" )
|
109
|
-
|
110
|
-
page.title
|
111
|
-
|
112
|
-
=> "Getting Things Done"
|
113
|
-
|
114
|
-
page.raw_data
|
115
|
-
|
116
|
-
=> {"query"=>{"pages"=>{"959928"=>{"pageid"=>959928, "ns"=>0,
|
117
|
-
"title"=>"Getting Things Done", "touched"=>"2010-03-10T00:04:09Z",
|
118
|
-
"lastrevid"=>348481810, "counter"=>0, "length"=>7891}}}}</code></pre>
|
119
|
-
|
120
|
-
h2. Contributing
|
121
|
-
|
122
|
-
h3. Getting the code, and running the tests
|
123
|
-
|
124
|
-
<pre><code>git clone git@github.com:kenpratt/wikipedia-client.git
|
125
|
-
cd wikipedia-client
|
126
|
-
gem install bundler
|
127
|
-
bundle exec rake spec</code></pre>
|
128
|
-
|
129
|
-
h3. Pushing a new release of the Gem
|
130
|
-
|
131
|
-
Edit <code>lib/wikipedia/version.rb</code>, changing <code>VERSION</code>.
|
132
|
-
|
133
|
-
Build the gem: <code>bundle exec gem build wikipedia-client.gemspec</code>
|
134
|
-
|
135
|
-
Commit the changes: <code>git commit -a -m 'Version bump to 1.4.0' && git push</code>
|
136
|
-
|
137
|
-
Publish the result to RubyGems: <code>bundle exec gem push wikipedia-client-1.4.0.gem</code>
|
138
|
-
|
139
|
-
h2. Thanks!
|
140
|
-
|
141
|
-
Copyright (c) 2008 [Cyril David], released under the MIT license
|
142
|
-
|
143
|
-
Adopted by Ken Pratt (ken@kenpratt.net) in 2010/03
|
144
|
-
|
145
|
-
h3. Contributors
|
146
|
-
|
147
|
-
Aishwarya Subramanian <aishwarya923@gmail.com>
|
148
|
-
Bryce <brycedneal@gmail.com>
|
149
|
-
cdr-data <b_rhettbarber@yahoo.com>
|
150
|
-
Christian Hellsten <christian.hellsten@gmail.com>
|
151
|
-
Christopher Quackenbush <christopher@quackenbush.me>
|
152
|
-
Cyril David
|
153
|
-
Francesco Serra <afnecors@gmail.com>
|
154
|
-
Harman Singh
|
155
|
-
ivobenedito <ivobenedito@gmail.com>
|
156
|
-
Justin Harrison <justin@matthin.com>
|
157
|
-
Ken Pratt <ken@kenpratt.net>
|
158
|
-
Manu Manu <manuisfunny@gmail.com>
|
159
|
-
Mike Haugland <mike.haugland@bravenet.com>
|
160
|
-
Pietro F. Menna <pietromenna@yahoo.com>
|
161
|
-
Sophie Rapoport <sfrapoport@gmail.com>
|
162
|
-
tsukasaoishi <tsukasa.oishi@gmail.com>
|
163
|
-
V <thevalentino@gmail.com>
|