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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 86da0016db68373dc847457106fcddacbd8a62f2
4
- data.tar.gz: f1127ec79a44ce2e6ba297bff7af9cccb686597c
3
+ metadata.gz: ff97d12d21d7678e46504e23a91a7446511de2b7
4
+ data.tar.gz: 44334a7a91be7c1d03490777be58125b27cca267
5
5
  SHA512:
6
- metadata.gz: b645206269b91d344d392fcbad2d547210bbcd57d3628d8f60ce2e31638a030cb3975326acd057b29d9b4739e30396885243c701a45662b3c4d5450b774a2e4d
7
- data.tar.gz: 1529775eb72d0fc3277491db186c4d1e6cdcf2284f8fabca8b18c4c75f5d7a6ce2b79df87a57a806ca744c2aaf15ba2aa44e4c0e1f5f8a473bcafcc12cd86c07
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 metatdata.
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.alpha"
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
- "lifetime": "1892-1973",
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": [
@@ -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", ">= 1.3"
28
+ spec.add_development_dependency "bundler", "~> 1.9"
29
29
  spec.add_development_dependency "rake", "~> 10.0"
30
- spec.add_development_dependency 'rspec', "~> 3.1"
30
+ spec.add_development_dependency 'rspec', "~> 3.2"
31
31
  end
@@ -11,7 +11,7 @@ require 'bookshark/crawlers/base'
11
11
  require 'bookshark/crawlers/publisher_crawler'
12
12
 
13
13
  module Bookshark
14
- DEFAULTS = {
14
+ DEFAULTS ||= {
15
15
  site: 'biblionet',
16
16
  format: 'hash'
17
17
  }
@@ -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[:lifetime] = identity[:lifetime]
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[:lifetime] = parts[1]
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[:lifetime] = parts[2]
74
+ identity[:extra_info] = parts[2]
75
75
  end
76
76
 
77
77
  return identity
@@ -15,7 +15,7 @@ require File.expand_path(File.join(File.dirname(__FILE__), '../storage', 'file_m
15
15
  module Biblionet
16
16
  module Extractors
17
17
 
18
- BASE_URL = "http://www.biblionet.gr"
18
+ BASE_URL ||= "http://www.biblionet.gr"
19
19
 
20
20
  class Base
21
21
  include FileManager
@@ -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[:website] = headquarters_hash[:website].split(',').map(&:strip) if headquarters_hash[:website].include? ','
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
- bookstores_hash = Hash.new { |h,k| h[k] = {} }
107
- address_array = []
108
- tel_array = []
109
-
110
- # Defaunt key in case there is none.
111
- key = 'Βιβλιοπωλείο'
112
-
113
- @nodeset.css('//p[align="justify"]').inner_html.split('<br>').map(&:strip).reject(&:empty?).each do |item|
114
- regex_tel = /\d{3} \d{7}/
115
- regex_tk = /\d{3} \d{2}/
116
- regex_email = /([\w+\-].?)+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+/i
117
- 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
118
-
119
- if item.end_with?(":")
120
- key = item[0..-2]
121
- address_array = []
122
- tel_array = []
123
- elsif (item.start_with?("Fax") or item.start_with?("fax")) and item =~ regex_tel
124
- bookstores_hash[key][:fax] = item.gsub(/[^\d{3} \d{2}]/, '').strip
125
- elsif item =~ regex_tel
126
- tel_array << item.gsub(/[^\d{3} \d{2}]/, '').strip
127
- bookstores_hash[key][:telephone] = tel_array
128
- elsif item =~ regex_tk
129
- address_array << item.gsub(/,$/, '').strip
130
- bookstores_hash[key][:address] = address_array
131
- elsif item =~ regex_email
132
- bookstores_hash[key][:email] = (regex_email.match(item))[0]
133
- elsif item =~ regex_url
134
- bookstores_hash[key][:website] = item[regex_url,1]
135
- else
136
- address_array << item.gsub(/,$/, '').strip
137
- bookstores_hash[key][:address] = address_array
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
- end
141
-
142
- return bookstores_hash
143
- end
155
+
156
+ return bookstores_hash
157
+ end
144
158
 
145
159
  end
146
160
 
@@ -3,7 +3,7 @@ require 'json'
3
3
 
4
4
  module FileManager
5
5
 
6
- DEFAULTS = {
6
+ DEFAULTS ||= {
7
7
  path: '',
8
8
  all: false,
9
9
  extension: '',
@@ -1,3 +1,3 @@
1
1
  module Bookshark
2
- VERSION = "1.0.0.alpha.7"
2
+ VERSION = "1.0.0.beta.2"
3
3
  end
@@ -4,7 +4,7 @@
4
4
  "name": "Naipaul, V. S.",
5
5
  "firstname": "V. S.",
6
6
  "lastname": "Naipaul",
7
- "lifetime": "1932-",
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
- "lifetime": null,
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
- "lifetime": null,
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.alpha.7
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-03-26 00:00:00.000000000 Z
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.3'
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.3'
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.1'
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.1'
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.5
182
+ rubygems_version: 2.4.6
183
183
  signing_key:
184
184
  specification_version: 4
185
185
  summary: Book metadata extractor from biblionet.gr.