Skip to content

Commit fb91e44

Browse files
committed
fix: hall of fame
1 parent 84aa1fa commit fb91e44

File tree

3 files changed

+31
-53
lines changed

3 files changed

+31
-53
lines changed

lib/Screens/hall_of_fame.dart

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,6 @@ class HallOfFameScreen extends StatelessWidget {
7474
title: Text(
7575
snapshot.data![index].driverName,
7676
),
77-
subtitle: Text(
78-
snapshot.data![index].years,
79-
),
8077
),
8178
],
8279
),

lib/helpers/constants.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ import 'dart:convert';
2222
import 'package:hive_flutter/hive_flutter.dart';
2323

2424
class Constants {
25+
final String F1_WEBSITE_URL = utf8.decode(
26+
base64Decode("aHR0cHM6Ly93d3cuZm9ybXVsYTEuY29t"),
27+
);
2528
final String F1_API_URL = utf8.decode(
2629
base64Decode("aHR0cHM6Ly9hcGkuZm9ybXVsYTEuY29t"),
2730
);

lib/scraping/formula_one.dart

Lines changed: 28 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -570,36 +570,27 @@ class FormulaOneScraper {
570570

571571
String endpoint = Hive.box('settings')
572572
.get('server', defaultValue: defaultEndpoint) as String;
573-
String f1Endpoint =
574-
endpoint != defaultEndpoint ? endpoint : 'https://www.formula1.com';
575-
Uri driverDetailsUrl =
576-
Uri.parse('$f1Endpoint/en/drivers/hall-of-fame.html');
573+
String f1Endpoint = endpoint != defaultEndpoint
574+
? endpoint + '/f1'
575+
: Constants().F1_WEBSITE_URL;
576+
Uri driverDetailsUrl = Uri.parse('$f1Endpoint/en/drivers/hall-of-fame');
577577

578578
http.Response response = await http.get(driverDetailsUrl);
579579
if (response.statusCode == HttpStatus.ok) {
580580
dom.Document document = parser.parse(response.body);
581-
List<dom.Element> elements = document.querySelectorAll(
582-
'a.column.column-4[href*="/en/drivers/hall-of-fame/"][href\$=".html"]');
581+
List<dom.Element> elements = document
582+
.querySelectorAll('a[href*="/en/information/drivers-hall-of-fame"]');
583583

584584
for (dom.Element element in elements) {
585-
List<String> driverInfo = element
586-
.getElementsByClassName('teaser-info-title')
587-
.first
588-
.text
589-
.trim()
590-
.split(' - ');
591-
String driverName = driverInfo[0];
592-
String driverYears = driverInfo[1];
593-
594-
dom.Element imageElement = element
595-
.getElementsByTagName('img')
596-
.firstWhere((e) => e.classes.contains('hidden'));
585+
String driverName =
586+
element.getElementsByClassName('f1-heading')[0].text.trim();
587+
588+
dom.Element imageElement = element.getElementsByTagName('img')[0];
597589
String driverImage = imageElement.attributes['src'] ?? '';
598590

599591
String driverUrl = f1Endpoint + element.attributes['href']!;
600592

601-
results.add(
602-
HallOfFameDriver(driverName, driverYears, driverUrl, driverImage));
593+
results.add(HallOfFameDriver(driverName, driverUrl, driverImage));
603594
}
604595
}
605596

@@ -611,34 +602,21 @@ class FormulaOneScraper {
611602
final Uri driverDetailsUrl = Uri.parse(pageUrl);
612603
http.Response response = await http.get(driverDetailsUrl);
613604
dom.Document document = parser.parse(utf8.decode(response.bodyBytes));
614-
if (pageUrl.endsWith('Max_Verstappen.html')) {
615-
dom.Element tempResult =
616-
document.getElementsByClassName('f1-article--content')[1];
617-
results['metaDescription'] = tempResult
618-
.getElementsByClassName('f1-article--rich-text')[0]
619-
.getElementsByTagName("strong")[0]
620-
.text;
621-
List parts = [];
622-
tempResult.getElementsByClassName('f1-article--rich-text').forEach(
623-
(paragraph) => paragraph.getElementsByTagName('p').forEach(
624-
(element) => parts.add(element.text),
625-
),
626-
);
627-
results['parts'] = parts.sublist(1);
628-
return results;
629-
} else {
630-
dom.Element tempResult = document.getElementsByTagName('main')[0];
631-
results['metaDescription'] =
632-
tempResult.getElementsByClassName('strapline')[0].text;
633-
List parts = [];
634-
tempResult.getElementsByClassName('text parbase').forEach(
635-
(paragraph) => paragraph.getElementsByTagName('p').forEach(
636-
(element) => parts.add(element.text),
637-
),
638-
);
639-
results['parts'] = parts;
640-
return results;
641-
}
605+
dom.Element tempResult = document.getElementById('maincontent')!;
606+
dom.Element content = tempResult.getElementsByTagName('article')[1];
607+
608+
results['metaDescription'] = content
609+
.getElementsByTagName('p')[0]
610+
.getElementsByTagName('strong')[0]
611+
.text;
612+
List parts = [];
613+
tempResult.getElementsByClassName('prose').forEach(
614+
(paragraph) => paragraph.getElementsByTagName('p').forEach(
615+
(element) => parts.add(element.text),
616+
),
617+
);
618+
results['parts'] = parts.sublist(1);
619+
return results;
642620
}
643621

644622
Future<Map> scrapeCircuitFactsAndHistory(
@@ -719,13 +697,13 @@ class FormulaOneScraper {
719697

720698
class HallOfFameDriver {
721699
String driverName;
722-
String years;
700+
/* String years; */
723701
String detailsPageUrl;
724702
String imageUrl;
725703

726704
HallOfFameDriver(
727705
this.driverName,
728-
this.years,
706+
/* this.years, */
729707
this.detailsPageUrl,
730708
this.imageUrl,
731709
);

0 commit comments

Comments
 (0)