2016년 3월 6일 일요일

qnap nas에 flexget 설치하고 사용하는 방법-2번째




RSS 설정에 관한 글.......역시 뽐뿌에 있다가 삭제된 글...
http://egloos.zum.com/mizane/v/5892524

OMV에 transmission을 설치해서 토렌트를 받게하는 건 좋은데, 아쉽게도 rss 기능이 없다. rss 기능을 쓰면 원하는 영상을 알아서 받아주므로 손 안대고 코푸는 격..!!
Flexget은 rss에서 .torrent 파일을 다운받아 watch폴더로 쏴주는 역할을 한다.
좀 더 잉여로운 생활을 위해서 힘을 냈다.

 공유 폴더에 다운로드 폴더를 지정해준다. 이러면 다운로드 폴더 바로 아래에 watch 폴더가 생성되며, transmission은 watch폴더에서 .torrent파일을 자동으로 감지하고 토렌트를 추가해준다. 이 watch폴더의 경로는 추후 필요하니 미리 알아두자. 다음 커맨드를 입력한다.

cd /media
ls

복잡한 이름의 폴더가 나오면 메모장에 복붙해둔다. 아, SSH 사용은 필수다.
watch폴더의 경로는 다음과 같다.
/media/[복잡한 이름]/[다운로드 폴더 이름]/watch/

이제 flexget을 설치하자. root 계정으로 로그인 후 먼저 업데이트부터.
apt-get update

파이썬을 설치한다.
apt-get install python

파이썬 설치 후 버전 확인.
python -V
2.7.3이 나왔다.

마저 설치한다.
apt-get install python-pip
apt-get install flexget

flexget이 제대로 설치되었는지 확인한다.
flexget -V

The 'functools32' distribution was not found and is required by jsonschema 오류가 나서 다음 커맨드를 입력했다.
pip install functools32 

다시 제대로 설치되어있는지 확인했다.
flexget -V
1.2.354가 떴다. (2015년 9월 현재)

이제부터는 루트계정 사용하지 말라고 한다. 새 유저를 만들자. 이것저것 설정해줄..필요는 없고 아이디와 비번만 설정하면 된다.
adduser [사용자명]

사용자 등록이 끝나면 사용자 계정으로 로그인한다.
su [사용자명]

flexget이 실행되려면 설정파일이 필요하다. 홈디렉토리에 설정 파일을 만든다. 

우선 설정 파일 저장용 디렉토리를 만든다. 홈디렉토리는 ~이고, 숨김폴더라 폴더 이름 앞에 .이 붙었다.
mkdir ~/.flexget

설정 파일을 만들고 편집한다. nano 에디터를 사용했다.
nano ~/.flexget/config.yml

Flexget은 3단계로 실행된다. input > filter > output
input 단계에서는 말 그대로 뭐든 불러들여서 entries로 만든다. 이 상태에서 불러들여온 entries는 undecided 상태이다. rss가 대표적이지만 그 외에도 여럿 있다.
filter 단계에서는 여러가지 필터를 통해 undecided 상태의 entries를 accept할지, reject할지 정한다. accept도, reject도 안 하면 output단계에서 ignore 해버리니 주의.
output 단계에서는 filter 단계에서 accept된 파일을 어떻게 할지 정한다. 다운로드하거나 트랜스미션으로 전송하거나 등등. Reject되거나 Undecided 상태의 entries는 이 단계에서 Ignore된다. 

간단하게 예제를 만들어보았다.
tasks: #일을 만든다
  [feeds]: #그 일의 이름은 feeds다. (한글이나 기호로도 할 수 있지만 비추.)
    rss: [url]  #rss를 url에서 받아온다.
    regexp:  #Regular Expression(=regexp) 필터를 생성한다. 
      accept:  #다음 단어만 accept 한다.
        - [단어] #필터용 단어 입력
    download: [경로] #해당 파일을 받아 지정한 경로에 다운로드한다.
* 필터에 관한 자세한 설명은 다음 링크를 참조. http://flexget.com/wiki/Plugins#Filters

나는 다음과 같이 만들었다.
tasks:
  feeds:
    rss: http://www.leopard-raws.org/rss.php
    regexp:
      accept:
        - gangsta
        - gintama
    content-size:
      min: 200
      max: 1000
    download: /media/123-34-1231-14-24-123456/Downloads/watch/
*들여쓰기를 한 단계 추가할 때마다 탭이 아니라 스페이스 두 번을 치면 된다. 스페이스 한 번도 아니다.

leopard-raws의 rss는 최근 30개만을 알려주는데, 그 중에서 gangsta와 gintama를 accept하여 200-1000MB 사이의 파일만 다운로드했다. rss에 해당 단어가 없으면 전부 undecided상태로 남아 output단계에서 ignore되고 아무 일도 일어나지 않는다. 

저장경로는 아까 구한 watch 폴더 경로에 저장한다. (/media/[복잡한 이름]/[다운로드 폴더 이름]/watch/) 붙여넣기는 PuTTY에서 오른쪽 클릭, 저장은 Ctrl+O, 종료는 Ctrl+X

저장이 끝나고 문법에 맞는지 확인해본다.
flexget check

제대로 돌아가는지 테스트해본다.
flexget --test execute

제대로 작동하는 걸 확인하면 데몬 모드로 돌리고 세 시간마다 실행되도록 바꾼다.
다시 한 번 설정 파일을 편집한다.
nano ~/.flexget/config.yml

맨 아래에 다음과 같이 추가했다.
schedules:
  - tasks: '*'
    interval:
      hours: 3
'*'는 모든 tasks를 지칭한다. 특정 task만을 지칭할 경우 아까 적은 task 이름을 적는다. 나같은 경우는 feeds.
hours대신에 minutes/hours/days/weeks 등이 쓰인다.

데몬 모드로 돌린다.
flexget daemon start -d

잘 돌아가는지 확인한다.
flexget daemon status

그냥 한 번 실행해보려면
flexget execute

데몬모드로 안 돌리고 cron으로 매 시간마다 실행되게 할 수 있다. 터미널에서 해도 되지만 omv 관리웹의 Scheduled Jobs에서 편하게 할 수 있다. 
시스템 -예약된 작업:: 작업을 추가하고 다음 이미지에 나온대로 설정하면 된다.
Minute에 0은 매시 0분에 실행된다는 뜻이다. 매시 10분에 실행하려면 10으로 고치면 된다. 옆에 Every N Minute는 말 그대로 N분마다 실행하라는 뜻이다. 나같은 경우는 한 시간마다 매시 0분에 실행하도록 설정해놨다. 그리고 중요한 건 아래 user부분. root가 아닌 아까 만들었던 사용자로 설정하면 되고, 그 아래는 어떤 작업을 반복할 것인가를 묻는 말이다. Flexget은 데비안의 경우 대부분 /usr/local/bin/flexget 경로에 설치되므로 
/usr/local/bin/flexget --cron execute
라고 적어준다. 혹시라도 flexget의 위치를 확인하고자 한다면 터미널에서 which flexget이라고 입력하면 된다.

+ 뽐뿌의 상냥한 누군가가 flexget글을 올렸는데, 해킹사태로 탈퇴하셨는지 글이 날아갔다. 여기에 그 분의 닉네임은 삭제하고 백업만 모셔둔다 ㅜㅜ flexget.txt 
+ 그리고 참고한 글 세 개
Flexget 홈페이지의 위키. http://flexget.com/wiki
Transmission에서 RSS를 받아보자!! http://ti.5mango.com/1
Flexget을 통한 RSS기능 연동하기 http://sea8529.blog.me/100191148222
+ 직접적인 관련은 없지만 이번 건으로 리눅스를 처음 접한 나에게 아주 도움이 됐던 글 ㅜㅜ
리눅스의 기본 명령어들 http://www.emh.co.kr/content.pl?linux_basic_commands

댓글 없음:

댓글 쓰기

Citizen Eco-Drive CA0030-61E

Glass Type Sapphire Case Material Titanium Super Titanium (Ti + IP) Strap Material Titanium Super Titanium (Ti + IP) Movement ...