안녕하세요

프로젝트(4) - DB에 저장할 속성 본문

유튜브컨텐츠탐색-StelLife/MongoDB

프로젝트(4) - DB에 저장할 속성

sakuraop 2023. 2. 8. 16:59

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"