안녕하세요
프로젝트(4) - DB에 저장할 속성 본문
DB
channel: 모든 채널
video: search로 탐색한 모든 중복되지 않은 비디오 업로드 일자별로 구분
playlist: 재생목록
"/search" (100P * videoDailyUploadCount / 50 )
"최신순" query 검색
const getLatestSearch = async (q, amount) => {
const params = {
key: apiKey,
part: "snippet",
order: "date",
q: q,
regionCode: "kr",
type: "video",
maxResults: amount,
};
try {
const response = await axios.get("/search", { params });
console.log(response.data.items);
return response.data.items;
} catch (error) {
console.log("error", error);
}
};
1) 중복되지 않은 채널을 channel db에 저장
저장할 속성
"snippet.channelId"[string]: 채널 고유 id
"snippet.channelTitle"[string]: 채널명
"except"[boolean]: default: true / 예외등록할 채널은 false
=> 추후에 새롭게 등록된 channel 페이지에 활용
saveTime: db에 채널을 저장한 일자를 같이 저장
2) 중복되지 않은 영상을 video db에 저장
저장할 속성
"snippet.channelId"[string]: 채널 고유 id
"snippet.channelTitle"[string]: 채널명
"videoId"[string]: video 고유 id
"snippet.publishedAt"[string]: video 발행 일시
"snippet.title"[string]: video 제목
"snippet.description"[string]: video 내용
"snippet.thumbnails.[default, medium, high].url"[string]: video 썸네일 주소
=> 추후에 최근 업로드 된 video 페이지에 활용. video를 나열, 격자형식으로 보여주기
"/channels" (1P * channel db.length)
"/channels.snippet" [최초 1회 / 긴 주기로 업데이트ud]
채널 정보 channel db에 업데이트
channelId 로 검색을 하여 part: snippet, contentDetails, statistics 에 대하여 정보를 업데이트한다.
업데이트할 속성
"snippet.description"[string]: 채널 설명
"snippet.thumbnails.[default, medium, high].url"[string]: 채널 썸네일 주소
"/channels.contentDetails" [최초 1회 / 긴 주기로 업데이트ud]
"contentDetails": {
"relatedPlaylists": {
"likes": "",
"uploads": "UUzmd0IzkyCG1zpHbneTrtYQ"
}
},
=> uploads 속성 이용하면 업로드한 모든 영상을 담은 재생목록 반환
playlist db에 저장
저장할 속성
"contentDetails.relatedPlaylists.uploads"[string]: 재생목록 고유 id
"/channels.statistics" [짧은 주기로 업데이트ud]
채널 통계 channel db에 업데이트
"statistics.viewCount"[integer]: 채널 조회수
"statistics.subscriberCount"[integer]: 구독자 수
"statistics.videoCount"[integer]: 업로드된 동영상 수
"/playlistItems" (1P * channel db.length)
"/playlistItems.snippet"
playlist db 에 업데이트
"snippet.publishedAt"[string]: video 발행 일시
"snippet.title"[string]: video 제목
"snippet.description"[string]: video 설명
"snippet.thumbnails.[default, medium, high].url"[string]: video 썸네일 주소
"snippet.channelTitle"[string]: 채널명 ([0] 인덱스에만 실행)
"snippet.resourceId.videoId"[string]: video 고유 id
"snippet.videoOwnerChannelId"[string]: channel 고유 id
"/playlistItems.status"
(만일 비공개 영상을 제외하고 싶다면 status part를 포함하여 검색해야할 수도 있음.
비공개 영상은 어떻게 나타나는지에 대해서 확인해보지 않아서 아직 모름)
playlist db 에 업데이트
"status.privacyStatus"[string]: ex) "public"
'유튜브컨텐츠탐색-StelLife > MongoDB' 카테고리의 다른 글
Promise.all 여러개의 프로미스를 병렬로 실행한 결과를 배열로 반환 (Promise.allSettled) (0) | 2023.03.06 |
---|---|
MongoDB: $addToSet 중복되는 값을 배열에 추가할 때 (2) | 2023.02.26 |
for문 data부르기 error는 try-catch로 넘어가기, bulkwrite (0) | 2023.02.25 |
프로젝트(2) - MongoDB 연결 (0) | 2023.02.08 |