반응형

[Python] Transmission 완료 자동삭제 스크립트

Last Edited: Jun 03, 2020 8:45 AM
Tags: PYTHON, QNAP

이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다)
Notion 가입 Link

필요사항

  • QPython3 ( Qnap Club )

본문

Transmission의 시딩완료 항목들이나 특정 Status의 항목들을 삭제해 주는 Script이다.
transmission-remote를 Control 하는 Wrapper로 개인에 맞게 다음 항목들을 수정하여 사용가능하다

  • BASEDIR: Transmission-remote경로
  • TR_PORT: Transmission UI사용 Port
  • TR_ID/TR_PW: Transmission ID/PW
  • 현재 Status=="Finished"만 제거하게 되어있는데 필요시 if 조건 추가
#!/opt/QPython3/bin/python3 
import re 
import subprocess 
from subprocess import Popen 

BASEDIR="/share/CACHEDEV1_DATA/.qpkg/QTransmission/bin/transmission-remote" 

TR_PORT = "49091" #Transmission Port
TR_ID = "Your ID" 
TR_PW = "Your PW" 


# Make Paused List 
p = Popen([BASEDIR, TR_PORT, "--auth", "%s:%s"%(TR_ID,TR_PW), "-l"], stdout=subprocess.PIPE, \ 
         stderr=subprocess.PIPE, universal_newlines=True) 

outputs, errors = p.communicate() 
output = outputs.splitlines(); 

#Remove Header and Tail 
output.pop(0); 
output.pop(-1); 

IDs = []; 

#Example Output 
#1 100% 17.56 GB  Unknown 0.0 0.0 0.0 Idle GAME_OF_THRONES_S7.1080p.BluRay.x264.KORsub-ADC2060 
reg = re.compile('^\s*(\d*)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+\S+\s+\S+\s+\S+\s+(\S+)\s+(.+)$') 
for line in output: 
    m = reg.match(line); 
    #print(m.group(0)); 
    ID = m.group(1); 
    STATUS = m.group(6); 

    if STATUS == 'Finished': 
        IDs.append(ID); 

#Remove Torrent 
if IDs: 
    IDs = ','.join(IDs); 
    subprocess.run([BASEDIR, TR_PORT, "--auth", "%s:%s"%(TR_ID,TR_PW), "-t", IDs, "--remove-and-delete"])
반응형

+ Recent posts