요즘 다운로드 스테이션에서 rss로 받은 동영상 파일 이동/관리하는 글이 핫(?)하길래 ㅎㅎ
워낙 초보인 제가 강의글을 쓸줄은 상상도 못했는데 ^^;;;
글을 거의 처음쓰다보니 제목도 어떻게 써야할지를 모르겠네요 ㅠ
그래도 도움이 되실 분이 있을까 싶어 여기저기서 짜집기한 제 방식도 공유 드립니다!
기본적으로는 소주6잔님의 plex 라이브러리 관리 방법을 참고 했습니다!
(이 자리를 빌어 소주6잔님께 진심으로 감사 드립니다!)
저의 경우에는 기본적으로 모든 영상을 다운로드폴더('/volume2/video/Download/') 안에
다운로드하고, 파일명에 따라 각 폴더로 이동하도록 했으며, 이동할 폴더의 구성은 다음과 같습니다.
/video/tv/예능/...
/video/tv/다큐/...
/video/tv/드라마/...
각 예능, 다큐, 드라마 폴더의 하위 폴더에는 각 프로그램명으로 폴더를 생생했구요.
/video/tv/예능/냉장고를 부탁해
그리고 다운로드 폴더 (/volume2/video/Download/)에 받아진 파일 중, 이동이 불가능한
파일 (하위폴더에 해당 프로그램명으로 된 폴더가 생성되지 않았을 경우)은
아래 폴더로 이동 시킵니다. (하기 폴더를 manual폴더라고 지칭하겠습니다)
/volume2/video/Download/manual
폴더의 구성은 위와 같고, DSM 스케줄러에는 아래 2개의 스크립트를 등록했습니다.
============================ Script 1 / 5분 간격 ===========================================
su - postgres -c 'psql -U postgres -d download -c "delete from Download_queue where status in ('5','7','8') or (status = 101 and total_size = current_size)"'
find /volume2/video/Download/ -not -path "/volume2/video/Download/manual*" -type f -regex '.*.\.\(mkv\|mp4\|wmv\|flv\|webm\|mov\)' -exec mv {} "/volume2/video/Download/" \;
find /volume2/video/Download -name "*.txt" -type f -exec mv {} "/volume2/video/Download/manual/text_file" \;
/volume1/web/script/File_Name_Modify.sh
python /volume1/web/script/download_process_final_20180830.py
find /volume2/video/Download -depth -type d -empty -exec rmdir {} \;
==============================================================================================
R1) su - postgres -c 'psql -U postgres -d download -c "delete from Download_queue where status in ('5','7','8') or (status = 101 and total_size = current_size)"'
→ 소주6잔님의 스크립트를 그대로 사용하고 있습니다. (https://www.clien.net/service/board/cm_nas/11948747CLIEN)
R2) find /volume2/video/Download/ -not -path "/volume2/video/Download/manual*" -type f -regex '.*.\.\(mkv\|mp4\|wmv\|flv\|webm\|mov\)' -exec mv {} "/volume2/video/Download/" \;
→ 요즘에 tf****에서 받은 파일이 폴더로 다운받아지는 경우가 있어서, manual폴더를
제외한 다운로드 폴더에 있는 모든 영상파일 (mkv,mp4,wmv,flv,webm,mov)을 다운로드폴더로
이동시키는 스크립트 입니다.
R3) find /volume2/video/Download -name "*.txt" -type f -exec mv {} "/volume2/video/Download/manual/text_file" \;
→ 위에 설명드린 것처럼 폴더로 다운로드 받아지는 경우, 영상파일과 함께 txt파일이 생성되는데,
이 txt파일은 text_file 폴더로 이동 시키는 스크립트 입니다.
R4) /volume1/web/script/File_Name_Modify.sh
→ 얼마전에 나스당에 올려주신 파일명을 변경하는 스크립트를 보고 이거다 싶어서 추가한
사항인데, 지난글을 찾으려니 못찾겠네요 ㅠㅠ 이 자리를 빌어 감사하다는 말씀 드립니다!
(안내해주시면 수정하도록 하겠습니다!)
→ 요즘 다운로드 스테이션에 필터를 프로그램명으로 지정해 놓으면 같은 프로그램이 여러개
받아지던데, 이 스크립트로 파일명을 수정하고 이동시키면 동일 파일명으로 덮어쓰기가 되서
같은 회차에 여러개의 파일이 받아지는 경우에도 대응이 가능하더군요! 감사합니다!! ㅠㅠ
=============================== File_Name_Modify.sh ================================
##### 폴더 이동
cd /volume2/video/Download
##### 파일명에서 필요없는부분 제거
ls | sed 's/\(.*\).HDTV.H264.720p-WITH\(.*\)/mv "\1.HDTV.H264.720p-WITH\2" "\1\2"/' | sh
ls | sed 's/\(.*\).720p-NEXT\(.*\)/mv "\1.720p-NEXT\2" "\1\2"/' | sh
ls | sed 's/\(.*\)JTBC] \(.*\)/mv "[JTBC] \2" "\2"/' | sh
ls | sed 's/\(.*\)tvN] \(.*\)/mv "[tvN] \2" "\2"/' | sh
ls | sed 's/\(.*\)OCN] \(.*\)/mv "[OCN] \2" "\2"/' | sh
ls | sed 's/\(.*\)Olive] \(.*\)/mv "[Olive] \2" "\2"/' | sh
ls | sed 's/\(.*\)Mnet] \(.*\)/mv "[Mnet] \2" "\2"/' | sh
ls | sed 's/\(.*\)XTM] \(.*\)/mv "[XTM] \2" "\2"/' | sh
ls | sed 's/\(.*\)채널A] \(.*\)/mv "[채널A] \2" "\2"/' | sh
ls | sed 's/\(.*\)체널A] \(.*\)/mv "[체널A] \2" "\2"/' | sh
ls | sed 's/\(.*\)MBC Every1] \(.*\)/mv "[MBC Every1] \2" "\2"/' | sh
ls | sed 's/\(.*\)MBC every1] \(.*\)/mv "[MBC every1] \2" "\2"/' | sh
======================================================================================
R5) python /volume1/web/script/download_process_final_20180830.py
→ 이 글의 핵심인 소주6잔님의 스크립트 입니다! (너무 길어서 첨부파일 대체하겠습니다 ㅠ)
소주6잔님께서는 구글 무제한 폴더를 이용하셔서 그쪽 폴더로 이동하는 스크립트가 있었는데,
저는 이용하지 않고 있으므로 해당사항은 제외했습니다.
(제 미천한 실력으로 하나씩 공부하면서 제외시켜봤는데.. 어찌어찌 잘 작동은 하고 있어서 쓰고
있습니다만, 제대로 된건지는 모르겠네요 ㅠㅠ)
→ 자세한 내용은 https://github.com/soju6jan/download_process 참고 부탁 드립니다.
→ 링크 : https://drive.google.com/file/d/1iJa1OGTfNbPoqXLyvuogxpEclCFJmZNA/view?usp=sharing
R6) find /volume2/video/Download -depth -type d -empty -exec rmdir {} \;
→ 위에 설명드린 것처럼 폴더로 다운로드 받아지는 경우, 영상파일과 txt파일을 이동하고나면
빈 폴더만 남게 되는데, 이 빈폴더를 삭제해주는 스크립트 입니다.
위에 Script 1이 작동하게되면, 이동이 가능한 파일은 파일명이 변경된 후 이동을 하게되고,
이동이 불가능할 경우에는 manual폴더로 이동이 되며, 'download_process_final_20180830.py'에
따라 제 텔레그램으로 어떻게 처리했는지 메시지를 보내줍니다.
여기서 manual폴더로 이동된, 처리 불가능한 파일은 수동으로 이동해 주거나 폴더 생성 후
위의 스크립트를 다시한번 실행해 줘야 하는데, 이미 manual폴더로 이동이 된 상태라서
작동을 하지 않게 됩니다.
그래서 하기의 Script2를 추가하고 저의 경우에는 1시간 간격으로 실행되도록 했습니다.
============================ Script 2 / 1시간 간격 ===========================================
find /volume2/video/Download/ -type f -regex '.*.\.\(mkv\|mp4\|wmv\|flv\|webm\|mov\)' -exec mv {} "/volume2/video/Download/" \;
===============================================================================================
→ 다운로드 폴더를 포함한 모든 하위폴더(manual폴더 포함)에 있는 모든 영상파일 (mkv,mp4,wmv,
flv,webm,mov)을 다운로드폴더로 이동시키는 스크립트 입니다.
회사에서 루팡짓 하면서 쓰는 글이라 사진 첨부가 어려운 점 양해 부탁 드립니다 ㅠ
다시 읽어보니 글도 엉망이네요 ㅠㅠ
도움이 되실진 모르겠지만.. 혹시 궁금하신 사항이 있으시면 댓글 부탁드려요~
한 가지 질문이 다운 받은 항목중에 예능/다큐/드라마 폴더를 구분하는 스크립트가 어느부분인지 알수 있을까요?
폴더구조를 바꾸려는데 위 부분을 어떻게 구분하는지 잘 모르겠네요..다운로드 스테이션의 다운로드 필터 걸어논걸로 구분이 되는건가요?
문의하신 사항은, 소주6잔님께서 만들어주신 파이썬 파일에 보시면
//q'te//# 파일 이동 위치.
# 카테고리 폴더가 있고 카테고리 폴더안에 콘텐츠 폴더가 있어야한다.
# 예) 예능/무한도전, 교양/인간극장
PATH_LIBRARY_LOCAL = '/volume2/video/tv'
//unq'te//
이렇게 되어 있는데 이 말인 즉, 분류할 폴더들이 들어있는 상위폴더 (저의 경우에는 /volume2/video/tv') 에 하위폴더가 큰 카테고리 (예능, 교양 등등)로 폴더가 생생되어야 하고, 그 폴더 아래에 각 프로그램명으로 된 폴더를 생성하시면 됩니다.
예를들어 '그것이 알고 싶다'를 추가하신다면, 예능으로 넣으시든 다큐로 넣으시든 선택이 가능합니다.
예1) /volume2/video/tv/예능/그것이 알고 싶다
예2) /volume2/video/tv/다큐/그것이 알고 싶다
위에 예시 2개중 아무렇게나 하셔도 결국 최 하위 프로그램명으로 된 폴더를 기준으로 파일을 복사하게되어있습니다!
리뉴우님 제가 나스 초보라 이렇게 질문드립니다. 따라하고 싶은데 몇가지 어려운점이 있습니다. 작업 스케줄러에 스크립트 입력하는것은 잘 따라 할수있었습니다.
그러나 R4)의 ***.sh 파일 을 만드는것
R5)python 경로에 ***py 파일을 만들고 이동시키는것이 이해도 잘 안되고 리눅스및 스크립트는 문외한이라..조금 자세한 설명 부탁드려도 될까요?
1) sh 파일은 어떻게 만들어야하나요? 특별한 프로그램이 필요한가가요?윈도우 텍스트 파일에 넣어서 저장해봤는데 작동을 안하네요 sh 파일 만드는 법 좀 알려주실수 있으신가요?
2)python경로는 파이썬 모듈,파이썬 3 모두 설치후 어디로 들어가야하나요?? 부족한 신입 회원에게 길라잡이가 되어 주십시오.
또한 올리시는 글을 통해 많이 배워갑니다. 감사합니다.
2.파이썬 설치후 본인이 원하는곳에 py파일 업로드후 명령어에 그 위치 설정해주면됩니다.
늦어서 죄송합니다 ㅠㅠ
댓글 감사합니다!
정작 파일은 이동을 안하네요. 이름도 수정이 안되고요.
이름수정 sh와 파일이동 py를 단독실행시키면 중지됨으로 뜨네요. 뭐가 문제인지 조차도 파악못하고있어요
다운로드폴더에 100개의 동영상파일이 있는데
이름수정될것 10개와 수정필요없는것 90개가있고
이동될 폴더에 해당폴더도 만들어져있는 상태입니다.
의심 되는건 이동폴더가 1/2/해당폴더 여서인가싶은데 소주6잔님 글보면 하위폴더로 잘 넘어가는걸봐선 그문제는 아닌듯 싶은데 ..
답답하네요ㅡㅡ
부탁좀 드리고 싶은게 py파일 수정하신것좀 얻을수 있을까 싶네요.
py파일 수정한거는 본문에 google drive 링크 넣어드렸는데, 그거 말고 다른거 말씀하시는건가요?
댓글남겨 주시면 공유 드리겠습니다!
본글에 리뉴우님이 수정하신 파일을 링크 주신걸 못보고 괜히 혼자 해본다고 깔짝됐네요;;
감사합니다^^
그런데 R6) find /volume2/video/Download -depth -type d -empty -exec rmdir {} \;
이 부분을 저는 find /volume1/TV/download -depth -type d -empty -exec rmdir {} \;
이렇게 고쳐서 사용중인데 이름정리 및 폴더이동은 되는데 빈폴더 삭제만 안되네요
에러도 뜨지는 않는데 적용이 안되네요 왜그런걸까요ㅠㅠ
저도 매우 초보이다보니.. ㅠㅠ 질문 해주시는 사항에 대해 제대로 답변해 드리지 못해 죄송합니다 ㅠ
저 같은 경우에는 예를 들어 '/volume1/TV/download/aaa' 이런식으로 다운로드 폴더 하위폴더에 아무것도 없는 빈 폴더를 임의로 생성한 후에 putty로 접속해서 테스트를 해보고 잘 작동하는지 확인 후에 적용했거든요 ^^;;;;
이렇게 한번 테스트 해 보시고 안되시면 다른 능력자분들의 답변을 기다려야 할 것 같습니다 ㅠㅠ
스케줄러 한개 더 만드셔서 빈폴더 삭제 스크립트만 등록해보세요
1. 저는 R4) 스크립트를 Putty 접속해서 하면 정상 작동합니다. 근데 스크립트로하면 안되는데요
폴더 접근부분에서 문제가 생기지 않았나 추측하는데요 Putty 접속시 /var/services/homes 에서 부터 시작이 되어
cd .. 으로 경로가 다 나가고 cd /volume1/자료실 로 이동해서 나머지를 실행입니다. sh파일로 만들면 어디부터 시작이 되는건가요;?
2 R6) 스크립트는 download 하위에 manual 이란 txt_file 폴더도 파일없으면 삭제 해버리는거 아닌가요 ?
3. 이 스크립트를 사용하기 위하여 최소로 설치가 필요한 것이 있나요
Python3은 설치되어 있습니다.
답변 좀 꼭 부탁드립니다. 몇일 동알 너무 힘들어요