Automationn init...

This commit is contained in:
최준흠 2024-09-04 19:29:52 +09:00
parent 749c691e11
commit 14e4fc5d47
2 changed files with 40 additions and 56 deletions

View File

@ -28,9 +28,11 @@ class YamapLibrary
public function getCrawler(string $url, string $tag): Crawler public function getCrawler(string $url, string $tag): Crawler
{ {
log_message("debug", __FUNCTION__ . "-> " . $url . "\n"); $response = $this->getContentByMyWeb($url);
$html = $this->getContentByMyWeb($url); if (!$response) {
return $this->createByMyCrawler($html)->filter($tag); throw new \Exception("getCrawler 실패:{$url}");
}
return $this->createByMyCrawler($response)->filter($tag);
} }
public function getListURLs( public function getListURLs(

View File

@ -37,11 +37,11 @@ trait MyWebTrait
} }
//url에 http 나 https가 포함되어 있으면 true //url에 http 나 https가 포함되어 있으면 true
final protected function isContainsHttpOrHttpsByMyWeb($url) final protected function isContainsHttpOrHttpsByMyWeb($url): bool
{ {
return strpos($url, 'http://') !== false || strpos($url, 'https://') !== false; return strpos($url, 'http://') !== false || strpos($url, 'https://') !== false;
} }
final protected function getContentByMyWeb(string $url, array $options = []) final protected function getContentByMyWeb(string $url, array $options = []): string
{ {
//url에 http 나 https가 포함되어 있지않으면 //url에 http 나 https가 포함되어 있지않으면
if (!($this->isContainsHttpOrHttpsByMyWeb($url))) { if (!($this->isContainsHttpOrHttpsByMyWeb($url))) {
@ -49,70 +49,52 @@ trait MyWebTrait
} }
$response = $this->getClientByMyWeb()->get($url, $options); $response = $this->getClientByMyWeb()->get($url, $options);
if ($response->getStatusCode() != 200) { if ($response->getStatusCode() != 200) {
log_message("error", "{$url} 접속실패: " . $response->getStatusCode()); throw new \Exception("error", "{$url} 접속실패: " . $response->getStatusCode());
return false;
} }
return $response->getBody()->getContents(); return $response->getBody()->getContents();
} }
// 로그인 메서드 // 로그인 메서드
final protected function loginByMyWeb($url, $username, $password) final protected function loginByMyWeb($url, $username, $password): void
{ {
try { $response = $this->getClientByMyWeb()->post($this->gethost() . $url, [
$response = $this->getClientByMyWeb()->post($this->gethost() . $url, [ 'form_params' => [
'form_params' => [ 'username' => $username,
'username' => $username, 'password' => $password,
'password' => $password, ],
], 'cookies' => $this->getCookieJar(),
'cookies' => $this->getCookieJar(), ]);
]); if ($response->getStatusCode() != 200) {
if ($response->getStatusCode() == 200) { throw new \Exception("info", "로그인 실패: " . $response->getStatusCode());
log_message("info", "로그인 성공!");
return true;
} else {
log_message("info", "로그인 실패: " . $response->getStatusCode());
return false;
}
} catch (\Exception $e) {
log_message("error", "로그인 중 오류 발생: " . $e->getMessage());
return false;
} }
} }
// 파일 다운로드 메서드 // 파일 다운로드 메서드
final protected function downloadByMyWeb(string $url, string $fullPath, bool $debug = false): bool final protected function downloadByMyWeb(string $url, string $fullPath, bool $debug = false)
{ {
try { log_message("debug", "donwload:URL-> " . $url);
log_message("debug", "donwload:URL-> " . $url); $fileNames = explode('/', $url);
$fileNames = explode('/', $url); if (!is_array($fileNames) || !count($fileNames)) {
if (!is_array($fileNames) || !count($fileNames)) { throw new \Exception("Download URL Error:" . $url);
throw new \Exception("Download URL Error:" . $url); }
if (!is_dir($fullPath)) {
if (!mkdir($fullPath)) {
throw new \Exception("Make Directory Error:" . $fullPath);
} }
if (!is_dir($fullPath)) { }
if (!mkdir($fullPath)) { $fileName = array_pop($fileNames);
throw new \Exception("Make Directory Error:" . $fullPath); $savePath = $fullPath . DIRECTORY_SEPARATOR . $fileName;
} log_message("debug", "download:SavePath-> " . $savePath);
if (!$debug) {
$response = $this->getContentByMyWeb($url, [
'cookies' => $this->getCookieJarByMyWeb(),
// 'sink' => $savePath,
]);
if (!$response) {
throw new \Exception("info", "{$fileName} 파일 다운로드 실패");
} }
$fileName = array_pop($fileNames); $this->saveByMyStorage($savePath, $response);
$savePath = $fullPath . DIRECTORY_SEPARATOR . $fileName; log_message("info", "{$fileName} 파일이 다운로드되었습니다!");
log_message("debug", "download:SavePath-> " . $savePath);
if (!$debug) {
$response = $this->getContentByMyWeb($url, [
'cookies' => $this->getCookieJarByMyWeb(),
// 'sink' => $savePath,
]);
if (!$response) {
log_message("info", "{$fileName} 파일 다운로드 실패");
return false;
}
$this->saveByMyStorage($savePath, $response);
log_message("info", "{$fileName} 파일이 다운로드되었습니다!");
return true;
}
return true;
} catch (\Exception $e) {
log_message("error", "다운로드 중 오류 발생: " . $e->getMessage());
return false;
} }
} }
} }