1. 글배경 및 목적
- 간단한 툴을 만들며, 코딩의 자신감을 드리고
- 파이썬으로 토렌트 클라이언트를 만들어 봄으로써, 파이썬에 간단한 개념을 설명하고자 합니다.
- qbittorrent와 연동하는 초간단 방법을 알려드림으로써, 관련 응용법을 도와드리고자 합니다. ^^;
2. 사전 준비
- 파이썬 3.x 설치후 python-qbittorrent 패키지를 다음과 같이 설치해주세요
pip3 install python-qbittorrent
- qBittorrent를 다운 받아 설치해주세요
https://www.qbittorrent.org/download.php
- qBittorrent 클라이언트의 웹 UI 를 활성화 해주세요. 설정방법은 다음과 같습니다.
(1) 메뉴바에서 도구 > Options 를 선택
잘못된 형식의 이미지 링크입니다.
(2) 다음과 같이 웹 사용자 인터페이스를 체크하고 설정해주세요.
잘못된 형식의 이미지 링크입니다.
위 설정이 완료되면 127.0.0.1:8080 으로 다음과 같이 qBittorrent 접속이 가능해집니다.
잘못된 형식의 이미지 링크입니다.
위 로그인 화면에서 초기 로그인 정보를 입력하면 ( the default is admin:adminadmin )
다음과 같은 화면을 볼 수 있다면, 일단 스크립트 이전의 모든 설정은 완료된 것 입니다.
잘못된 형식의 이미지 링크입니다.
3. 본론 - 파이썬으로 qbittorrent 클라이언트 만들기
지금까지 잘 따라왔다면 다음부터 파이썬코드를 하나하나 봅시다.
파이썬의 qbittorrent 패키지의 Client를 임포트 해줍니다.
from qbittorrent import Client
파이썬을 이용하여 웹 클라이언트에 접속합니다.
# qbittorent Web 클라이언트 api 접속
qb = Client("http://127.0.0.1:8080/")
# qbittorrent에서 설정한 계정정보를 설정.
qb.login("admin", "adminadmin")
다운받을 토렌트 파일을 읽어 옵니다. (예제는 debian 설치용 iso 파일을 다운 받을 수 있는 토렌트 파일)
torrent_file = open("debian-10.2.0-amd64-netinst.iso.torrent", "rb")
자 이제 다운 받아 봅시다.
qb.download_from_file(torrent_file)
지금까지 정상적으로 실행되었다면..
여러분은 다음처럼 qBittorrent 웹UI에서 다운로드되고 있는 것을 확인할 수 있습니다.

만약 토렌트파일이 아닌 magnet URL을 이용하여 파일을 다운 받고 싶다면..
qb.download_from_file 인자값을 파일대신 다음과 같이 마그네틱주소로 대체해주세요.
magnet_link = "magnet:?xt=urn:btih:e334ab9ddd91c10938a7....."
qb.download_from_link(magnet_link)
음.. 다운로드 경로를 바꾸고 싶어진다면.. 다음과 같이 해보세요.
qb.download_from_file(torrent_file, savepath="/the/path/you/want/to/save")
다운 로드를 모두 중지시키고 싶다면?
qb.pause_all()
중지된 다운로드를 다시 시작시키고 싶다면?
qb.resume_all()
좀 더 고급스럽게 다운로드되고 있는 리스트 정보를 보고 싶다면?
def get_size_format(b, factor=1024, suffix="B"):for unit in ["", "K", "M", "G", "T", "P", "E", "Z"]:if b < factor:return f"{b:.2f}{unit}{suffix}"b /= factorreturn f"{b:.2f}Y{suffix}" # return list of torrents torrents = qb.torrents() for torrent in torrents:print("Torrent name:", torrent["name"])print("hash:", torrent["hash"])print("Seeds:", torrent["num_seeds"])print("File size:", get_size_format(torrent["total_size"]))print("Download speed:", get_size_format(torrent["dlspeed"]) + "/s")
위 스크립트가 정상적으로 작동된다면 다음과 같이 보여질 수 있을껍니다.
잘못된 형식의 이미지 링크입니다.
전체 스크립트는 다음의 링크와 같으며, 아래 그림과 같이 실행할 수 있습니다.
https://github.com/cookyman74/utility/blob/master/qbittorrent_client.py
잘못된 형식의 이미지 링크입니다.
====================
다음엔 네트워크 계산기(서브넷 계산기) 에 대해 올려보겠습니다.
ㅋㅋㅋㅋㅋ
그런데 잘문이 있습니다. 코딩의 이유가 편하기위해서인데..
그냥 웹에서 마그넷 또는 토렌투파일만 클릭하면 다운받아지는데...
파이썬 들어가서 굳이 하는 장점운 뭐가 있을까요?
/Vollago
자기가 받고싶은 자료가 올라오면 바로 다운받게도 할수있습니다.
저기다가 뭘 붙일려고 파이썬이랑 엮는거죠
근데 토렌트 어플 만들면 잡혀가나..;
암튼 여러방면으로 응용해 볼 수있습니다-!
앗.. 답변이 늦었네요...ㅜㅜ
윗분들이 잘 설명해주셨는데,, 첨언하자면..
보통 나스장비와 텔레그램과 연동시켜서 텔레그램을 통해 원격으로 토렌트를 다운받게 한다던가..
웹크롤링과도 연동시켜서 대량의 토렌트를 자동으로 받게 한다던가...(그럴일이 보통은 없지만..^^;)
여러가지 자동화를 위한 아주 아주 작은 스냅코드류이긴 합니다.
최소 검색을 해서 해당 검색결과의 리스트를 뽑아서 마그넷주소나, 토렌트 파일을 빼내야하는데
RSS feed 를 해주는 곳도 이젠 없어지고 현실적인 어려움이 있지않나요??
말씀대로 불법 공유는 없어지는 추세이긴 하죠.
(물론 여전히 많지만...;;)
그외 공식사이트에서 OS설치파일을 버전별로 자동으로 받거나
기타 파일공유를 받기 위해 사용되면 좋을꺼 같습니다.
(토렌트가 요즘 극히 제한적이긴해서..)
찾아보니..
관련 패키지랑
https://pypi.org/project/transmission-clutch/
예제가 있긴 있네요
https://www.programcreek.com/python/example/94780/transmissionrpc.Client
굳이 그러지 않고 외부명령어 호출(exec같은)을 이용하여 파이썬코드를 호출하면 좋을꺼 같습니다.
물론 파이썬에 익숙하다면 서버사이드도 파이썬으로 만들어
합치는게 좋겠죠
저도 요새 하나 크롤링해야 하고 싶은게 생겼는데 파이썬으로 시도해봐야겠습니다. 좋은글 고맙습니다.
그런데 중간에 이미지 깨진 것 같아요.
감사합니다
아님 적어도 다운 받은 것을 구글 드라이브로 자동으로 이동 시켜 준다던지...
일단 구글드라이브 업로드 부분은 가능합니다.
https://medium.com/@annissouames99/how-to-upload-files-automatically-to-drive-with-python-ee19bb13dda
구글드라이브 연동과 관련해서는 다음에 정리해서 올려보겠습니다. :)
ModuleNotFoundError: No module named 'qbittorrent'
혹시 실행명령어를 수행한 환경이 파이썬2가 깔려 있는건 아닌지 확인해보셨나요?
python -V
(윈도우인경우) pip list | findstr qbittorrent
(리눅스인경우) pip list | grep qbittorrent
명령어로 설치된 환경을 확인해보세요.