elibri_onix 0.5.15 → 0.5.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/elibri_onix/onix_3_0/file_info.rb +38 -11
- data/lib/elibri_onix/onix_3_0/product.rb +25 -9
- data/lib/elibri_onix/onix_3_0/sales_restriction.rb +10 -6
- data/lib/elibri_onix/version.rb +1 -1
- data/test/elibri_ebook_files_test.rb +1 -1
- data/test/elibri_exclusive_distributor_test.rb +11 -0
- data/test/elibri_extensions_test.rb +0 -1
- data/test/elibri_formats_and_protection_test.rb +2 -2
- data/test/elibri_onix_release_3_0_onix_message_test.rb +17 -19
- data/test/elibri_production_country_test.rb +12 -0
- data/test/fixtures/all_possible_tags.xml +1 -2
- data/test/fixtures/onix_announced_product_example.xml +1 -2
- data/test/fixtures/onix_audiobook_example.xml +2 -3
- data/test/fixtures/onix_board_game_example.xml +2 -2
- data/test/fixtures/onix_cn_production_country_example.xml +49 -0
- data/test/fixtures/onix_ebook_with_files_example.xml +111 -80
- data/test/fixtures/onix_epub_details_example.xml +1 -1
- data/test/fixtures/onix_exclusive_distributor_example.xml +62 -0
- data/test/fixtures/onix_preorder_product_example.xml +2 -4
- data/test/fixtures/onix_published_product_example.xml +1 -2
- data/test/fixtures/onix_puzzle_example.xml +2 -2
- data/test/fixtures/onix_sale_restrictions_example.xml +1 -2
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca0645c584580d719c89e9b25ff1908512fe60640860f8db37d1a9f38e27f46f
|
4
|
+
data.tar.gz: ee00d482ce6d81af64b2d0298dad3246defe9a95e254b3f98b6c07b3641b1545
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5d9f3bc6101130b9dba2636d17513d46333e178cb565a3bd241bfd54452ee0fad96f1e64a1cf1e079ad0bdfcddb07a1cc878804991663498f9c5bfc2f7be263d
|
7
|
+
data.tar.gz: 62a3deb1650b9fbee4e97a471db03737a1d0c992b6cc14318c82742d088624419d13cdc06d154a80034782ea6c156dbdf805c3e0886cfb31651d8a885648cb58
|
@@ -5,32 +5,59 @@ module Elibri
|
|
5
5
|
module Release_3_0
|
6
6
|
|
7
7
|
class FileInfo
|
8
|
-
|
8
|
+
|
9
9
|
#Informacja o fragmencie publikacji (e-book)
|
10
|
-
|
10
|
+
|
11
11
|
ATTRIBUTES = [
|
12
12
|
:file_type, :file_size, :md5, :updated_at
|
13
13
|
]
|
14
|
-
|
14
|
+
|
15
15
|
RELATIONS = [
|
16
16
|
:inspect_include_fields
|
17
17
|
]
|
18
|
-
|
18
|
+
|
19
19
|
attr_accessor :file_type, :file_size, :md5, :updated_at, :eid, :to_xml
|
20
|
-
|
20
|
+
|
21
21
|
def initialize(data)
|
22
22
|
@to_xml = data.to_s
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
|
24
|
+
data.css("ResourceFileDate").each do |date|
|
25
|
+
if date.css("ResourceFileDateRole").first.inner_text == Elibri::ONIX::Dict::Release_3_0::ContentDateRole::LAST_UPDATED
|
26
|
+
@updated_at = Time.parse(date.css("Date").first.inner_text)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
data.css("ResourceFileFeature").each do |feat|
|
31
|
+
ftype = feat.css("ResourceFileFeatureType").first.inner_text
|
32
|
+
fvalue = feat.css("ResourceFileFeatureValue").first.inner_text
|
33
|
+
|
34
|
+
if ftype == Elibri::ONIX::Dict::Release_3_0::ResourceFileFeatureType::EXACT_FILE_SIZE
|
35
|
+
@file_size = fvalue.to_i
|
36
|
+
elsif ftype == Elibri::ONIX::Dict::Release_3_0::ResourceFileFeatureType::MD5
|
37
|
+
@md5 = fvalue
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
fname = data.css("ResourceFileLink").first&.inner_text
|
42
|
+
if fname
|
43
|
+
if File.extname(fname) == ".zip"
|
44
|
+
@file_type = "mp3_in_zip"
|
45
|
+
else
|
46
|
+
@file_type = File.extname(fname)[1..-1]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
data.css("ResourceIdentifier").each do |ident|
|
51
|
+
if ident.css("ResourceIDType").first&.inner_text == Elibri::ONIX::Dict::Release_3_0::ResourceIDType::PROPRIETARY
|
52
|
+
@eid = ident.css("IDValue").first&.inner_text&.to_i
|
53
|
+
end
|
54
|
+
end
|
28
55
|
end
|
29
56
|
|
30
57
|
def inspect_include_fields
|
31
58
|
[:file_type]
|
32
59
|
end
|
33
|
-
|
60
|
+
|
34
61
|
end
|
35
62
|
|
36
63
|
end
|
@@ -207,6 +207,13 @@ module Elibri
|
|
207
207
|
#max. czas gry - gry planszowe
|
208
208
|
attr_reader :playing_time_to
|
209
209
|
|
210
|
+
#cn code
|
211
|
+
attr_reader :cn_code
|
212
|
+
|
213
|
+
#kraj produkcji
|
214
|
+
attr_reader :country_of_manufacture
|
215
|
+
|
216
|
+
|
210
217
|
#:nodoc:
|
211
218
|
attr_reader :text_contents
|
212
219
|
attr_reader :file_size
|
@@ -288,7 +295,8 @@ module Elibri
|
|
288
295
|
@cover_price = BigDecimal(data.at_xpath('elibri:CoverPrice').try(:text)) if data.at_xpath('elibri:CoverPrice')
|
289
296
|
@vat = data.at_xpath('elibri:Vat').try(:text).try(:to_i)
|
290
297
|
else
|
291
|
-
|
298
|
+
#00 - Supplier role - Unspecified
|
299
|
+
price_sd = @supply_details.find { |sd| sd.supplier && ["00", Elibri::ONIX::Dict::Release_3_0::SupplierRole::PUB_TO_RET].include?(sd.supplier.role) }
|
292
300
|
if price_sd && price_sd.price && price_sd.price && price_sd.price.type == Elibri::ONIX::Dict::Release_3_0::PriceTypeCode::RRP_WITH_TAX
|
293
301
|
@vat = price_sd.price.tax_rate_percent.to_i
|
294
302
|
@cover_price = price_sd.price.amount
|
@@ -318,11 +326,7 @@ module Elibri
|
|
318
326
|
end
|
319
327
|
|
320
328
|
end
|
321
|
-
|
322
|
-
@file_infos = data.at_xpath("elibri:masters").xpath("elibri:master").map { |node| FileInfo.new(node) }
|
323
|
-
rescue
|
324
|
-
@file_infos = []
|
325
|
-
end
|
329
|
+
@file_infos = data.css("BodyResource").map { |node| FileInfo.new(node) }
|
326
330
|
after_parse
|
327
331
|
end
|
328
332
|
|
@@ -367,6 +371,8 @@ module Elibri
|
|
367
371
|
end
|
368
372
|
|
369
373
|
def descriptive_details_setup(data)
|
374
|
+
@country_of_manufacture = data.at_css("CountryOfManufacture").try(:text)
|
375
|
+
|
370
376
|
@product_composition = data.at_css('ProductComposition').try(:text)
|
371
377
|
@product_form = data.at_css('ProductForm').try(:text)
|
372
378
|
if @product_form
|
@@ -387,9 +393,14 @@ module Elibri
|
|
387
393
|
end
|
388
394
|
|
389
395
|
end
|
390
|
-
|
391
|
-
|
392
|
-
|
396
|
+
data.css('ProductClassification').each do |cl|
|
397
|
+
cl_type = cl.at_css('ProductClassificationType').text
|
398
|
+
cl_value = cl.at_css('ProductClassificationCode').text
|
399
|
+
if cl_type == Elibri::ONIX::Dict::Release_3_0::ProductClassificationType::PKWIU
|
400
|
+
@pkwiu = cl_value
|
401
|
+
elsif cl_type == Elibri::ONIX::Dict::Release_3_0::ProductClassificationType::CN
|
402
|
+
@cn_code = cl_value
|
403
|
+
end
|
393
404
|
end
|
394
405
|
@measures = data.css('Measure').map { |measure_data| Measure.new(measure_data) }
|
395
406
|
@title_details = data.children.find_all { |node| node.name == 'TitleDetail' }.map { |title_data| TitleDetail.new(title_data) }
|
@@ -443,7 +454,12 @@ module Elibri
|
|
443
454
|
else
|
444
455
|
@sale_restricted_to_poland = false
|
445
456
|
end
|
457
|
+
end
|
446
458
|
|
459
|
+
def exclusive_distributor_onix_code
|
460
|
+
if @sales_restrictions.size > 0
|
461
|
+
@sales_restrictions[0].outlet_code
|
462
|
+
end
|
447
463
|
end
|
448
464
|
|
449
465
|
def sales_restrictions?
|
@@ -7,25 +7,29 @@ module Elibri
|
|
7
7
|
|
8
8
|
class SalesRestriction
|
9
9
|
|
10
|
-
#from ONIX documentation:
|
10
|
+
#from ONIX documentation:
|
11
11
|
#A group of data elements which together identify a non-territorial sales restriction which a publisher applies to a product.
|
12
12
|
#Optional and repeatable.
|
13
13
|
|
14
14
|
include HashId
|
15
|
-
|
15
|
+
|
16
16
|
ATTRIBUTES = [
|
17
17
|
:type, :outlet_name, :end_date
|
18
18
|
]
|
19
|
-
|
19
|
+
|
20
20
|
RELATIONS = []
|
21
|
-
|
22
|
-
attr_accessor :type, :outlet_name, :end_date, :to_xml
|
23
|
-
|
21
|
+
|
22
|
+
attr_accessor :type, :outlet_name, :outlet_code, :end_date, :to_xml
|
23
|
+
|
24
24
|
def initialize(data)
|
25
25
|
@to_xml = data.to_s
|
26
26
|
@type = data.at_css('SalesRestrictionType').try(:text).try(:to_i)
|
27
27
|
if data.at_css('SalesOutlet')
|
28
28
|
@outlet_name = data.at_css('SalesOutlet').at_css('SalesOutletName').try(:text)
|
29
|
+
outlet_id_struct = data.at_css('SalesOutlet').at_css('SalesOutletIdentifier')
|
30
|
+
if outlet_id_struct && outlet_id_struct.at_css("SalesOutletIDType").try(:text) == "03"
|
31
|
+
@outlet_code = outlet_id_struct.at_css("IDValue").try(:text)
|
32
|
+
end
|
29
33
|
end
|
30
34
|
@end_date = Date.parse(data.at_css('EndDate').try(:text)) if data.at_css('EndDate')
|
31
35
|
end
|
data/lib/elibri_onix/version.rb
CHANGED
@@ -12,7 +12,7 @@ describe Elibri::ONIX::Release_3_0::ONIXMessage do
|
|
12
12
|
assert_equal "4b145ff46636b06f49225abdab70927f", e.md5
|
13
13
|
assert_equal "epub_excerpt", e.file_type
|
14
14
|
assert_equal Time.parse("2012-12-30 15:18 +00:00"), e.updated_at
|
15
|
-
assert_equal "https://www.elibri.com.pl/excerpt/767", e.link
|
15
|
+
assert_equal "https://www.elibri.com.pl/excerpt/767/4b145ff46636b06f49225abdab70927f/fragment.epub", e.link
|
16
16
|
assert_equal 767, e.eid
|
17
17
|
|
18
18
|
assert_equal 2, product.file_infos.size
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Elibri::ONIX::Release_3_0::ONIXMessage do
|
4
|
+
|
5
|
+
it "should be able to parse information about exclusive distrubution restriction" do
|
6
|
+
product = load_fixture("onix_exclusive_distributor_example.xml")
|
7
|
+
assert product.sales_restrictions?
|
8
|
+
assert_equal "EMP", product.exclusive_distributor_onix_code
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
@@ -7,7 +7,7 @@ describe Elibri::ONIX::Release_3_0::ONIXMessage do
|
|
7
7
|
|
8
8
|
product = load_fixture("onix_epub_details_example.xml")
|
9
9
|
assert_equal ["EPUB", "MOBI"], product.digital_formats
|
10
|
-
assert_equal "
|
11
|
-
assert_equal "
|
10
|
+
assert_equal "watermark", product.technical_protection
|
11
|
+
assert_equal "02", product.technical_protection_onix_code
|
12
12
|
end
|
13
13
|
end
|
@@ -6,38 +6,36 @@ describe Elibri::ONIX::Release_3_0::ONIXMessage do
|
|
6
6
|
|
7
7
|
it "should be able to parse all attributes supported in Elibri" do
|
8
8
|
xml_string = File.read File.join(File.dirname(__FILE__), "..", "test", "fixtures", "all_possible_tags.xml")
|
9
|
-
|
9
|
+
|
10
10
|
onix = Elibri::ONIX::Release_3_0::ONIXMessage.new(xml_string)
|
11
11
|
assert_equal '3.0', onix.release
|
12
12
|
assert_equal 'Elibri.com.pl', onix.header.sender.sender_name
|
13
|
-
assert_equal 'Tomasz Meka', onix.header.sender.contact_name
|
14
|
-
assert_equal 'kontakt@elibri.com.pl', onix.header.sender.email_address
|
15
13
|
assert_equal Date.new(2011, 10, 5), onix.header.sent_date_time
|
16
14
|
|
17
|
-
assert_equal 1, onix.products.size
|
15
|
+
assert_equal 1, onix.products.size
|
18
16
|
|
19
17
|
product = onix.products.first
|
20
18
|
|
21
|
-
assert_equal 'miękka', product.cover_type
|
19
|
+
assert_equal 'miękka', product.cover_type
|
22
20
|
assert_equal 12.99, product.cover_price
|
23
21
|
assert_equal 5, product.vat
|
24
22
|
assert_equal '58.11.1', product.pkwiu
|
25
23
|
|
26
24
|
assert_equal 'fdb8fa072be774d97a97', product.record_reference
|
27
25
|
assert_equal '03', product.notification_type
|
28
|
-
assert_equal "Record had many errors", product.deletion_text
|
26
|
+
assert_equal "Record had many errors", product.deletion_text
|
29
27
|
|
30
28
|
assert_equal '9788324799992', product.isbn13
|
31
29
|
assert_equal '9788324788882', product.ean
|
32
30
|
|
33
31
|
assert_equal({"Gildia.pl" => "GILD-123", "PWN" => "pl.pwn.ksiegarnia.produkt.id.76734"}, product.proprietary_identifiers)
|
34
32
|
|
35
|
-
assert_equal "00", product.product_composition
|
33
|
+
assert_equal "00", product.product_composition
|
36
34
|
assert_equal 'BA', product.product_form
|
37
35
|
|
38
|
-
assert_equal 4, product.measures.size
|
36
|
+
assert_equal 4, product.measures.size
|
39
37
|
|
40
|
-
assert_equal 195, product.height
|
38
|
+
assert_equal 195, product.height
|
41
39
|
assert_equal 125, product.width
|
42
40
|
assert_equal 20, product.thickness
|
43
41
|
assert_equal 90, product.weight
|
@@ -49,10 +47,10 @@ describe Elibri::ONIX::Release_3_0::ONIXMessage do
|
|
49
47
|
assert_equal 'Trade title', product.trade_title
|
50
48
|
assert_equal 'Collection title (Vol. 1). Title. Subtitle (part 5)', product.full_title
|
51
49
|
|
52
|
-
assert_equal 1, product.contributors.size
|
50
|
+
assert_equal 1, product.contributors.size
|
53
51
|
product.contributors.first.tap do |sienkiewicz|
|
54
|
-
assert_equal 'B06', sienkiewicz.role
|
55
|
-
assert_equal 'pol', sienkiewicz.from_language
|
52
|
+
assert_equal 'B06', sienkiewicz.role
|
53
|
+
assert_equal 'pol', sienkiewicz.from_language
|
56
54
|
assert_equal "prof. Henryk von Sienkiewicz Ibrahim", sienkiewicz.person_name
|
57
55
|
assert_equal "prof.", sienkiewicz.titles_before_names
|
58
56
|
assert_equal "Henryk", sienkiewicz.names_before_key
|
@@ -71,7 +69,7 @@ describe Elibri::ONIX::Release_3_0::ONIXMessage do
|
|
71
69
|
assert_equal 250, product.number_of_pages
|
72
70
|
assert_equal 32, product.number_of_illustrations
|
73
71
|
|
74
|
-
assert_equal 7, product.reading_age_from
|
72
|
+
assert_equal 7, product.reading_age_from
|
75
73
|
assert_equal 25, product.reading_age_to
|
76
74
|
|
77
75
|
assert_equal 1, product.text_contents.size
|
@@ -91,7 +89,7 @@ describe Elibri::ONIX::Release_3_0::ONIXMessage do
|
|
91
89
|
|
92
90
|
assert_equal 'National Geographic', product.imprint_name
|
93
91
|
|
94
|
-
assert_equal 'GREG', product.publisher.name
|
92
|
+
assert_equal 'GREG', product.publisher.name
|
95
93
|
assert_equal "01", product.publisher.role
|
96
94
|
|
97
95
|
assert_equal "04", product.publishing_status
|
@@ -109,24 +107,24 @@ describe Elibri::ONIX::Release_3_0::ONIXMessage do
|
|
109
107
|
assert_equal 2, product.related_products.size
|
110
108
|
|
111
109
|
product.related_products.first.tap do |first_related|
|
112
|
-
#assert_equal 24, first_related.relation_code
|
110
|
+
#assert_equal 24, first_related.relation_code
|
113
111
|
#assert_equal '9788324705818', first_related.isbn13
|
114
112
|
#assert_equal({"Gildia.pl" => "Title of facsimile"}, first_related.proprietary_identifiers)
|
115
113
|
end
|
116
114
|
|
117
115
|
product.related_products[1].tap do |second_related|
|
118
|
-
#assert_equal 23, second_related.relation_code
|
116
|
+
#assert_equal 23, second_related.relation_code
|
119
117
|
#assert_equal '9788324799992', second_related.isbn13
|
120
118
|
#assert_equal({"PWN" => "Title of similar book"}, second_related.proprietary_identifiers)
|
121
119
|
end
|
122
120
|
|
123
|
-
assert_equal 2, product.supply_details.size
|
121
|
+
assert_equal 2, product.supply_details.size
|
124
122
|
|
125
123
|
product.supply_details.first.tap do |supply_detail|
|
126
124
|
supply_detail.supplier.tap do |supplier|
|
127
125
|
assert_equal "03", supplier.role
|
128
126
|
assert_equal '5213359408', supplier.nip
|
129
|
-
assert_equal 'Gildia.pl', supplier.name
|
127
|
+
assert_equal 'Gildia.pl', supplier.name
|
130
128
|
assert_equal "22 631 40 83", supplier.telephone_number
|
131
129
|
assert_equal "bok@gildia.pl", supplier.email_address
|
132
130
|
assert_equal "http://gildia.pl", supplier.website
|
@@ -140,7 +138,7 @@ describe Elibri::ONIX::Release_3_0::ONIXMessage do
|
|
140
138
|
assert_equal "02", price.type
|
141
139
|
assert_equal 20, price.minimum_order_quantity
|
142
140
|
assert_equal 12.99, price.amount
|
143
|
-
assert_equal 7, price.vat
|
141
|
+
assert_equal 7, price.vat
|
144
142
|
assert_equal 'PLN', price.currency_code
|
145
143
|
assert_equal "02", price.printed_on_product
|
146
144
|
assert price.printed_on_product?
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe Elibri::ONIX::Release_3_0::ONIXMessage do
|
4
|
+
|
5
|
+
it "should be able to parse production country and cn info" do
|
6
|
+
product = load_fixture("onix_cn_production_country_example.xml")
|
7
|
+
|
8
|
+
assert_equal "4901", product.cn_code
|
9
|
+
assert_equal "DE", product.country_of_manufacture
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
@@ -56,8 +56,7 @@
|
|
56
56
|
<PublishingStatus>02</PublishingStatus>
|
57
57
|
<PublishingDate>
|
58
58
|
<PublishingDateRole>01</PublishingDateRole>
|
59
|
-
<
|
60
|
-
<Date>2011</Date>
|
59
|
+
<Date dateformat="05">2011</Date>
|
61
60
|
</PublishingDate>
|
62
61
|
<SalesRights>
|
63
62
|
<SalesRightsType>01</SalesRightsType>
|
@@ -58,7 +58,7 @@
|
|
58
58
|
<KeyNames>Keyes</KeyNames>
|
59
59
|
<BiographicalNote><p>
|
60
60
|
Daniel Keyes (1927-2014) – amerykański pisarz. Jego opowiadanie <em>Kwiaty dla Algernona</em> otrzymało nagrodę Hugo w 1960 roku. Rozwinięte do formy powieści pod tym samym tytułem doczekało się z kolei nagrody Nebula w roku 1966, a dwa lata później zostało zekranizowane jako <em>Charly</em>. Keyes opublikował także m.in. obsypaną nagrodami książkę non-fiction <em>Człowiek o 24 twarzach.</em></p>
|
61
|
-
|
61
|
+
|
62
62
|
</BiographicalNote>
|
63
63
|
</Contributor>
|
64
64
|
<Contributor sourcename="contributorid:221077" datestamp="20190614T0946">
|
@@ -194,12 +194,11 @@
|
|
194
194
|
<PublishingStatus>04</PublishingStatus>
|
195
195
|
<PublishingDate>
|
196
196
|
<!--PublishingDateRole: PUBLICATION_DATE--><PublishingDateRole>01</PublishingDateRole>
|
197
|
-
<!--DateFormat: YYYYMMDD
|
197
|
+
<!--DateFormat: YYYYMMDD-->
|
198
198
|
<Date dateformat="00">20190724</Date>
|
199
199
|
</PublishingDate>
|
200
200
|
<PublishingDate>
|
201
201
|
<PublishingDateRole>13</PublishingDateRole>
|
202
|
-
<DateFormat>00</DateFormat>
|
203
202
|
<Date dateformat="00">20250307</Date>
|
204
203
|
</PublishingDate>
|
205
204
|
<SalesRights>
|
@@ -116,12 +116,12 @@
|
|
116
116
|
<!--PublishingStatusCode: ACTIVE--><PublishingStatus>04</PublishingStatus>
|
117
117
|
<PublishingDate>
|
118
118
|
<!--PublishingDateRole: PUBLICATION_DATE--><PublishingDateRole>01</PublishingDateRole>
|
119
|
-
<!--DateFormat: YYYYMMDD
|
119
|
+
<!--DateFormat: YYYYMMDD-->
|
120
120
|
<Date dateformat="00">20180919</Date>
|
121
121
|
</PublishingDate>
|
122
122
|
<PublishingDate>
|
123
123
|
<!--PublishingDateRole: PREORDER_EMBARGO_DATE--><PublishingDateRole>27</PublishingDateRole>
|
124
|
-
<!--DateFormat: YYYYMMDD
|
124
|
+
<!--DateFormat: YYYYMMDD-->
|
125
125
|
<Date dateformat="00">20180905</Date>
|
126
126
|
</PublishingDate>
|
127
127
|
<SalesRights>
|
@@ -0,0 +1,49 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<ONIXMessage release="3.0" xmlns="http://ns.editeur.org/onix/3.0/reference">
|
3
|
+
<Header>
|
4
|
+
<Sender>
|
5
|
+
<SenderName>Elibri.com.pl</SenderName>
|
6
|
+
</Sender>
|
7
|
+
<SentDateTime>20210713</SentDateTime>
|
8
|
+
</Header>
|
9
|
+
<Product>
|
10
|
+
<RecordReference>xxx</RecordReference>
|
11
|
+
<NotificationType>03</NotificationType>
|
12
|
+
<RecordSourceName>elibri</RecordSourceName>
|
13
|
+
<ProductIdentifier>
|
14
|
+
<ProductIDType>15</ProductIDType>
|
15
|
+
<IDValue>9788364057434</IDValue>
|
16
|
+
</ProductIdentifier>
|
17
|
+
<DescriptiveDetail>
|
18
|
+
<ProductComposition>00</ProductComposition>
|
19
|
+
<ProductForm>BA</ProductForm>
|
20
|
+
<CountryOfManufacture>DE</CountryOfManufacture>
|
21
|
+
<ProductClassification>
|
22
|
+
<ProductClassificationType>01</ProductClassificationType>
|
23
|
+
<ProductClassificationCode>4901</ProductClassificationCode>
|
24
|
+
</ProductClassification>
|
25
|
+
<TitleDetail>
|
26
|
+
<TitleType>01</TitleType>
|
27
|
+
<TitleElement>
|
28
|
+
<TitleElementLevel>01</TitleElementLevel>
|
29
|
+
<TitleText language="pol">Horror show</TitleText>
|
30
|
+
</TitleElement>
|
31
|
+
</TitleDetail>
|
32
|
+
<Contributor>
|
33
|
+
<ContributorRole>A01</ContributorRole>
|
34
|
+
<UnnamedPersons>04</UnnamedPersons>
|
35
|
+
</Contributor>
|
36
|
+
</DescriptiveDetail>
|
37
|
+
<PublishingDetail>
|
38
|
+
<Publisher>
|
39
|
+
<PublishingRole>01</PublishingRole>
|
40
|
+
<PublisherName>Helion</PublisherName>
|
41
|
+
</Publisher>
|
42
|
+
<PublishingStatus>07</PublishingStatus>
|
43
|
+
<PublishingDate>
|
44
|
+
<PublishingDateRole>01</PublishingDateRole>
|
45
|
+
<Date dateformat="05">2014</Date>
|
46
|
+
</PublishingDate>
|
47
|
+
</PublishingDetail>
|
48
|
+
</Product>
|
49
|
+
</ONIXMessage>
|
@@ -1,20 +1,18 @@
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<ONIXMessage release="3.0" xmlns="http://ns.editeur.org/onix/3.0/reference"
|
3
|
-
<elibri:Dialect>3.0.1</elibri:Dialect>
|
2
|
+
<ONIXMessage release="3.0" xmlns="http://ns.editeur.org/onix/3.0/reference">
|
4
3
|
<Header>
|
5
4
|
<Sender>
|
6
5
|
<SenderName>Elibri.com.pl</SenderName>
|
7
|
-
<ContactName>Tomasz Meka</ContactName>
|
8
|
-
<EmailAddress>kontakt@elibri.com.pl</EmailAddress>
|
9
6
|
</Sender>
|
10
|
-
<SentDateTime>
|
7
|
+
<SentDateTime>20210716</SentDateTime>
|
11
8
|
</Header>
|
12
9
|
<Product>
|
13
|
-
<RecordReference>
|
10
|
+
<RecordReference>xxx</RecordReference>
|
14
11
|
<NotificationType>03</NotificationType>
|
12
|
+
<RecordSourceName>elibri</RecordSourceName>
|
15
13
|
<ProductIdentifier>
|
16
14
|
<ProductIDType>15</ProductIDType>
|
17
|
-
<IDValue>
|
15
|
+
<IDValue>9788364057434</IDValue>
|
18
16
|
</ProductIdentifier>
|
19
17
|
<DescriptiveDetail>
|
20
18
|
<ProductComposition>00</ProductComposition>
|
@@ -23,86 +21,119 @@
|
|
23
21
|
<TitleType>01</TitleType>
|
24
22
|
<TitleElement>
|
25
23
|
<TitleElementLevel>01</TitleElementLevel>
|
26
|
-
<TitleText>
|
24
|
+
<TitleText language="pol">Horror show</TitleText>
|
27
25
|
</TitleElement>
|
28
26
|
</TitleDetail>
|
27
|
+
<Contributor>
|
28
|
+
<ContributorRole>A01</ContributorRole>
|
29
|
+
<UnnamedPersons>04</UnnamedPersons>
|
30
|
+
</Contributor>
|
29
31
|
</DescriptiveDetail>
|
32
|
+
<CollateralDetail>
|
33
|
+
<SupportingResource>
|
34
|
+
<ResourceContentType>15</ResourceContentType>
|
35
|
+
<ContentAudience>00</ContentAudience>
|
36
|
+
<ResourceMode>04</ResourceMode>
|
37
|
+
<ResourceVersion>
|
38
|
+
<ResourceForm>02</ResourceForm>
|
39
|
+
<ResourceVersionFeature>
|
40
|
+
<ResourceVersionFeatureType>01</ResourceVersionFeatureType>
|
41
|
+
<FeatureValue>E101</FeatureValue>
|
42
|
+
</ResourceVersionFeature>
|
43
|
+
<ResourceVersionFeature>
|
44
|
+
<ResourceVersionFeatureType>06</ResourceVersionFeatureType>
|
45
|
+
<FeatureValue>4b145ff46636b06f49225abdab70927f</FeatureValue>
|
46
|
+
</ResourceVersionFeature>
|
47
|
+
<ResourceVersionFeature>
|
48
|
+
<ResourceVersionFeatureType>07</ResourceVersionFeatureType>
|
49
|
+
<FeatureValue>2100230</FeatureValue>
|
50
|
+
</ResourceVersionFeature>
|
51
|
+
<ResourceLink>https://www.elibri.com.pl/excerpt/767/4b145ff46636b06f49225abdab70927f/fragment.epub</ResourceLink>
|
52
|
+
<ContentDate>
|
53
|
+
<ContentDateRole>17</ContentDateRole>
|
54
|
+
<Date dateformat="13">20121230T1518Z</Date>
|
55
|
+
</ContentDate>
|
56
|
+
</ResourceVersion>
|
57
|
+
<ResourceVersion>
|
58
|
+
<ResourceForm>02</ResourceForm>
|
59
|
+
<ResourceVersionFeature>
|
60
|
+
<ResourceVersionFeatureType>01</ResourceVersionFeatureType>
|
61
|
+
<FeatureValue>E127</FeatureValue>
|
62
|
+
</ResourceVersionFeature>
|
63
|
+
<ResourceVersionFeature>
|
64
|
+
<ResourceVersionFeatureType>06</ResourceVersionFeatureType>
|
65
|
+
<FeatureValue>3b452923564374efebc5bfe1059f5fd2</FeatureValue>
|
66
|
+
</ResourceVersionFeature>
|
67
|
+
<ResourceVersionFeature>
|
68
|
+
<ResourceVersionFeatureType>07</ResourceVersionFeatureType>
|
69
|
+
<FeatureValue>2100244</FeatureValue>
|
70
|
+
</ResourceVersionFeature>
|
71
|
+
<ResourceLink>https://www.elibri.com.pl/excerpt/768/3b452923564374efebc5bfe1059f5fd2/fragment.mobi</ResourceLink>
|
72
|
+
<ContentDate>
|
73
|
+
<ContentDateRole>17</ContentDateRole>
|
74
|
+
<Date dateformat="13">20121230T1518Z</Date>
|
75
|
+
</ContentDate>
|
76
|
+
</ResourceVersion>
|
77
|
+
</SupportingResource>
|
78
|
+
</CollateralDetail>
|
30
79
|
<PublishingDetail>
|
31
80
|
<Publisher>
|
32
81
|
<PublishingRole>01</PublishingRole>
|
33
|
-
<
|
34
|
-
<PublisherIDType>01</PublisherIDType>
|
35
|
-
<IDTypeName>ElibriPublisherCode</IDTypeName>
|
36
|
-
<IDValue>11</IDValue>
|
37
|
-
</PublisherIdentifier>
|
38
|
-
<PublisherName>GREG</PublisherName>
|
82
|
+
<PublisherName>Helion</PublisherName>
|
39
83
|
</Publisher>
|
40
|
-
<
|
41
|
-
<
|
42
|
-
|
43
|
-
<
|
44
|
-
|
45
|
-
<RegionsIncluded>WORLD</RegionsIncluded>
|
46
|
-
</Territory>
|
47
|
-
</SalesRights>
|
84
|
+
<PublishingStatus>07</PublishingStatus>
|
85
|
+
<PublishingDate>
|
86
|
+
<PublishingDateRole>01</PublishingDateRole>
|
87
|
+
<Date dateformat="05">2014</Date>
|
88
|
+
</PublishingDate>
|
48
89
|
</PublishingDetail>
|
49
|
-
<
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
<
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
</
|
95
|
-
</
|
96
|
-
</
|
97
|
-
<elibri:preview_exists>false</elibri:preview_exists>
|
98
|
-
<elibri:SaleNotRestricted/>
|
99
|
-
<elibri:excerpts>
|
100
|
-
<elibri:excerpt md5="4b145ff46636b06f49225abdab70927f" file_size="2100230" file_type="epub_excerpt" updated_at="2012-12-30T15:18:00+00:00" id="777">https://www.elibri.com.pl/excerpt/767</elibri:excerpt>
|
101
|
-
<elibri:excerpt md5="6f534ab6ab573845bb7ab221192aa86a" file_size="2101254" file_type="mobi_excerpt" updated_at="2012-12-30T15:16:00+00:00" id="778">https://www.elibri.com.pl/excerpt/768</elibri:excerpt>
|
102
|
-
</elibri:excerpts>
|
103
|
-
<elibri:masters>
|
104
|
-
<elibri:master id="775" md5="e9353ce40eaa677f8c5d666c2f8bbb3f" file_size="4197382" file_type="epub" updated_at="2012-12-30T15:18:00+00:00"/>
|
105
|
-
<elibri:master id="776" md5="d2c75a26973a1888f241125717b166cf" file_size="5246982" file_type="mobi" updated_at="2012-12-30T15:16:00+00:00"/>
|
106
|
-
</elibri:masters>
|
90
|
+
<ProductionDetail>
|
91
|
+
<ProductionManifest>
|
92
|
+
<BodyManifest>
|
93
|
+
<BodyResource>
|
94
|
+
<SequenceNumber>1</SequenceNumber>
|
95
|
+
<ResourceIdentifier>
|
96
|
+
<ResourceIDType>01</ResourceIDType>
|
97
|
+
<IDTypeName>elibri internal numerical ID</IDTypeName>
|
98
|
+
<IDValue>765</IDValue>
|
99
|
+
</ResourceIdentifier>
|
100
|
+
<ResourceFileFeature>
|
101
|
+
<ResourceFileFeatureType>07</ResourceFileFeatureType>
|
102
|
+
<ResourceFileFeatureValue>4197382</ResourceFileFeatureValue>
|
103
|
+
</ResourceFileFeature>
|
104
|
+
<ResourceFileFeature>
|
105
|
+
<ResourceFileFeatureType>06</ResourceFileFeatureType>
|
106
|
+
<ResourceFileFeatureValue>e9353ce40eaa677f8c5d666c2f8bbb3f</ResourceFileFeatureValue>
|
107
|
+
</ResourceFileFeature>
|
108
|
+
<ResourceFileLink>pan-tadeusz.epub</ResourceFileLink>
|
109
|
+
<ResourceFileDate>
|
110
|
+
<ResourceFileDateRole>17</ResourceFileDateRole>
|
111
|
+
<Date dateformat="13">20121230T1518Z</Date>
|
112
|
+
</ResourceFileDate>
|
113
|
+
</BodyResource>
|
114
|
+
<BodyResource>
|
115
|
+
<SequenceNumber>2</SequenceNumber>
|
116
|
+
<ResourceIdentifier>
|
117
|
+
<ResourceIDType>01</ResourceIDType>
|
118
|
+
<IDTypeName>elibri internal numerical ID</IDTypeName>
|
119
|
+
<IDValue>2</IDValue>
|
120
|
+
</ResourceIdentifier>
|
121
|
+
<ResourceFileFeature>
|
122
|
+
<ResourceFileFeatureType>07</ResourceFileFeatureType>
|
123
|
+
<ResourceFileFeatureValue>9177122</ResourceFileFeatureValue>
|
124
|
+
</ResourceFileFeature>
|
125
|
+
<ResourceFileFeature>
|
126
|
+
<ResourceFileFeatureType>06</ResourceFileFeatureType>
|
127
|
+
<ResourceFileFeatureValue>44452923564374efebc5bfe1059f5fb8</ResourceFileFeatureValue>
|
128
|
+
</ResourceFileFeature>
|
129
|
+
<ResourceFileLink>pan-tadeusz.mobi</ResourceFileLink>
|
130
|
+
<ResourceFileDate>
|
131
|
+
<ResourceFileDateRole>17</ResourceFileDateRole>
|
132
|
+
<Date dateformat="13">20121230T1518Z</Date>
|
133
|
+
</ResourceFileDate>
|
134
|
+
</BodyResource>
|
135
|
+
</BodyManifest>
|
136
|
+
</ProductionManifest>
|
137
|
+
</ProductionDetail>
|
107
138
|
</Product>
|
108
139
|
</ONIXMessage>
|
@@ -21,7 +21,7 @@
|
|
21
21
|
<ProductForm>EA</ProductForm>
|
22
22
|
<ProductFormDetail>E101</ProductFormDetail>
|
23
23
|
<ProductFormDetail>E127</ProductFormDetail>
|
24
|
-
<EpubTechnicalProtection>
|
24
|
+
<EpubTechnicalProtection>02</EpubTechnicalProtection>
|
25
25
|
<TitleDetail>
|
26
26
|
<TitleType>01</TitleType>
|
27
27
|
<TitleElement>
|
@@ -0,0 +1,62 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<ONIXMessage release="3.0" xmlns="http://ns.editeur.org/onix/3.0/reference">
|
3
|
+
<Header>
|
4
|
+
<Sender>
|
5
|
+
<SenderName>Elibri.com.pl</SenderName>
|
6
|
+
<ContactName>Tomasz Meka</ContactName>
|
7
|
+
<EmailAddress>kontakt@elibri.com.pl</EmailAddress>
|
8
|
+
</Sender>
|
9
|
+
<SentDateTime>20111111</SentDateTime>
|
10
|
+
</Header>
|
11
|
+
<Product>
|
12
|
+
<RecordReference>fdb8fa072be774d97a97</RecordReference>
|
13
|
+
<NotificationType>03</NotificationType>
|
14
|
+
<ProductIdentifier>
|
15
|
+
<ProductIDType>15</ProductIDType>
|
16
|
+
<IDValue>9788324799992</IDValue>
|
17
|
+
</ProductIdentifier>
|
18
|
+
<DescriptiveDetail>
|
19
|
+
<ProductComposition>00</ProductComposition>
|
20
|
+
<ProductForm>EA</ProductForm>
|
21
|
+
<TitleDetail>
|
22
|
+
<TitleType>01</TitleType>
|
23
|
+
<TitleElement>
|
24
|
+
<TitleElementLevel>01</TitleElementLevel>
|
25
|
+
<TitleText>Nielegalni</TitleText>
|
26
|
+
</TitleElement>
|
27
|
+
</TitleDetail>
|
28
|
+
</DescriptiveDetail>
|
29
|
+
<PublishingDetail>
|
30
|
+
<Publisher>
|
31
|
+
<PublishingRole>01</PublishingRole>
|
32
|
+
<PublisherIdentifier>
|
33
|
+
<PublisherIDType>01</PublisherIDType>
|
34
|
+
<IDTypeName>ElibriPublisherCode</IDTypeName>
|
35
|
+
<IDValue>11</IDValue>
|
36
|
+
</PublisherIdentifier>
|
37
|
+
<PublisherName>GREG</PublisherName>
|
38
|
+
</Publisher>
|
39
|
+
<CityOfPublication>Warszawa</CityOfPublication>
|
40
|
+
<PublishingStatus>04</PublishingStatus>
|
41
|
+
<PublishingDate>
|
42
|
+
<PublishingDateRole>01</PublishingDateRole>
|
43
|
+
<Date dateformat="00">20120712</Date>
|
44
|
+
</PublishingDate>
|
45
|
+
<SalesRights>
|
46
|
+
<SalesRightsType>01</SalesRightsType>
|
47
|
+
<Territory>
|
48
|
+
<RegionsIncluded>WORLD</RegionsIncluded>
|
49
|
+
</Territory>
|
50
|
+
</SalesRights>
|
51
|
+
<SalesRestriction>
|
52
|
+
<SalesRestrictionType>04</SalesRestrictionType>
|
53
|
+
<SalesOutlet>
|
54
|
+
<SalesOutletIdentifier>
|
55
|
+
<SalesOutletIDType>03</SalesOutletIDType>
|
56
|
+
<IDValue>EMP</IDValue>
|
57
|
+
</SalesOutletIdentifier>
|
58
|
+
</SalesOutlet>
|
59
|
+
</SalesRestriction>
|
60
|
+
</PublishingDetail>
|
61
|
+
</Product>
|
62
|
+
</ONIXMessage>
|
@@ -41,13 +41,11 @@
|
|
41
41
|
<PublishingStatus>02</PublishingStatus>
|
42
42
|
<PublishingDate>
|
43
43
|
<PublishingDateRole>01</PublishingDateRole>
|
44
|
-
<
|
45
|
-
<Date>20110210</Date>
|
44
|
+
<Date dateformat="00">20110210</Date>
|
46
45
|
</PublishingDate>
|
47
46
|
<PublishingDate>
|
48
47
|
<PublishingDateRole>27</PublishingDateRole>
|
49
|
-
<
|
50
|
-
<Date>20110201</Date>
|
48
|
+
<Date dateformat="00">20110201</Date>
|
51
49
|
</PublishingDate>
|
52
50
|
<SalesRights>
|
53
51
|
<SalesRightsType>01</SalesRightsType>
|
@@ -41,8 +41,7 @@
|
|
41
41
|
<PublishingStatus>04</PublishingStatus>
|
42
42
|
<PublishingDate>
|
43
43
|
<PublishingDateRole>01</PublishingDateRole>
|
44
|
-
<
|
45
|
-
<Date>201102</Date>
|
44
|
+
<Date dateformat="01">201102</Date>
|
46
45
|
</PublishingDate>
|
47
46
|
<SalesRights>
|
48
47
|
<SalesRightsType>01</SalesRightsType>
|
@@ -102,12 +102,12 @@
|
|
102
102
|
<!--PublishingStatusCode: ACTIVE--><PublishingStatus>04</PublishingStatus>
|
103
103
|
<PublishingDate>
|
104
104
|
<!--PublishingDateRole: PUBLICATION_DATE--><PublishingDateRole>01</PublishingDateRole>
|
105
|
-
<!--DateFormat: YYYYMMDD
|
105
|
+
<!--DateFormat: YYYYMMDD-->
|
106
106
|
<Date dateformat="00">20190227</Date>
|
107
107
|
</PublishingDate>
|
108
108
|
<PublishingDate>
|
109
109
|
<!--PublishingDateRole: PREORDER_EMBARGO_DATE--><PublishingDateRole>27</PublishingDateRole>
|
110
|
-
<!--DateFormat: YYYYMMDD
|
110
|
+
<!--DateFormat: YYYYMMDD-->
|
111
111
|
<Date dateformat="00">20190213</Date>
|
112
112
|
</PublishingDate>
|
113
113
|
<SalesRights>
|
@@ -41,8 +41,7 @@
|
|
41
41
|
<PublishingStatus>04</PublishingStatus>
|
42
42
|
<PublishingDate>
|
43
43
|
<PublishingDateRole>01</PublishingDateRole>
|
44
|
-
<
|
45
|
-
<Date>20120712</Date>
|
44
|
+
<Date dateformat="00">20120712</Date>
|
46
45
|
</PublishingDate>
|
47
46
|
<SalesRights>
|
48
47
|
<SalesRightsType>01</SalesRightsType>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elibri_onix
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marcin Urbanski
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2024-04-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -208,6 +208,7 @@ files:
|
|
208
208
|
- test/elibri_contributors_test.rb
|
209
209
|
- test/elibri_ebook_files_test.rb
|
210
210
|
- test/elibri_edition_test.rb
|
211
|
+
- test/elibri_exclusive_distributor_test.rb
|
211
212
|
- test/elibri_extensions_test.rb
|
212
213
|
- test/elibri_extent_test.rb
|
213
214
|
- test/elibri_formats_and_protection_test.rb
|
@@ -220,6 +221,7 @@ files:
|
|
220
221
|
- test/elibri_onix_test.rb
|
221
222
|
- test/elibri_product_form_features_test.rb
|
222
223
|
- test/elibri_product_form_test.rb
|
224
|
+
- test/elibri_production_country_test.rb
|
223
225
|
- test/elibri_publisher_info_test.rb
|
224
226
|
- test/elibri_publishing_status_test.rb
|
225
227
|
- test/elibri_record_identifiers_test.rb
|
@@ -239,6 +241,7 @@ files:
|
|
239
241
|
- test/fixtures/onix_audiobook_example.xml
|
240
242
|
- test/fixtures/onix_audiobook_extent_example.xml
|
241
243
|
- test/fixtures/onix_board_game_example.xml
|
244
|
+
- test/fixtures/onix_cn_production_country_example.xml
|
242
245
|
- test/fixtures/onix_collective_work_example.xml
|
243
246
|
- test/fixtures/onix_contributors_example.xml
|
244
247
|
- test/fixtures/onix_ebook_extent_example.xml
|
@@ -246,6 +249,7 @@ files:
|
|
246
249
|
- test/fixtures/onix_edition_example.xml
|
247
250
|
- test/fixtures/onix_elibri_extensions_example.xml
|
248
251
|
- test/fixtures/onix_epub_details_example.xml
|
252
|
+
- test/fixtures/onix_exclusive_distributor_example.xml
|
249
253
|
- test/fixtures/onix_languages_example.xml
|
250
254
|
- test/fixtures/onix_measurement_example.xml
|
251
255
|
- test/fixtures/onix_no_contributors_example.xml
|
@@ -288,7 +292,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
288
292
|
- !ruby/object:Gem::Version
|
289
293
|
version: '0'
|
290
294
|
requirements: []
|
291
|
-
rubygems_version: 3.
|
295
|
+
rubygems_version: 3.1.6
|
292
296
|
signing_key:
|
293
297
|
specification_version: 4
|
294
298
|
summary: EDItEUR ONIX format subset implementation used in Elibri publication system
|