Last active
October 26, 2016 09:49
-
-
Save mavitm/8fa27c74550c58eaf23c125829ac4065 to your computer and use it in GitHub Desktop.
Booking.com tsv parser
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/*/ | |
use Storage; | |
use BackendMenu; | |
use Backend\Classes\Controller; | |
use Mavitm\Hotel\Models\Hotel; | |
use Mavitm\Hotel\Models\Desc; | |
use Illuminate\Database\QueryException; | |
/**/ | |
function tsvImport($p = ""){ | |
$data = Storage::get("/tsv/Asia_3.tsv"); //$p set | |
$arr = explode("\n", $data); | |
$dbTsv = []; | |
$x = 0; | |
foreach($arr as $line){ | |
$lineArr = explode("\t", $line); | |
$dbTsv[$x] = $lineArr; | |
$x++; | |
} | |
$first = $dbTsv[0]; | |
unset($dbTsv[0]); | |
unset($first[count($first) -1]); | |
$fields = array_flip($first); | |
$dbAttr = []; | |
$descIndexes = []; | |
foreach($fields as $f=>$i){ | |
if(strpos($f, "desc") !== false){ | |
$descIndexes[$i] = explode('_',$f)[1]; | |
}else{ | |
$dbAttr[$i] = $f; | |
} | |
} | |
$this->vars['data'] = $dbTsv; | |
$this->vars['descIndexes'] = $descIndexes; | |
$this->vars['attr'] = $dbAttr; | |
foreach ($dbTsv as $i=>$v) { | |
if(@$v[5] == "tr"){ | |
$Hotel = new Hotel; | |
foreach($dbAttr as $x=>$name){ | |
if(empty($v[$x])){ | |
if($name == "maxrate"){ | |
$v[$x] = 0; | |
}elseif($name == "preferred"){ | |
$v[$x] = 0; | |
} | |
} | |
$Hotel->$name = $v[$x]; | |
} | |
try { | |
$Hotel->save(); | |
if(!empty($descIndexes)){ | |
$tagsIDs = []; | |
foreach($descIndexes as $si=>$ci){ | |
$Desc = new Desc; | |
$Desc->hotel_id = $Hotel->id; | |
$Desc->cc1 = $ci; | |
$Desc->description = $v[$si]; | |
$Desc->save(); | |
$tagsIDs[] = $Desc->id; | |
} | |
} | |
$Hotel->desc()->sync($tagsIDs); | |
}catch (QueryException $e){ | |
var_dump($e->getMessage()); | |
} | |
} | |
} | |
} | |
?> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php namespace Mavitm\Hotel\Models; | |
use Model; | |
/** | |
* Model | |
*/ | |
class Desc extends Model | |
{ | |
/* | |
* Validation | |
*/ | |
public $rules = [ | |
]; | |
/* | |
* Disable timestamps by default. | |
* Remove this line if timestamps are defined in the database table. | |
*/ | |
public $timestamps = false; | |
/** | |
* @var string The database table used by the model. | |
*/ | |
public $table = 'mavitm_hotel_desription'; | |
public $belongsToMany = [ | |
'hotel' => [ | |
'Mavitm\Hotel\Models\Hotel', | |
'table' => 'mavitm_hotel_hotel_desc', | |
], | |
'items_count' => [ | |
'Mavitm\Hotel\Models\Hotel', | |
'table' => 'mavitm_hotel_hotel_desc', | |
'count' => true | |
] | |
]; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CREATE TABLE `mavitm_hotel_desription` ( | |
`id` int(10) UNSIGNED NOT NULL, | |
`hotel_id` int(11) NOT NULL, | |
`cc1` varchar(50) COLLATE utf8_unicode_ci NOT NULL, | |
`description` text COLLATE utf8_unicode_ci | |
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; | |
-- | |
-- Dökümü yapılmış tablolar için indeksler | |
-- | |
-- | |
-- Tablo için indeksler `mavitm_hotel_desription` | |
-- | |
ALTER TABLE `mavitm_hotel_desription` | |
ADD PRIMARY KEY (`id`); | |
-- | |
-- Dökümü yapılmış tablolar için AUTO_INCREMENT değeri | |
-- | |
-- | |
-- Tablo için AUTO_INCREMENT değeri `mavitm_hotel_desription` | |
-- | |
ALTER TABLE `mavitm_hotel_desription` | |
MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php namespace Mavitm\Hotel\Models; | |
use Model; | |
/** | |
* Model | |
*/ | |
class Hotel extends Model | |
{ | |
/* | |
* Validation | |
*/ | |
public $rules = [ | |
]; | |
/* | |
* Disable timestamps by default. | |
* Remove this line if timestamps are defined in the database table. | |
*/ | |
public $timestamps = false; | |
/** | |
* @var string The database table used by the model. | |
*/ | |
public $table = 'mavitm_hotel_hotel'; | |
public $belongsToMany = [ | |
'desc' => [ | |
'Mavitm\Hotel\Models\Desc', | |
'table' => 'mavitm_hotel_hotel_desc', | |
], | |
]; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CREATE TABLE `mavitm_hotel_hotel` ( | |
`id` int(10) UNSIGNED NOT NULL, | |
`name` varchar(250) COLLATE utf8_unicode_ci NOT NULL, | |
`address` varchar(250) COLLATE utf8_unicode_ci DEFAULT NULL, | |
`zip` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, | |
`city_hotel` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, | |
`cc1` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, | |
`ufi` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, | |
`class` double(3,2) DEFAULT NULL, | |
`currencycode` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, | |
`minrate` decimal(10,2) DEFAULT NULL, | |
`maxrate` decimal(10,2) DEFAULT NULL, | |
`preferred` smallint(6) DEFAULT NULL, | |
`nr_rooms` smallint(6) DEFAULT NULL, | |
`longitude` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, | |
`latitude` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, | |
`public_ranking` int(11) DEFAULT NULL, | |
`hotel_url` varchar(250) COLLATE utf8_unicode_ci DEFAULT NULL, | |
`photo_url` varchar(250) COLLATE utf8_unicode_ci DEFAULT NULL, | |
`city_unique` varchar(250) COLLATE utf8_unicode_ci DEFAULT NULL, | |
`city_preferred` varchar(250) COLLATE utf8_unicode_ci DEFAULT NULL, | |
`continent_id` varchar(250) COLLATE utf8_unicode_ci DEFAULT NULL, | |
`review_score` varchar(250) COLLATE utf8_unicode_ci DEFAULT NULL, | |
`review_nr` varchar(250) COLLATE utf8_unicode_ci DEFAULT NULL | |
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; | |
-- | |
-- Dökümü yapılmış tablolar için indeksler | |
-- | |
-- | |
-- Tablo için indeksler `mavitm_hotel_hotel` | |
-- | |
ALTER TABLE `mavitm_hotel_hotel` | |
ADD PRIMARY KEY (`id`); | |
-- | |
-- Dökümü yapılmış tablolar için AUTO_INCREMENT değeri | |
-- | |
-- | |
-- Tablo için AUTO_INCREMENT değeri `mavitm_hotel_hotel` | |
-- | |
ALTER TABLE `mavitm_hotel_hotel` | |
MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CREATE TABLE `mavitm_hotel_hotel_desc` ( | |
`desc_id` int(11) NOT NULL, | |
`hotel_id` int(11) NOT NULL | |
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment