728x90
YouTube API를 사용하지 않고 Flutter에서 YouTube 검색을 구현하는 방법을 찾고 있나요? 아니면 YouTube API 사용량 초과 오류를 해결하고 싶으신가요? 🤔
오늘은 YouTube API 없이 검색하는 방법, youtube_explode_dart 패키지를 활용한 영상 조회 방법, 그리고 검색 필터 적용법까지! 최신 YouTube 검색 구현 방법을 완벽 정리해드립니다. 🚀
🔥 1. YouTube API 없이 검색하는 방법 (검색 URL 활용)
✅ YouTube 검색 URL 구조
YouTube의 기본 검색 URL은 다음과 같습니다:
https://www.youtube.com/results?search_query=검색어
하지만 여기에 **특정 조건(필터)**을 추가할 수도 있습니다.
🎯 YouTube 검색 URL 필터 목록
필터 | 파라미터 | 설명 |
업로드 날짜 | sp=EgIIAQ%3D%3D | 오늘 업로드된 영상 |
sp=EgQIAxAB | 이번 주 업로드된 영상 | |
sp=EgQIAxAU | 이번 달 업로드된 영상 | |
정렬 기준 | sp=CAASAhAB | 관련성 높은 순 (기본값) |
sp=CAASAhAD | 조회수 높은 순 | |
영상 길이 | sp=EgIYAw%3D%3D | 4분 이하 (Shorts 포함) |
sp=EgIYAg%3D%3D | 20분 이상 (긴 영상) |
🔹 예제: 조회수 높은 Flutter 영상 검색 URL
https://www.youtube.com/results?search_query=Flutter&sp=CAASAhAD
✅ 검색 결과 "더보기" 구현 가능할까?
YouTube 검색 URL 방식에서는 더보기 버튼(페이징) 기능을 직접 제어할 수 없습니다. 하지만 WebView를 사용해 자동 스크롤 방식으로 구현 가능합니다.
_controller.runJavascript("window.scrollTo(0, document.body.scrollHeight);");
위 코드처럼 WebView에서 자동 스크롤을 내리도록 설정하면 YouTube의 "더보기" 기능을 사용할 수 있습니다.
🔥 2. youtube_explode_dart를 활용한 YouTube 영상 조회
YouTube API를 사용하지 않으면서 특정 채널이나 재생목록에서 영상 정보를 가져오는 방법입니다.
✅ youtube_explode_dart 설치하기
dependencies:
youtube_explode_dart: ^1.12.0
✅ 특정 채널의 최신 영상 가져오기
var yt = YoutubeExplode();
var channelUploads = await yt.channels.getUploads("UCwXdFgeE9KYzlDdR7TG9cMw");
for (var video in channelUploads) {
print('제목: ${video.title}');
print('URL: https://www.youtube.com/watch?v=${video.id}');
}
yt.close();
✅ 특정 재생목록에서 영상 목록 가져오기
var yt = YoutubeExplode();
var playlist = await yt.playlists.getVideos("PLjxrf2q8roU3kzC9Gq0BkrGUCdQR-K8EY");
for (var video in playlist) {
print('제목: ${video.title}');
}
yt.close();
✅ 특정 영상의 상세 정보 가져오기
var video = await yt.videos.get("n1Io0k5zm4U");
print('제목: ${video.title}');
print('조회수: ${video.engagement.viewCount}');
🔥 3. YouTube 검색 필터 적용 가능할까?
필터 | 적용 가능 여부 | 구현 방법 |
업로드 날짜 (최신 영상만 보기) | ✅ 가능 | channel.getUploads() 후 최신순 정렬 |
조회수 높은 영상 | ✅ 가능 | .sort((a, b) => b.engagement.viewCount.compareTo(a.engagement.viewCount)) |
영상 길이 필터링 | ✅ 가능 | .where((v) => v.duration < Duration(minutes: 5)) |
✅ 결론: 어떤 방법을 써야 할까?
방법 | 검색 가능? | 필터 적용? | 페이징 가능? |
YouTube 검색 URL 활용 | ✅ 가능 | ✅ 가능 (URL 파라미터) | ❌ 직접 불가능 (WebView 필요) |
YouTube API | ✅ 가능 | ✅ 가능 | ✅ 가능 |
youtube_explode_dart | ❌ 검색 불가 | ✅ 가능 (조회수, 길이, 날짜 정렬) | ❌ 직접 불가능 |
🎯 추천:
- 빠르게 YouTube 검색을 구현하고 싶다면? 👉 YouTube 검색 URL 활용
- 특정 채널의 영상만 가져오고 싶다면? 👉 youtube_explode_dart 활용
- 정확한 검색 결과 + 페이징이 필요하다면? 👉 YouTube API 활용 (API 키 필요)
LIST
'Develop > Flutter' 카테고리의 다른 글
[Flutter] Google Maps API 설정 및 사용 방법 (Android & iOS) (1) | 2025.03.13 |
---|---|
[Flutter] Expanded 위젯 설명 및 사용 방법 (1) | 2025.03.06 |
[Flutter] Local Database : hive_ce & hive_ce_flutter 소개 및 사용법 (1) | 2025.03.04 |
[Flutter] 밑에서 올라오는 팝업 위젯 (Bottom Sheet) (1) | 2025.03.04 |
[Flutter] 커스텀 버튼들 클래스를 만들어 재사용하는 방법 (1) | 2025.02.28 |