From 0cccd3ab71aba3b14154b22a4229c4883bfd5210 Mon Sep 17 00:00:00 2001 From: JakubKermes Date: Mon, 13 May 2024 14:52:16 +0200 Subject: [PATCH 1/2] Add Baqme provider --- app/Importers/BaqmeDataImporter.php | 67 +++++++++++++++++++++++++++ app/Jobs/BaqmeDataImporterJob.php | 15 ++++++ app/Services/DataImporterService.php | 2 + database/seeders/ProviderSeeder.php | 2 + public/providers/baqme.png | Bin 0 -> 3031 bytes 5 files changed, 86 insertions(+) create mode 100644 app/Importers/BaqmeDataImporter.php create mode 100644 app/Jobs/BaqmeDataImporterJob.php create mode 100644 public/providers/baqme.png diff --git a/app/Importers/BaqmeDataImporter.php b/app/Importers/BaqmeDataImporter.php new file mode 100644 index 00000000..03d2a0a4 --- /dev/null +++ b/app/Importers/BaqmeDataImporter.php @@ -0,0 +1,67 @@ +client->get("https://www.baqme.com/en/"); + $html = $response->getBody()->getContents(); + } catch (GuzzleException) { + $this->createImportInfoDetails("400", self::getProviderName()); + + $this->stopExecution = true; + + return $this; + } + + $crawler = new Crawler($html); + $this->sections = $crawler->filter("div.coming"); + + if (count($this->sections) === 0) { + $this->createImportInfoDetails("204", self::getProviderName()); + $this->stopExecution = true; + } + + return $this; + } + + public function transform(): void + { + if ($this->stopExecution) { + return; + } + $existingCityProviders = []; + + foreach ($this->sections as $section) { + $city = new Crawler($section); + $cityData = $city->filter("b")->html(); + $cityArray = explode("
", $cityData); + + if (count($cityArray) > 1 && $cityArray[1] === "Coming soon") { + continue; + } + $cityName = $cityArray[0]; + $provider = $this->load($cityName, self::COUNTRY_NAME, $lat = "", $long = "", $this->services); + + if ($provider) { + $existingCityProviders[] = $provider; + } + } + + $this->deleteMissingProviders(self::getProviderName(), $existingCityProviders); + } +} diff --git a/app/Jobs/BaqmeDataImporterJob.php b/app/Jobs/BaqmeDataImporterJob.php new file mode 100644 index 00000000..86ca7a87 --- /dev/null +++ b/app/Jobs/BaqmeDataImporterJob.php @@ -0,0 +1,15 @@ +setImportInfo($this->importInfoId)->extract()->transform(); + } +} diff --git a/app/Services/DataImporterService.php b/app/Services/DataImporterService.php index 504093b5..3d1c0243 100644 --- a/app/Services/DataImporterService.php +++ b/app/Services/DataImporterService.php @@ -4,6 +4,7 @@ namespace App\Services; +use App\Jobs\BaqmeDataImporterJob; use App\Jobs\BeamDataImporterJob; use App\Jobs\BerylDataImporterJob; use App\Jobs\BinBinDataImporterJob; @@ -67,6 +68,7 @@ public function run(string $whoRunsIt = "admin"): void new WindDataImporterJob($this->importInfoId), new WheeMoveDataImporterJob($this->importInfoId), new HopDataImporterJob($this->importInfoId), + new BaqmeDataImporterJob($this->importInfoId), new ZwingsDataImporterJob($this->importInfoId), new SixtDataImporterJob($this->importInfoId), ])->finally(function (): void { diff --git a/database/seeders/ProviderSeeder.php b/database/seeders/ProviderSeeder.php index de08d7a5..0070a267 100644 --- a/database/seeders/ProviderSeeder.php +++ b/database/seeders/ProviderSeeder.php @@ -4,6 +4,7 @@ namespace Database\Seeders; +use App\Importers\BaqmeDataImporter; use App\Importers\BeamDataImporter; use App\Importers\BerylDataImporter; use App\Importers\BinBinDataImporter; @@ -37,6 +38,7 @@ class ProviderSeeder extends Seeder public function run(): void { $providers = [ + ["name" => BaqmeDataImporter::getProviderName(), "color" => "#50E3C2", "url" => "https://baqme.com/", "android_url" => "https://play.google.com/store/apps/details?id=com.baqme.android", "ios_url" => "https://apps.apple.com/us/app/baqme/id1538722828"], ["name" => BeamDataImporter::getProviderName(), "color" => "#7347ff", "url" => "https://www.ridebeam.com/", "android_url" => "https://play.google.com/store/apps/details?id=com.escooterapp&pli=1", "ios_url" => "https://apps.apple.com/app/id1427114484"], ["name" => BerylDataImporter::getProviderName(), "color" => "#00e3c2", "url" => "https://beryl.cc/", "android_url" => "https://play.google.com/store/apps/details?id=cc.beryl.basis", "ios_url" => "https://apps.apple.com/app/id1386768364"], ["name" => BinBinDataImporter::getProviderName(), "color" => "#3dbcc8", "url" => "https://www.binbin.tech/", "android_url" => "https://play.google.com/store/apps/details?id=com.BINBIN&hl=en_US", "ios_url" => "https://apps.apple.com/us/app/binbin-scooters/id1483635924"], diff --git a/public/providers/baqme.png b/public/providers/baqme.png new file mode 100644 index 0000000000000000000000000000000000000000..eb18a569b707021710af64a2323558ae7b51988f GIT binary patch literal 3031 zcmeHJ`8O1b7azuC8)7slMNEmA30Z3Jk~FeMOxBlWrbzaYY(o!Y9ZWrpB{GzKWX7Jf zydh&2r0k-XrLikdcJ+M!jPE(`p7Xh%b3gZ&&-tAD!%eljW+owaObh@3NLZMo?GKo8 zfLkKKgYJ;1&paT3Ph&ELCzA+5LXXwcka-3RY0rGEcG^c*$Q@OW`w3pnDeGtqzg zaK*PX!KVs_Z`|6FlfQ`WTKtV^U>J6VT=eC0ic(X;$716rRpCz4+L&|mF3H~Q;$N?R z&#A#8TUB2Fk=|WqcO=w8+JBJ#QtwZ=Ng!fCmgRFEXLaXIbSB3aMZ(jtbG-+Mf~G&9XLDd)?Im`CI-?2 zGZIu<1ZGS1_`p+ALNEl`a!SST+_lO|Bs!n$??mPWdHZ}d^4_bMUai|L+V6Q)tP{!) zU)`U0nd0DQ&aB2bRWAg-$|`Bjw<a&X3&?yc;QOv@2eF4G}`D!>^>2pfR=OG zmKNoSy>U-;WCIS5E6+MZTh>H9^9A3Z|E?FE+q?sO9?~A}L+ovH&qR~-SlW-_?<7W9 z%9uM@8%Bjh%8SlV^12>=G~YY5b7{8SO<3Q`BeHR@7w1|VOX$gA z5rGZ&o#zvsgrcUN2c@n|w+619Au^u#YZiDl1w~m=W%@BD@Jz1pXqerZ5^^KcHBTi% zMn=I#r5um0p@QQAqgY9AQiTw>`wnUqz1fQHGrX3M(rSMEQ+E@ZZfRiHAmOS?RN(x@ z%SQsJtiB8pI^|}!Fz2UtSq6mU<_<`(=!yUC>S^Nvgnp6J(6S;K$a_SM(8=QDL`NO~ zE|F1Ij=xvO)=E>2%yc9-8JwUM*5oQSYI}wZ{RoyXFof{QEY}MXDckw}i?-5?_4A3c0C#lmgg(dHljAOK~k18bR zJOOpebsWtvbhHzk#O`)*dQr6I%{b@1^N6etChV=hS}>_zN77F$<-%1>#DNAbjyM0@ z`n9d}KzzGNi0tGq*-4IrRdq`;vUAf>Gz-rS`lwdZ9 zG9YZ~p?~D1z@gM3ftP{V@Cc;A4IW99T}^k5TT3fhi#3dW9iy$G64Y8j5Iou12kD{z z{gHDN$=5@iTnM*K{r?Mzsv8p}Pa%-0WdR-x}k8KGX)KPPm%v?nB^Zzr$-75gx-GE40AD_BJb(AOwkL?y z@g_g|mP8|m8-c+5HZwtk(+b_m>zo+2V;{d$DVXQ8Ce zKxH=ffsd?zVP8{9lFRX-jZ+bU7EY*va#6~QX+<@&mBUcHCmn9%Za1kV?T?dQ-Y!gq zfDK?c0|!r+my*(RCsKvxom7y&*waGM*PBHDF=z1f%~6A~QfBoYHqFHmy1&o)6xVlM zO`4_TX>Oh4rA)w2vZk8LMfj3zv-WN4hrc<_l$>YoUyt4pDculZfECc&7P}9#HtLf#pLx#Ay z@6O<>LzAVOug2!hGNnU;6`MBmAQUs1N55)0lFu?8;qpDs%Gl(qGw#J~jx@5Sc#BEm zmkhV=}S2bUANe5Gub}XobSbQAje9+ za&?CJSXQ>x1Zy}{8aGO=<300B+WF*5N*h+PZ82w5U)kY4Yj5nBLak00UA#l5kzSVs zCd^jqjU9~{PLQfGs2kV#RB8u9vdjnS{RyEEB+hilTHy*Xoj)s4+ja(oWz_S*NcG#* z#oM1jUpsO$+mhA1A~kH6IuDg?XsVFYk;_+a+cNGfsmo^UlNlP}a^1MvL8mIvP@YZv zfW?s8Ld}367k`tk))wW_`{+~STZlh6#CLbDPq!^k)%mijQ9qT78R=I&Z$n45ydn=P zwpCwCXRQmBOHfKYnNKCAm-;tv{L1?1JLajsu)S}BDN>G9TvURXZYbF^OcMG);HiT* O24G=&4gK82GyY%hw;vw> literal 0 HcmV?d00001 From 8e9b2f08fb6439d7218aa59b59a4a8da8e589365 Mon Sep 17 00:00:00 2001 From: Aleksandra Kozubal Date: Tue, 14 May 2024 08:06:52 +0200 Subject: [PATCH 2/2] cr change --- app/Importers/BaqmeDataImporter.php | 1 - 1 file changed, 1 deletion(-) diff --git a/app/Importers/BaqmeDataImporter.php b/app/Importers/BaqmeDataImporter.php index 03d2a0a4..e3c01760 100644 --- a/app/Importers/BaqmeDataImporter.php +++ b/app/Importers/BaqmeDataImporter.php @@ -22,7 +22,6 @@ public function extract(): static $html = $response->getBody()->getContents(); } catch (GuzzleException) { $this->createImportInfoDetails("400", self::getProviderName()); - $this->stopExecution = true; return $this;