macOS: deluge 설치, 설정 및 .app 만들고 torrent/magnet 연동 시키기.

Linux 에선 전혀 신경쓸 필요가 없는 일인데, macOS 에선 그야말로 처음부터 끝까지 내 손으로 해결해야만 했다. 이런게 싫으면, macOS 에서 권장하는 방식(고분 고분 Apple 만을 따르는!!)으로만 사용하면 된다. (애초에 이런 것까지 할 생각은 없었는데.. 손을 대다보니 또 꽃삽질을 하고 앉았네..)


설치

** HomeBrew 로??
이 글을 다 쓰고 나서야 알게 됐는데, Homebrew 로 설치할 수도 있다. (안해봐서 잘 작동할지는 모르겠다.)

macOS 에서 쉽게 설치할 수 있는 방법은 없다. Deluge 문서에 나온대로 몇가지 과정을 거쳐야 하고, Homebrew 가 필요하다. (원문엔 나뉘어 있지만, 여긴 그냥 몰아놨다.)

brew install pygobject3 gtk+3 adwaita-icon-theme
brew install libtorrent-rasterbar
brew link gettext --force

그리고 pip 으로 몇몇 꾸러미 설치, 그리고 대망의(?) deluge 까지.

pip install pycairo PyGObject
pip install deluge

만약 pip(/opt/homebrew/bin/pip) 이 안되면 pip3(/usr/bin/pip3) 로.
설치가 끝나면, ~/Library/Python/3.9/bin/deluge 를 실행하여, GUI 가 열리는지 확인한다. (만약 어떤 꾸러미가 없다는 오류가 발생한다면, 적절히 설치해준다.)

늘 이렇게 터미널로 실행하는데 만족한다면 여기가 끝이다.

macOS 용 app 생성, 설정

Application 만들기

터미널이 번거롭다면 app 을 만들 수 있다.

  • Automator 를 실행하고, 신규 – ‘응용 프로그램’을 선택한다.
  • 왼쪽 보관함/유틸리티, 오른쪽 AppleScript 실행을 선택한다.

스크립트엔 다음과 같이 넣는다.

on run {input, parameters}
	
	# Finder 에서 파일을 선택하지 않고 그냥 실행했을 경우
	if input is {} then
		set run_deluge_soley to "$HOME/Library/Python/3.9/bin/deluge-gtk &>/dev/null &"
		do shell script run_deluge_soley
		
		# 스크립트를 끝내려면?
		# https://stackoverflow.com/a/29390864
		return 0
	end if
	
	# Finder 에서 파일을 선택하고 실행했을 경우	
	set run_deluge_add to "$HOME/Library/Python/3.9/bin/deluge-gtk "
	
	repeat with theFile in input		
		# 이건 여기서 배움
		# https://stackoverflow.com/a/62796213
		set posixFile to POSIX path of theFile
		
		# 여기서 quoted form 이 필요한지는 모르겠음.
		do shell script run_deluge_add & quoted form of posixFile & "&>/dev/null &"
		
	end repeat
	
	return 1
end run

on open location this_URL
	# https://www.smork.info/blog/posts/magnet_handler_script_for_firefox_on_osx/index.html
        # In case you want to display the URL that is being passed, uncomment the following line
	# display dialog "I'm doing something with this URL: " & return & this_URL
	
	set run_add_magnet to "$HOME/Library/Python/3.9/bin/deluge \"" & this_URL & "\" "
	do shell script run_add_magnet
	
end open location

여기는 두 부분으로 나뉜다. on run 과 on open location. on run 은 deluge 를 직접 실행시키거나 Torrent 파일 더블클릭, 또는 여러 파일을 선택한 후 우클릭으로 ‘열기’ 했을 때 필요하고, on open location 은 마그넷 링크 용이다.

위 스크립트에서 핵심(?)은 애플용 경로(콜론으로 구분)를 유닉스용으로 바꾸는 부분에 있다.

set posixFile to POSIX path of theFile

이걸 해주지 않으면 당연히, deluge 가 파일/경로를 인식하지 못한다.

애플 스크립트에 익숙지 않아서 저 간단한 내용을 알아내는데 꽤 많은 꽃삽질이 필요했다. 마그넷 링크 사용법은 Benjamin 님께 배웠다. (고맙습니다.)

다 만들었으면 저장하고 끝낸다.
app 을 실행해보고, 문제가 없다면 다음으로.

Application 설정 : .torrent, magnet 링크 연동

실행은 되는데, 아직 .torrent 파일과 magnet link 와 연동은 되지 않은 상태다. 이를 위해서 Contents/Info.plist 를 열고, 다음 내용을 추가한다.

# .torrent 연동
        <array>
                <dict>
                        <key>CFBundleTypeExtensions</key>
                        <array>
                                <string>torrent</string>
                        </array>
                        <key>CFBundleTypeName</key>
                        <string>Deluge Gui</string>
                        <key>CFBundleTypeOSTypes</key>
                        <array>
                                <string>****</string>
                        </array>
                        <key>CFBundleTypeRole</key>
                        <string>Viewer</string>
                </dict>
        </array>

# magnet link
        <key>CFBundleURLTypes</key>
        <array>
           <dict>
              <key>CFBundleURLName</key>
              <string>My magnet handler</string>
              <key>CFBundleURLSchemes</key>
              <array>
                 <string>magnet</string>
              </array>
           </dict>
        </array>

.torrent 용은, 원래 있던 형식에 적절히 추가하고, magnet 링크 부분은 맨 끝 쪽에 추가한다. 물론, </dict> </plist> 바로 위 쪽으로.

수정이 끝났으면, 이 app (예를 들면 deluge.app) 을 /Applications 또는 ~/Applications 로 옮긴다.
.torrent 파일을 열거나(1개나 여러개), magnet 링크를 클릭하여 제대로 연동하는지 확인해 본다.

** 뭔가 빠진 듯도 한데…???


만약 magnet link 가 열리지 않는다면?

저렇게 magnet link 와 연동된 프로그램이 있다면 별 문제 없는 듯도 한데.. 혹시나 마그넷 링크를 눌러도 아무런 반응이 없다면, 이런 식(Firefox)으로 설정을 바꿔본다.

  • FF 에서 about:config 로 설정을 연다.
  • 설정 이름 검색에 network.protocol-handler.expose.magnet 을 넣고, false 로 바꾼다.

이후 마그넷 링크를 클릭하면 ‘반응’이 온다.
Chromium 계열은 그냥 되는 듯도 한데.. 안되면 검색!


torrent 파일은 열리지만, Magnet 은 안될 경우?

잘 되다가 또 안되곤 하는 듯 한데.. Automator 를 잘 모르는 상태에서 대충 만들었기 때문에 무리수가 있을 수 있다. 이럴 땐 그냥 Benjamin 님 글 내용대로, Magnet 처리기를 따로 만드는 편이 낫다.

Author: 아무도안

안녕하세요. 글 남겨주셔서 고맙습니다.