PLEX 팁

2018-12-26 01:42:25 클리앙
https://www.clien.net/service/board/cm_nas/12981105


쇼 스캔 시간 단축

기본 시리즈 스캐너

기본 PLEX series scanner에는 mp4 파일에서 메타정보를 읽는 코드가 들어 있습니다. 새로운 파일이 추가되었을 경우 추가된 파일만 어떻게 할 것 같겠지만 PLEX는 그렇게 동작하지 않습니다.

mp4 파일 10개가 들어 있는 쇼에 파일 하나가 더 추가되어 스캔할 경우, 기존 10개의 파일 모두 다시 메타정보를 읽어서 혹시 메타에 있을지도 모르는 시즌과 에피소드 번호를 읽는 구조입니다. 이는 폴더 내에 파일이 추가, 삭제, 시간 변경 등 스캐너 실행 상황이 발생할 때마다 메타정보를 계속해서 읽습니다.

파일 IO가 발생하기에 당연히 시간이 늘어나는데 로컬에서는 별문제가 되진 않겠지만, 마운트 하여 사용하는 경우 그 시간이 파일 수에 비례하여 계속 늘어납니다. 마운트 된 드라이브내의 쇼를 한번 스캔한 후 PMS User 폴더내의 \Plex Media Server\Logs\Plex Media Scanner.log 파일을 한번 열어보시면,

이런 식으로 can’t skip 부분부터,  다음 줄 로그까지의 시간이 스캐너가 동작한 시간입니다.

기존 코드로 3분 14초 걸렸는데, mp4 메타 읽는 부분만 제거하면

0.3초 걸립니다.

저의 경우 적용 전 gsuite 내의 파일은 파일당 5초 정도가 걸렸는데, 적용 후에는 전체 파일이 3초 안에 다 끝납니다.

이게 시간도 시간이지만, 제가 최근 gdrive 다운로드 제한이 자주 발생했었는데,

방송 파일이 늘어나면서, 이 스캐너 때문에 시간당 API 호출 제한을 초과했으리라 강하게 의심됩니다.

gsuite 사용하시는 분들이라면 반드시 기본 스캐너를 변경하시기 바랍니다.

일단 이것만 적용해도 기존 스캔 시간 대비 절반 정도 되는 것 같습니다.

국내 방송용 스캐너라고 이전에 올린 적이 있었는데, 그때는 단순히 원 소스에 4자릿수 에피소드 인식 같은 간단한 것만 추가했던 거라 자세히 못 봤던 게 후회되네요. 아무튼 그 파일을 쓰시는 분들도 다시 받아서 사용하시기 바랍니다.

 – 다운로드 및 적용 방법 : https://github.com/soju6jan/SJVA-Scanners

https://github.com/soju6jan/SJVA-Scanners/blob/master/Plex%20Series%20Scanner%20Patch.py

 * raw 버튼에서 마우스 오른쪽 클릭 -> 다른 이름으로 저장 누르시면 다운로드 됩니다.

 * 기본적으로 Scanners 폴더, Series 폴더가 없으니 만드셔야 합니다.

스캐너란?

간혹 plex에 파일을 추가했는데 반응이 없다든지 매칭이 안된다라는 질문 글이 있습니다. 

이때 이것저것 에이전트를 변경하면서 매칭되는 에이전트를 찾는 분들이 계시는데….. 에이전트를 변경해서 해결될 문제가 아닙니다.

간단히 스캐너에 대해 설명드리자면.

기본적인 PLEX 스캔 흐름(Show)

 – PMS 스캐너(독립된 실행파일) 스캔 시 폴더를 탐색하여 파일 리스트를 만듭니다. 

 – 이 폴더 내의 쇼가 기존 정보과 달라 스캔이 필요하다면 스캐너에 파일 목록을 넘깁니다.

 – 스캐너는 받은 파일 목록을 가지고 쇼 이름, 시즌, 에피 넘버 목록을 작성합니다.

 – PMS 스캐너는 미디어 목록을 받고 기존 저장된 정보와 매칭하고, 필요하다면 FFMPEG를 이용해 파일을 분석합니다.

 – 또 메타를 업데이트해야 할 상황이라면 섹션에 맞는 에이전트에게 쇼 이름을 넘겨서 메타정보를 업데이트합니다.

대충 이런 구조인데 에이전트 입장에서는 이 쇼에 어떤 파일이 들어와 있는지 알 수 없이 그냥 메타데이터만 만들어 놓습니다. (알려면 알 수도 있으나 논외) 예를 들어 무한도전 100회 파일이 하나 있어 라이브러리 등록을 했다고 한다면, 실제 메타 정보에는 그 파일에 해당하는 에피소드 줄거리만 있는 게 아니라 모든 에피소드 줄거리 정보를 저장해 놓고 있습니다. (제작자마다 다르게 구현 가능)

추후 99회 파일이 들어온다면 메타데이터 새로고침을 안해도 자동으로 줄거리가 뜹니다. (실행파일 옵션에서 메타새로고침 없이 스캔만 가능) 즉, 에이전트는 메타데이터 전체 리스트를 만들어 놓는 역할이고 스캐너는 그 리스트에 들어가도록 해주는 역할입니다.

폴더명, 파일명을 토대로 리스트업은 스캐너가 하기에 어떻게 작성하냐에 따라 전혀 다르게 동작할 수도 있습니다.

기본적인 네이밍 규칙을 적용한게 기본 스캐너입니다.

https://support.plex.tv/articles/categories/media-preparation/naming-and-organizing-tv-shows/

국내 방송 다운로드 폴더 전용 스캐너

위 링크에서 다운로드 폴더 전용 스캐너를 적용하면, 위의 규칙과 상관없이 원하는 결과를 얻습니다.

이 스캐너는 폴더명 대신 파일명에서 쇼 이름을 추출하여 리스트업합니다.

 – 다운로드 폴더입니다.

– 이 폴더를 download 스캐너를 적용해줍니다.

– 결과

이외에도 약간이나마 gsuite 스캔 시간을 줄이는 방법과 부분 스캔 방법이 있으니 기회가 되면 설명드리겠습니다.

미디어 파일 위치 변경

찾아보시면 PMS을 변경할 경우 메타데이터를 옮기는 방법은 많습니다. 그런데 실제 파일 위치를 변경하는 방법은 없어 소개해드립니다.

먼저 실제 파일은 옮길 위치에 변경하시거나 다른 드라이브로 마운트 하신 후 진행하세요

순서

 1) PMS 중단

 2) Plex user 폴더 내의 Plex Media Server\Plug-in Support\Databases\com.plexapp.plugins.library.db 파일 백업

 3) DB Browser for sqlite 설치 (https://sqlitebrowser.org/)  이 외 sqlite 지원 앱 이용 가능

 4) 프로그램 실행 후 파일 -> 데이터베이스 열기에서 db파일 선택

   – 섹션 위치 변경

     * 두번째 탭 데이터 보기에서 테이블 section_locations 선택

     * 섹션 root_path 직접 수정

   – 실제 미디어 파일 위치 정보가 있는 테이블 : media_part

이 테이블에서 file 필드 값을 변경해주면 되는데 일괄로 하려면 SQL 쿼리를 입력해야 합니다.

4번째 탭 SQL 실행에서 쿼리 입력 후 실행해주면(F5)

 file위치가 변경되었습니다.

 5) 변경사항 저장하기를 누른 후, PMS 실행 

 6) 스캔 등 아무것도 하지 않은 상태에서 파일 재생이 잘 되면 성공

쿼리

어렵지 않습니다. 그냥 경로만 적으면 된다고 생각하세요. 잘못되더라고 DB 백업을 해놨기에 걱정없습니다.

위 쿼리는 file명에서  ‘Z:\한국\드라마’ 로 시작하는 부분을  ‘Y:\Drama’ 로 변경하겠다는 의미입니다.

WHERE 부분은 조건문인데 WHERE file LIKE(‘Z:\한국\드라마\강남스캔들%’)이라고 하면 강남스캔들만 Y:\Drama로 바뀌게 됩니다.

댓글로 질문 주시면 답변해드리겠습니다.

gsuite 잦은 밴으로 인하여 라이브러리를 분리할 때 적용했는데 잘 됩니다.

os를 변경해도 split 문자만 변경해주면 잘 되지 않을까 생각되네요.

참고로 gsuite에서 팀드라이브를 사용하여 파일 옮기실때 구글 웹은 믿지 마시고 상당히 오랜시간 기다리시면서 작업하시기 바랍니다.

To be continued…

Hits: 2651

This Post Has One Comment

  1. 본문으로는 자막파일 위치가 변경 안됩니다.
    자막 파일은 media_streams 테이블의 url 컬럼에 있습니다.

    UPDATE media_streams SET url = REPLACE(url, ‘file://Z:\한국\드라마’, ‘file://Y:\Drama’)

    이와 같은 형식으로 자막파일 위치도 변경해주세요.

댓글 남기기

Close Menu