bookshark 1.0.0.alpha.7 → 1.0.0.beta.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -3
- data/bookshark.gemspec +2 -2
- data/lib/bookshark.rb +1 -1
- data/lib/bookshark/extractors/author_extractor.rb +3 -3
- data/lib/bookshark/extractors/base.rb +1 -1
- data/lib/bookshark/extractors/publisher_extractor.rb +52 -38
- data/lib/bookshark/storage/file_manager.rb +1 -1
- data/lib/bookshark/version.rb +1 -1
- data/spec/test_data/author_13219.json +1 -1
- data/spec/test_data/eager_book_184923.json +2 -2
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ff97d12d21d7678e46504e23a91a7446511de2b7
|
4
|
+
data.tar.gz: 44334a7a91be7c1d03490777be58125b27cca267
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7f16e3541bf863c2ff3620cc3166cc3448c5feb527fd2e0eac92e0add40e0d8d6cb1ae7ad1a0605805c1637f111a0d2fda2fffff23b1219d54b58f18d12f828
|
7
|
+
data.tar.gz: e255f4238ff491755514b0b52cbea499edc78bf5789f7e101476c8ee6b2d16f3594fc5cbaafcfc5c38e6609c50d519d395e9a92eaf7ad8a2a901c72014fc5ca4
|
data/README.md
CHANGED
@@ -2,17 +2,18 @@
|
|
2
2
|
![Bookshark Logo](https://dl.dropboxusercontent.com/u/4888041/bookshark/logo.png)
|
3
3
|
|
4
4
|
A ruby library for book metadata extraction from biblionet.gr which
|
5
|
-
extracts books, authors, publishers and ddc
|
5
|
+
extracts books, authors, publishers and ddc metadata.
|
6
6
|
The representation of bibliographic metadata in JSON is inspired by [BibJSON](http://okfnlabs.org/bibjson/) but some tags may be different.
|
7
7
|
|
8
8
|
[![Build Status](https://travis-ci.org/dklisiaris/bookshark.svg?branch=master)](https://travis-ci.org/dklisiaris/bookshark)
|
9
|
+
[![Dependency Status](https://gemnasium.com/dklisiaris/bookshark.svg)](https://gemnasium.com/dklisiaris/bookshark)
|
9
10
|
|
10
11
|
## Installation
|
11
12
|
|
12
13
|
Add this line to your application's Gemfile:
|
13
14
|
|
14
15
|
```ruby
|
15
|
-
gem 'bookshark', "~> 1.0.0.
|
16
|
+
gem 'bookshark', "~> 1.0.0.beta"
|
16
17
|
```
|
17
18
|
|
18
19
|
And then execute:
|
@@ -291,7 +292,7 @@ The expected result of an author extraction is something like this:
|
|
291
292
|
"name": "Tolkien, John Ronald Reuel",
|
292
293
|
"firstname": "John Ronald Reuel",
|
293
294
|
"lastname": "Tolkien",
|
294
|
-
"
|
295
|
+
"extra_info": "1892-1973",
|
295
296
|
"image": "http://www.biblionet.gr/images/persons/10207.jpg",
|
296
297
|
"bio": "Ο John Ronald Reuel Tolkien, άγγλος φιλόλογος και συγγραφέας, γεννήθηκε το 1892 στην πόλη Μπλουμφοντέιν...",
|
297
298
|
"award": [
|
data/bookshark.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_dependency "json", "~> 1.8"
|
26
26
|
spec.add_dependency "htmlentities", "~> 4.3"
|
27
27
|
|
28
|
-
spec.add_development_dependency "bundler", "
|
28
|
+
spec.add_development_dependency "bundler", "~> 1.9"
|
29
29
|
spec.add_development_dependency "rake", "~> 10.0"
|
30
|
-
spec.add_development_dependency 'rspec', "~> 3.
|
30
|
+
spec.add_development_dependency 'rspec', "~> 3.2"
|
31
31
|
end
|
data/lib/bookshark.rb
CHANGED
@@ -38,7 +38,7 @@ module Biblionet
|
|
38
38
|
end
|
39
39
|
author_hash[:firstname] = identity[:firstname]
|
40
40
|
author_hash[:lastname] = identity[:lastname]
|
41
|
-
author_hash[:
|
41
|
+
author_hash[:extra_info] = identity[:extra_info]
|
42
42
|
author_hash[:image] = page.image
|
43
43
|
author_hash[:bio] = page.bio
|
44
44
|
author_hash[:award] = page.awards
|
@@ -65,13 +65,13 @@ module Biblionet
|
|
65
65
|
|
66
66
|
if parts.length == 2
|
67
67
|
if parts[1] =~ years_re
|
68
|
-
identity[:
|
68
|
+
identity[:extra_info] = parts[1]
|
69
69
|
else
|
70
70
|
identity[:firstname] = parts[1]
|
71
71
|
end
|
72
72
|
elsif parts.length == 3
|
73
73
|
identity[:firstname] = parts[1]
|
74
|
-
identity[:
|
74
|
+
identity[:extra_info] = parts[2]
|
75
75
|
end
|
76
76
|
|
77
77
|
return identity
|
@@ -97,50 +97,64 @@ module Biblionet
|
|
97
97
|
# Change keys. Use the same as in bookstores.
|
98
98
|
mappings = {"Διεύθυνση" => :address, "Τηλ" => :telephone, "FAX" => :fax, "E-mail" => :email, "Web site" => :website}
|
99
99
|
headquarters_hash = Hash[headquarters_hash.map {|k, v| [mappings[k], v] }]
|
100
|
-
headquarters_hash[:
|
100
|
+
headquarters_hash[:telephone] = [headquarters_hash[:telephone]] unless headquarters_hash[:telephone].kind_of?(Array)
|
101
|
+
headquarters_hash[:website] = headquarters_hash[:website].split(',').map(&:strip) if (headquarters_hash[:website] and headquarters_hash[:website].include? ',')
|
101
102
|
|
102
103
|
return headquarters_hash
|
103
104
|
end
|
104
105
|
|
105
106
|
def bookstores
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
107
|
+
bookstores_hash = Hash.new { |h,k| h[k] = {} }
|
108
|
+
address_array = []
|
109
|
+
tel_array = []
|
110
|
+
|
111
|
+
# Defaunt key in case there is none.
|
112
|
+
key = 'Βιβλιοπωλείο'
|
113
|
+
|
114
|
+
@nodeset.css('//p[align="justify"]').inner_html.split('<br><br>').map(&:strip).reject(&:empty?).each do |item_group|
|
115
|
+
if item_group.end_with?(":")
|
116
|
+
key = item_group[0..-2]
|
117
|
+
address_array = []
|
118
|
+
tel_array = []
|
119
|
+
else
|
120
|
+
if bookstores_hash[key].any?
|
121
|
+
key[-1].to_i
|
122
|
+
key += ((key[-1].to_i > 0) ? (' '+(key[-1].to_i+1).to_s) : ' 2')
|
123
|
+
address_array = []
|
124
|
+
tel_array = []
|
125
|
+
end
|
126
|
+
item_group.split('<br>').each do |item|
|
127
|
+
regex_tel = /\d{3,5} \d{5,7}/
|
128
|
+
regex_tk = /\d{3} \d{2}/
|
129
|
+
regex_email = /([\w+\-].?)+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+/i
|
130
|
+
regex_url = /((http(?:s)?\:\/\/)?[a-zA-Z0-9\-]+(?:\.[a-zA-Z0-9\-]+)*\.[a-zA-Z]{2,6}(?:\/?|(?:\/[\w\-]+)*)(?:\/?|\/\w+\.[a-zA-Z]{2,4}(?:\?[\w]+\=[\w\-]+)?)?(?:\&[\w]+\=[\w\-]+)*)/ix
|
131
|
+
|
132
|
+
if item.end_with?(":")
|
133
|
+
key = item[0..-2]
|
134
|
+
address_array = []
|
135
|
+
tel_array = []
|
136
|
+
elsif (item.start_with?("Fax") or item.start_with?("fax")) and item =~ regex_tel
|
137
|
+
bookstores_hash[key][:fax] = item.gsub(/[^\d{3} \d{2}]/, '').strip
|
138
|
+
elsif item =~ regex_tel
|
139
|
+
tel_array << item.gsub(/[^\d{3} \d{2}]/, '').strip
|
140
|
+
bookstores_hash[key][:telephone] = tel_array
|
141
|
+
elsif item =~ regex_tk
|
142
|
+
address_array << item.gsub(/,$/, '').strip
|
143
|
+
bookstores_hash[key][:address] = address_array
|
144
|
+
elsif item =~ regex_email
|
145
|
+
bookstores_hash[key][:email] = (regex_email.match(item))[0]
|
146
|
+
elsif item =~ regex_url
|
147
|
+
bookstores_hash[key][:website] = item[regex_url,1]
|
148
|
+
else
|
149
|
+
address_array << item.gsub(/,$/, '').strip
|
150
|
+
bookstores_hash[key][:address] = address_array
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
138
154
|
end
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
return bookstores_hash
|
143
|
-
end
|
155
|
+
|
156
|
+
return bookstores_hash
|
157
|
+
end
|
144
158
|
|
145
159
|
end
|
146
160
|
|
data/lib/bookshark/version.rb
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
"name": "Naipaul, V. S.",
|
5
5
|
"firstname": "V. S.",
|
6
6
|
"lastname": "Naipaul",
|
7
|
-
"
|
7
|
+
"extra_info": "1932-",
|
8
8
|
"image": "http://www.biblionet.gr/images/persons/13219.jpg",
|
9
9
|
"bio": "Ο Β. Σ. Νάιπολ, από τους σημαντικότερους σύγχρονους Βρετανούς συγγραφείς, γεννήθηκε στο Τρινιντάντ το 1932 από γονείς Ινδούς μετανάστες. Σπούδασε με υποτροφία στην Οξφόρδη. Έχει γράψει δεκαέξι βιβλία πεζογραφίας, ανάμεσα στα οποία τα μυθιστορήματα: \"The Mystic Masseur\" (\"Ο μυστικός μασέρ\"), 1957, που μεταφέρθηκε στον κινηματογράφο το 2001, \"Miguel Street\" (\"Μιγκέλ Στριτ\"), 1959, \"A Ηouse for Mr. Biswas\" (ελλ. έκδ. \"Ένα σπίτι για τον κύριο Μπίσβας\"), 1961, \"Mr. Stone and the Knights Companion\" (ελλ. έκδ. \"Ο κύριος Στόουν και οι σύντροφοι των ιπποτών\"), 1963, \"In a Free State\", 1971, που κέρδισε το βραβείο Booker, \"Guerrillas\" (ελλ. έκδ. \"Οι αντάρτες\"), 1975, \"A Bend in the River\" (\"Μια καμπή στον ποταμό\"), 1979, \"Half a Life\" (ελλ. έκδ. \"Μισή ζωή\"), 2001, \"Magic Seeds\" (ελλ. έκδ. \"Μαγικοί σπόροι\"), 2004, καθώς και έργα ταξιδιωτικής λογοτεχνίας, βιογραφίες, πολιτικά και λογοτεχνικά δοκίμια, με τελευταίο το \"The Masque of Africa: Glimpses of African Belief\", 2010. Έχει τιμηθεί με όλα σχεδόν τα μεγάλα λογοτεχνικά βραβεία στη Μ. Βρετανία (John Llewellyn Rhys Prize, 1958, Somerset Maugham, 1960, Hawthornden Prize, 1964, W H Smith Literary Award, 1968, Booker Prize, 1971, David Cohen Prize for Lifetime's Achievement in British Literature, 1993). Το 2001 τιμήθηκε με το βραβείο Νόμπελ Λογοτεχνίας για το σύνολο του έργου του, \"που μας οδηγεί να αντιληφθούμε την παρουσία της κρυμμένης ιστορίας\". Το 2008 η εφημερίδα \"Times\" τον συμπεριέλαβε στους \"50 σημαντικότερους Βρετανούς μυθιστοριογράφους μετά το 1945\". Ζει στο Γουίλτσιρ με τη δεύτερη σύζυγό του, Ναντίρα (έχοντας χάσει την πρώτη του σύζυγο, Patricia Hale, από καρκίνο το 1996).",
|
10
10
|
"award": [
|
@@ -9,7 +9,7 @@
|
|
9
9
|
"name": "Γραμματικάκης, Γιώργος",
|
10
10
|
"firstname": "Γιώργος",
|
11
11
|
"lastname": "Γραμματικάκης",
|
12
|
-
"
|
12
|
+
"extra_info": null,
|
13
13
|
"image": "http://www.biblionet.gr/images/persons/3531.jpg",
|
14
14
|
"bio": "Ο Γιώργος Γραμματικάκης γεννήθηκε και πέρασε τα παιδικά του χρόνια στο Ηράκλειο της Κρήτης το 1939. Διέγραψε στη συνέχεια έναν μεγάλο κύκλο σπουδών και επιστημονικής έρευνας, για να επιστρέψει το 1982 στα πάτρια εδάφη ως καθηγητής στο Τμήμα Φυσικής του Πανεπιστημίου Κρήτης. Ενδιάμεσοι σταθμοί ήταν το Πανεπιστήμιο Αθηνών και το Imperial College του Λονδίνου, ο \"Δημόκριτος\" και το Ευρωπαϊκό Κέντρο Πυρηνικών Ερευνών (CERN) στη Γενεύη. Τα επιστημονικά του ενδιαφέροντα στρέφονται γύρω από τη δομή της ύλης και την κοσμολογία, ενώ ως επισκέπτης καθηγητής στο Πανεπιστήμιο του Harvard ασχολήθηκε επίσης με την ιστορία της επιστήμης. Συμμετείχε από την αρχή στο πείραμα \"Νέστωρ\", που προσπαθεί να ανιχνεύσει τα φαντασματικά νετρίνα στα θαλάσσια βάθη της Πύλου. Εξελέγη δύο φορές (1990-1996) Πρύτανης του Πανεπιστημίου Κρήτης, ενώ για μια τετραετία διετέλεσε Πρόεδρος του Ιονίου Πανεπιστημίου. Υπήρξε μέλος του Δ.Σ. της ΕΡΤ, και έχει συμμετάσχει σε επιτροπές εμπειρογνωμόνων για τις προοπτικές της παιδείας και της έρευνας στην Ευρωπαϊκή Ένωση. Υπήρξε επίσης Προέδρος του Μουσείου \"Νίκος Καζαντζάκης\" στην Κρήτη, ενώ πρόσφατα ορίσθηκε Αντιπρόεδρος στο Δ.Σ της Λυρικής Σκηνής. Έχει συγγράψει τα βιβλία: \"Η κόμη της Βερενίκης\" - στο οποίο και βασίσθηκε η τηλεοπτική σειρά \"Αναζητώντας την Βερενίκη\" στην ΕΤ1, \"Κοσμογραφήματα\" και \"Η αυτοβιογραφία του φωτός\", \"Συνομιλίες με το φως\", \"Ένας αστρολάβος του ουρανού και της ζωής\", ενώ άρθρα του έχουν δημοσιευθεί παλαιότερα στην εφημερίδα \"Το Βήμα\" και στη συνέχεια στην \"Ελευθεροτυπία\". Σήμερα είναι συνεργάτης του διαδικτυακού Protagon. Τα τελευταία χρόνια ασχολείται ιδιαίτερα με τη σύνδεση της Επιστήμης με τη Μουσική. Οι σχετικές εκδηλώσεις, με τη συνεργασία κορυφαίων μουσικών, έχουν παρουσιασθεί σε πολλά μέρη της Ελλάδος, αλλά και στο Μέγαρο Μουσικής Αθηνών και Θεσσαλονίκης. Έχει τιμηθεί με ποικίλες διακρίσεις, και πρόσφατα από την Ένωση Ελλήνων Φυσικών για τη συμβολή του στην Παιδεία και την Επιστήμη.",
|
15
15
|
"award": [
|
@@ -24,7 +24,7 @@
|
|
24
24
|
"name": "Τραχανάς, Στέφανος Λ.",
|
25
25
|
"firstname": "Στέφανος Λ.",
|
26
26
|
"lastname": "Τραχανάς",
|
27
|
-
"
|
27
|
+
"extra_info": null,
|
28
28
|
"image": "http://www.biblionet.gr/images/persons/3406.jpg",
|
29
29
|
"bio": "Ο Στέφανος Τραχανάς γεννήθηκε στην Ιεράπετρα της Κρήτης. Σπούδασε στο Εθνικό Μετσόβειο Πολυτεχνείο και συνέχισε με μεταπτυχιακές σπουδές στο Πανεπιστήμιο του Harvard, στον τομέα της φυσικής. Το 1983 άρχισε να διδάσκει στο Πανεπιστήμιο Κρήτης, σε προπτυχιακό και σε μεταπτυχιακό επίπεδο (όπως, λ.χ., στο θερινό σχολείο φυσικής). Από το 1985 είναι διευθυντής των Πανεπιστημιακών Εκδόσεων Κρήτης, που ανήκουν διοικητικά στο Ίδρυμα Τεχνολογίας και Έρευνας (ΙΤΕ). Είναι συγγραφέας βιβλίων που θεωρούνται, σήμερα, κλασικά και διδάσκονται σε αρκετά πανεπιστημιακά τμήματα: \"Κβαντομηχανική Ι, ΙΙ & ΙΙΙ\", \"Σχετικιστική κβαντομηχανική\", \"Προβλήματα κβαντομηχανικής\", \"Ακριβώς επιλύσιμα κβαντομηχανικά δυναμικά\", \"Συνήθεις διαφορικές εξισώσεις\", \"Μερικές διαφορικές εξισώσεις\", \"Mathematica και εφαρμογές\", καθώς και ενός κεφαλαίου με τίτλο \"Η βιολογική καταλληλότητα των φυσικών νόμων: τύχη ή αναγκαιότητα;\" στο βιβλίο \"Η Φυσική σήμερα\", τ. ΙΙ του Ε. Ν. Οικονόμου (εκδόσεις ΠΕΚ).(φωτογραφία: Κανάρης Τσίγκανος)",
|
30
30
|
"award": [
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bookshark
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.beta.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dimitris Klisiaris
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -76,16 +76,16 @@ dependencies:
|
|
76
76
|
name: bundler
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
|
-
- - "
|
79
|
+
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: '1.
|
81
|
+
version: '1.9'
|
82
82
|
type: :development
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
|
-
- - "
|
86
|
+
- - "~>"
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: '1.
|
88
|
+
version: '1.9'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: rake
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -106,14 +106,14 @@ dependencies:
|
|
106
106
|
requirements:
|
107
107
|
- - "~>"
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: '3.
|
109
|
+
version: '3.2'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
112
|
version_requirements: !ruby/object:Gem::Requirement
|
113
113
|
requirements:
|
114
114
|
- - "~>"
|
115
115
|
- !ruby/object:Gem::Version
|
116
|
-
version: '3.
|
116
|
+
version: '3.2'
|
117
117
|
description: Extracts book, author, publisher and category metadata from biblionet.gr.
|
118
118
|
email:
|
119
119
|
- dklisiaris@gmail.com
|
@@ -179,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
179
179
|
version: 1.3.1
|
180
180
|
requirements: []
|
181
181
|
rubyforge_project:
|
182
|
-
rubygems_version: 2.4.
|
182
|
+
rubygems_version: 2.4.6
|
183
183
|
signing_key:
|
184
184
|
specification_version: 4
|
185
185
|
summary: Book metadata extractor from biblionet.gr.
|