# 도서 검색 프로그램 (BokBonCheck) ## 개요 이 프로그램은 여러 도서관 웹사이트에서 도서명을 검색하여 각 사이트별로 검색된 도서 수를 확인할 수 있는 C# WinForms 애플리케이션입니다. ## 주요 기능 - **다중 사이트 검색**: 여러 도서관 사이트에서 동시에 도서 검색 - **실시간 결과 표시**: 검색 결과를 테이블 형태로 실시간 표시 - **확장 가능한 구조**: 새로운 도서관 사이트를 쉽게 추가 가능 - **비동기 처리**: 검색 중에도 UI가 응답 가능 - **자동 Chrome 드라이버 관리**: Chrome 버전에 맞는 드라이버 자동 다운로드 및 관리 ## 현재 지원하는 도서관 - 남구통합도서관 (https://lib.namgu.gwangju.kr/main/bookSearch) ## 기술 스택 - **.NET Framework 4.8** - **C# WinForms** - **Selenium WebDriver** - **WebDriverManager** (Chrome 드라이버 자동 관리) ## 설치 및 실행 ### 필수 요구사항 1. .NET Framework 4.8 이상 2. Google Chrome 브라우저 (최신 버전 권장) 3. 인터넷 연결 (Chrome 드라이버 다운로드용) 4. Visual Studio 2019 이상 (개발용) ### 빌드 및 실행 1. 프로젝트를 Visual Studio에서 열기 2. NuGet 패키지 복원 (자동으로 실행됨) 3. 프로젝트 빌드 (Ctrl+Shift+B) 4. 실행 (F5) ### 배포 1. Release 모드로 빌드 2. `bin/Release` 폴더의 모든 파일을 배포 대상 폴더에 복사 3. BokBonCheck.exe 실행 ## 사용법 ### 프로그램 시작 1. 프로그램 실행 시 Chrome 드라이버 자동 설정 2. Chrome 설치 확인 및 적절한 드라이버 다운로드 3. 드라이버 테스트 완료 후 검색 가능 ### 기본 검색 1. 검색창에 도서명 입력 2. "검색" 버튼 클릭 또는 Enter 키 입력 3. 검색 결과 확인 ### 결과 해석 - **도서관**: 검색한 도서관 이름 - **도서 수**: 해당 도서관에서 검색된 도서의 총 개수 - **검색 시간**: 검색이 완료된 시간 - **상태**: 검색 성공/실패 여부 ## 프로젝트 구조 ``` BokBonCheck/ ├── Form1.cs # 메인 UI 폼 ├── BookSearchService.cs # 검색 서비스 관리 ├── NamguLibrarySearcher.cs # 남구통합도서관 전용 검색기 ├── ChromeDriverManager.cs # Chrome 드라이버 자동 관리 ├── ILibrarySearcher.cs # 검색기 인터페이스 └── Program.cs # 프로그램 진입점 ``` ## Chrome 드라이버 자동 관리 ### WebDriverManager 기능 - **자동 버전 감지**: 설치된 Chrome 버전 자동 감지 - **드라이버 자동 다운로드**: Chrome 버전에 맞는 드라이버 자동 다운로드 - **캐시 관리**: 다운로드된 드라이버 캐시 관리 - **업데이트 지원**: Chrome 업데이트 시 드라이버 자동 업데이트 ### 동작 과정 1. 프로그램 시작 시 Chrome 설치 확인 2. Chrome 버전 정보 수집 3. WebDriverManager를 통한 적절한 드라이버 다운로드 4. 드라이버 테스트 실행 5. 검색 기능 활성화 ## 새로운 도서관 추가하기 새로운 도서관을 추가하려면 `ILibrarySearcher` 인터페이스를 구현하는 클래스를 생성하고 `BookSearchService`에 등록하면 됩니다. ### 예시: ```csharp public class NewLibrarySearcher : ILibrarySearcher { public string SiteName => "새로운도서관"; public string SiteUrl => "https://newlibrary.com/search"; public async Task SearchAsync(string searchTerm) { // 검색 로직 구현 } } ``` 그리고 `BookSearchService` 생성자에서: ```csharp _searchers.Add(new NewLibrarySearcher()); ``` ## 문제 해결 ### Chrome 관련 오류 - **Chrome 미설치**: Google Chrome을 설치하고 프로그램 재실행 - **드라이버 다운로드 실패**: 인터넷 연결 확인 후 프로그램 재실행 - **드라이버 테스트 실패**: 방화벽이나 보안 프로그램 설정 확인 ### 검색 실패 - 인터넷 연결 상태 확인 - 해당 도서관 사이트가 정상 작동하는지 확인 - 사이트 구조가 변경되었을 수 있으므로 검색 로직 업데이트 필요 ### 성능 문제 - 검색 중에는 다른 검색을 시작하지 마세요 - 네트워크 상태에 따라 검색 시간이 달라질 수 있습니다 - 첫 실행 시 드라이버 다운로드로 인한 지연이 있을 수 있습니다 ## 업데이트 내역 - v1.1.0: Chrome 드라이버 자동 관리 기능 추가 (WebDriverManager 사용) - v1.0.0: 초기 버전 - 남구통합도서관 검색 기능 구현 ## 라이선스 이 프로젝트는 개인 및 교육 목적으로 사용할 수 있습니다. ## 기여 버그 리포트나 기능 제안은 이슈로 등록해 주세요.