Skip to content

Commit 402dce3

Browse files
authored
Merge pull request #1153 from DaanVanVugt/bugfix/taxila_repair
repair broken taxila scrapers
2 parents fce8cc3 + 5c23ffe commit 402dce3

9 files changed

Lines changed: 1477 additions & 471 deletions

File tree

lib/ingestors/taxila/dans_ingestor.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def process_dans(url)
5454
event.keywords << value unless value.nil?
5555
end
5656

57-
event.description = data.css("p[class='dmach-acf-value dmach-acf-video-container']")[0].children.to_s
57+
event.description = data.css("p.dmach-acf-value")[0].text
5858

5959
event.url = data.css("a[id$='_link']")[0]['href'].to_s
6060

lib/ingestors/taxila/dcc_ingestor.rb

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,14 @@ def read(url)
2727
private
2828

2929
def process_dcc(url)
30-
# event_page = Nokogiri::HTML5.parse(open_url(url.to_s, raise: true)).css('main > .archive__content.grid > .column.span-4-sm.span-4-md.span-6-lg')
3130
event_page = Nokogiri::HTML5.parse(open_url(url.to_s, raise: true)).css('main > article > .archive__grid > .column > .archive__content > .column')
3231
event_page.each do |event_data|
3332
event = OpenStruct.new
3433

35-
event.url = event_data.css('h2.post-item__title > a')[0].get_attribute('href')
36-
event.title = event_data.css('h2.post-item__title > a')[0].text.strip
34+
event.url = event_data.css('h2.card__title > a')[0].get_attribute('href')
35+
event.title = event_data.css('h2.card__title > a')[0].text.strip
3736

38-
start_str = event_data.css('ul.post-item__meta > li')[0].text.strip.split('')
37+
start_str = event_data.css('dl.meta-list > div > dd')[0].text.strip.split('-')
3938
if start_str[1].include?(':')
4039
event.start = Time.zone.parse(start_str[0])
4140
event.end = Time.zone.parse(start_str[0]).beginning_of_day + Time.zone.parse(start_str[1]).seconds_since_midnight.seconds
@@ -48,8 +47,7 @@ def process_dcc(url)
4847
event.end = event.end.change(year: Time.now.year + 1)
4948
end
5049

51-
event.venue = event_data.css('ul.post-item__meta > li')[1].text.strip
52-
50+
event.venue = event_data.css('dl.meta-list > div > dd')[1].text.strip
5351
event.source = 'DCC'
5452
event.timezone = 'Amsterdam'
5553
event.set_default_times

lib/ingestors/taxila/tdcc_ingestor.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def process_tdcc(url)
3535
event.url = event_data.css("h2.card__title a")[0].get_attribute('href').strip
3636
event.venue = event_data.css("dl.meta-list svg.icon--marker")[0]&.parent&.text&.strip || 'Online'
3737
time_str = event_data.css("dl.meta-list svg.icon--calendar")[0].parent.text.strip
38-
split_time_str = time_str.split(' ')
38+
split_time_str = time_str.split(' - ')
3939
event.start = Time.zone.parse(split_time_str[0])
4040
if split_time_str[1].split(' ').length == 1
4141
a = split_time_str[0].split(' ')

test/unit/ingestors/taxila/dans_ingestor_test.rb

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,23 @@ class DansIngestorTest < ActiveSupport::TestCase
2222
ingestor = Ingestors::Taxila::DansIngestor.new
2323

2424
# check event doesn't
25-
new_title = 'Open Hour SSH: live Q&A on Monday'
26-
new_url = 'https://dans.knaw.nl/en/agenda/open-hour-ssh-live-qa-on-monday-2/'
25+
new_title = 'Open Science Festival 2025'
26+
new_url = 'https://opensciencefestival.nl/en/register-as-a-participant'
2727
refute Event.where(title: new_title, url: new_url).any?
2828

2929
# run task
30-
assert_difference 'Event.count', 6 do
31-
freeze_time(2019) do
30+
assert_difference 'Event.count', 11 do
31+
freeze_time(2025) do
3232
VCR.use_cassette('ingestors/dans') do
3333
ingestor.read(source.url)
3434
ingestor.write(@user, @content_provider)
3535
end
3636
end
3737
end
3838

39-
assert_equal 6, ingestor.events.count
39+
assert_equal 11, ingestor.events.count
4040
assert ingestor.materials.empty?
41-
assert_equal 6, ingestor.stats[:events][:added]
41+
assert_equal 11, ingestor.stats[:events][:added]
4242
assert_equal 0, ingestor.stats[:events][:updated]
4343
assert_equal 0, ingestor.stats[:events][:rejected]
4444

@@ -51,8 +51,8 @@ class DansIngestorTest < ActiveSupport::TestCase
5151
# check other fields
5252
assert_equal 'DANS', event.source
5353
assert_equal 'Amsterdam', event.timezone
54-
assert_equal ['Social Sciences and Humanities', 'Training &amp; Outreach', 'Consultancy'], event.keywords
55-
assert_equal Time.zone.parse('Mon, 13 Feb 2023 09:00:00.000000000 UTC +00:00'), event.start
56-
assert_equal Time.zone.parse('Mon, 13 Feb 2023 17:00:00.000000000 UTC +00:00'), event.end
54+
assert_equal ['FAIR and Open data'], event.keywords
55+
assert_equal Time.zone.parse('Mon, 24 Oct 2025 09:00:00.000000000 UTC +00:00'), event.start
56+
assert_equal Time.zone.parse('Mon, 24 Oct 2025 17:00:00.000000000 UTC +00:00'), event.end
5757
end
5858
end

test/unit/ingestors/taxila/dcc_ingestor_test.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ class DccIngestorTest < ActiveSupport::TestCase
2222
ingestor = Ingestors::Taxila::DccIngestor.new
2323

2424
# check event doesn't
25-
new_title = 'Training FAIR data management'
26-
new_url = 'https://dcc-po.nl/agenda/training-fair-data-management/'
25+
new_title = 'Training Beïnvloedings-vaardigheden'
26+
new_url = 'https://dcc-po.nl/agenda/training-beinvloedingsvaardigheden/'
2727
refute Event.where(title: new_title, url: new_url).any?
2828

2929
# run task
3030
assert_difference 'Event.count', 2 do
31-
freeze_time(2019) do
31+
freeze_time(2025) do
3232
VCR.use_cassette('ingestors/dcc') do
3333
ingestor.read(source.url)
3434
ingestor.write(@user, @content_provider)
@@ -51,8 +51,8 @@ class DccIngestorTest < ActiveSupport::TestCase
5151
# check other fields
5252
assert_equal 'DCC', event.source
5353
assert_equal 'Amsterdam', event.timezone
54-
assert_equal Time.zone.parse('Fri, 30 Sep 2019 09:00:00.000000000 UTC +00:00'), event.start
55-
assert_equal Time.zone.parse('Sat, 14 Oct 2019 17:00:00.000000000 UTC +00:00'), event.end
56-
assert_equal 'Domstad, Utrecht', event.venue
54+
assert_equal Time.zone.parse('Fri, 18 Sep 2025 09:00:00.000000000 UTC +00:00'), event.start
55+
assert_equal Time.zone.parse('Sat, 10 Oct 2025 17:00:00.000000000 UTC +00:00'), event.end
56+
assert_equal 'Utrecht, SURF en HU', event.venue
5757
end
5858
end

test/unit/ingestors/taxila/tdcc_ingestor_test.rb

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,23 @@ class TdccIngestorTest < ActiveSupport::TestCase
2222
ingestor = Ingestors::Taxila::TdccIngestor.new
2323

2424
# check event doesn't
25-
new_title = "Project Idea Generator - An Unconference by the Thematic DCC Social Sciences and Humanities"
26-
new_url = 'https://tdcc.nl/evenementen/project-idea-generator-an-unconference-by-the-thematic-dcc-social-sciences-humanities/'
25+
new_title = "TDCC-NES Governing Board meeting, October 2025"
26+
new_url = 'https://tdcc.nl/evenementen/tdcc-nes-governing-board-meeting-october-2025/'
2727
refute Event.where(title: new_title, url: new_url).any?
2828

2929
# run task
30-
assert_difference 'Event.count', 8 do
31-
freeze_time(2023) do
30+
assert_difference 'Event.count', 2 do
31+
freeze_time(2025) do
3232
VCR.use_cassette("ingestors/tdcc") do
3333
ingestor.read(source.url)
3434
ingestor.write(@user, @content_provider)
3535
end
3636
end
3737
end
3838

39-
assert_equal 8, ingestor.events.count
39+
assert_equal 2, ingestor.events.count
4040
assert ingestor.materials.empty?
41-
assert_equal 8, ingestor.stats[:events][:added]
41+
assert_equal 2, ingestor.stats[:events][:added]
4242
assert_equal 0, ingestor.stats[:events][:updated]
4343
assert_equal 0, ingestor.stats[:events][:rejected]
4444

@@ -51,8 +51,8 @@ class TdccIngestorTest < ActiveSupport::TestCase
5151
# check other fields
5252
assert_equal 'TDCC', event.source
5353
assert_equal 'Amsterdam', event.timezone
54-
assert_equal Time.zone.parse('Thu, 2 Apr 2023 13:00:00.000000000 UTC +00:00'), event.start
55-
assert_equal Time.zone.parse('Thu, 2 Apr 2023 17:00:00.000000000 UTC +00:00'), event.end
56-
assert_equal 'Het Trippenhuis, Amsterdam', event.venue
54+
assert_equal Time.zone.parse('Mon, 9 Oct 2025 09:00:00.000000000 UTC +00:00'), event.start
55+
assert_equal Time.zone.parse('Mon, 9 Oct 2025 17:00:00.000000000 UTC +00:00'), event.end
56+
assert_equal 'Social Impact Factory', event.venue
5757
end
5858
end

test/vcr_cassettes/ingestors/dans.yml

Lines changed: 249 additions & 65 deletions
Large diffs are not rendered by default.

test/vcr_cassettes/ingestors/dcc.yml

Lines changed: 19 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/vcr_cassettes/ingestors/tdcc.yml

Lines changed: 1179 additions & 353 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)