์ ๋ ํ ๋ ํธ๋ฅผ ์๋์ผ๋ก ๋ค์ด๋ก๋ํ๋๋ก RSS ํผ๋๋ฅผ ์ค์ ํ๋ ๋ฐ ์ฌ์ฉํ๋ OpenSUSE 12.2์์ qbittorrent๋ฅผ ์คํํ๊ณ ์์ผ๋ฉฐ์ด ์์๋ฅผ ์ง์ ๋ฏธ๋์ด ์๋ฒ๋ก ์ฌ์ฉํ์ต๋๋ค. ssh ์ธ์
์ด๋ ์น UI๋ฅผ ํตํด ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ ์กฐ์ ํ ์ ์์ต๋๋ค. ์์์ ssh -Y๋ฅผ ๋ฃ๊ณ gui๋ฅผ ๊ฐ์ ธ ์์ ํธ์งํ์ง ์๊ณ ๋ qbittorrent์ RSS ํผ๋๋ฅผ ์ ์ด ํ ์ ์์ผ๋ฉด ์ข์ ๊ฒ์
๋๋ค. iPAD์์ ์น UI๋ฅผ ์ฌ์ฉํ๊ณ RSS ํผ๋๋ฅผ ์กฐ์ ํ๋ ๊ฒ์ด ์ด์์ ์
๋๋ค.์ด ๊ธฐ๋ฅ์ ์น UI์ ์ถ๊ฐ ํ ์ ์์ต๋๊น?
๊ฐ์ฌ
jdavis3980
+1 qbittorrent-nox์ RSS ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ฌ X ์๋์ฐ๊ฐ์๋ qBittorrent์ ๊ธฐ๋ฅ ํจ๋ฆฌํฐ๋ฅผ ๊ฐ๋๋กํ์ญ์์ค.
+1
Windows์์ +1
+1
+1
+1
@buinsky ๋๋ ๋น์ ์ด ์น ์ธํฐํ์ด์ค์์ ์ผํ ๊ฒ์ ๋ณด์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ด ์ ์ฉ ํ ๊ฒ ๊ฐ์ต๋๋ค.
+1
๊ทธ ๋๋ฝ ๋ ๊ธฐ๋ฅ์ ์๋ง๋ uTorrent์์ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ์ฌ๋๋ค์์ํ ๊ฑฐ๋ ์ฐจ๋จ๊ธฐ ์ผ ๊ฒ์ ๋๋ค. ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ ํ๋ฅญํ๊ณ ๋ ์ข์ต๋๋ค.
๊ฐ์ฌํ๊ณ ์ข์ ์ผ์ ๊ณ์ํ์ญ์์ค :)
+1
์ด๋ฐ ์ผ์ด ์ผ์ด๋๊ณ ์ถ์ต๋๋ค.
+1
+1 ์์ ๊ฒ์๋ฌผ์ ๋ฐ๋ผ ์ด๊ฒ์ ๋์๊ฒ ๊ฑฐ๋ ์ฐจ๋จ๊ธฐ์ ๋๋ค. ๊ทธ๊ฒ์ด ์ผ์ด๋๋ ๊ฒ์๋ณด๊ณ ์ถ์ต๋๋ค.
+1
์ด ๋๋ฌธ์ uTorrent ๋ธ๋ก ํธ์จ์ด๋ฅผ ๊ณ ์ํด์ผํฉ๋๋ค.
+1 ์ ๋ฐ-๋ด๊ฐ ์์ง ์ฐพ์ ์ต๊ณ ์ ํค๋๋ฆฌ์ค ํด๋ผ์ด์ธํธ.
+1
+1. ์ด๊ฒ์ ๋งค์ฐ ์ ์ฉ ํ ๊ฒ์ ๋๋ค.
๋ถ๋! +1
์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ญ์์ค! +1
์ด ๊ธฐ๋ฅ์ ๋ํ +1
+1
์ฒ์๋ถํฐ ๋๋ฝ
+1
์ด๊ฒ์ ๋๋ฅผ utorrent์์ ์ด๋ํ๊ฒ ํ ๊ฒ์ด๋ค.
+1
์ง๊ธ์ด๊ฒ ์์ด์
+1
+1
+1
์,์ด ๊ธฐ๋ฅ์ ๊ฐ๊ณ ์ถ์ด์! ์์ด ํจ๋์์ ์ ์ด ํ ์ ์์ต๋๋ค :-). : +1 :
+1์ ํค๋๋ฆฌ์ค ์๋ฒ์ฉ RSS๊ฐ์๋ ์น UI๊ฐ ํ์ํฉ๋๋ค.
+1
+1
+1
+1
+1
+1
+1
+1
+1
3 ๋ ์ด ์ง๋ ์ง๊ธ๋ ํค๋๋ฆฌ์ค ๋ฒ์ ์์ RSS ํผ๋๋ฅผ ์ง์ํ์ง ์์ต๋๊น? Windows ๋ฒ์ ์ ํ๋ฅญํ์ง๋ง ์ค๋ง ์ค๋ฝ์ต๋๋ค.
์๋ง๋ ๋๊ตฐ๊ฐ๊ฐ .conf ํธ์ง์ ๋ํ ์ง์นจ์ ์ค ์ ์์ต๋๊น? ๋๋ ๊ทธ๊ฒ์ ์ซ์ดํ์ง๋ ์์ง๋ง ์ฌ์ ํ UI๊ฐ ๋ฐ๋ผ ์ค๋ ๊ฒ์๋ณด๊ณ ์ถ์ต๋๋ค.
์ ์ฅ ๊ฒฝ๋ก์ ๋ํด ๋ช ๊ฐ์ง ๋ค๋ฅธ ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ์ฌ ํ์ผ์ ํธ์งํ๋ ค๊ณ ์๋ํ์ง๋ง ์๋ํ์ง ๋ชปํ์ต๋๋ค. ๋์ flexget์ ์ฌ์ฉํด์ผํ์ต๋๋ค.
+1
+1
๋๋ ํ์ ์์ค์ด๊ณ ํ๋ฐํ๊ฒ ๊ฐ๋ฐ๋์ง ์์ ๊ฒ ๊ฐ์ uTorrent ์๋ฒ์์ ๋ง์ด๊ทธ๋ ์ด์ ํ๊ณ ์ถ์ง๋ง ์ด๊ฒ์ด ๋๋ฅผ ๋ง๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋๋ค.
+1
+1
๊ธ์์, ๊ฒฐ๊ตญ ์ ๋ Flexget์ ์ฌ์ฉํ์ต๋๋ค. ํค๋์์ด ์คํํ ์์๋ ๋์์ ํ์ํ ๊ธฐ๋ฅ์ ๊ณ์ ์ ๊ณต ํ ์ ์์ต๋๋ค.
๊ทธ๊ฒ์ ์์ ๋งํฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋์ผ๋ก ์ป๋ ๊ธฐ๋ฅ์ ๋ฐฐ์ ํฉ๋๋ค.
+1
+1
+1 (์ถ๊ฐ๋๊ณ ์๋ฃ๋ ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํด๋ ๋ฌธ์ ๊ฐ๋์ง ์์)
2016 ๋
6 ์ 25 ์ผ ํ ์์ผ ์คํ 5:23 Rihards Skuja [email protected]
์ผ๋ค :
+1
โ
์ด ์ค๋ ๋๋ฅผ ๊ตฌ๋ ํ๊ธฐ ๋๋ฌธ์์ด ๋ฉ์์ง๊ฐ ์ ์ก๋์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/qbittorrent/qBittorrent/issues/453#issuecomment -228571166,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe/AGbY-5ty-GOC3gqmyGctI5zjwX6cJMGhks5qPZw8gaJpZM4AdExq
.
ssh X11 ํฌ์๋ฉ์ ์ ์๋ํ์ง๋ง webUI์์ด ๊ธฐ๋ฅ์ ํจ์ฌ ๋ ์ข์ต๋๋ค.
+1์ ํ์ฌ flexget์ ์ฌ์ฉํ๊ณ ์์ง๋ง qbittorrent-nox์ RSS๋ฅผ ํตํฉํ๋ฉด ํ์์ ์ ๋๋ค!
+1
์ถ๊ฐ๋๊ณ ์๋ฃ๋ ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ ๊ฒ์ ๋์ ์ ์์ต๋๋ค.
# 5547์ ์ถ๊ฐ๋จ
+1
+1
+1
์๋ฌด๋์ด ๊ธฐ๋ฅ์ ํฌํฌ ๋ ํจ์น์ ๊ตฌํํ๋ ค๊ณ ํ์ง ์์์ต๋๊น? ์ด ๋ชจ๋ ์๊ฐ์ด ์ง๋ ํ์๋ ์ฌ์ ํ์ด ๊ธฐ๋ณธ์ ์ด๊ณ ์ ๋ง๋ก ํ์ํ ๊ธฐ๋ฅ์ ๊ตฌํ์ด ์๋ค๋ ๊ฒ์ ์ ๋ง ์ด์ํฉ๋๋ค.
์ด๊ฒ์ +1. ํค๋๋ฆฌ์ค ํ ๋ ํธ / PleX ์์๋ฅผ ์คํํ๋ฉด ์๋ฃ๋ฉ๋๋ค.
+1
+100!
์, +1.
์์ฐ, qbtorrent nox๊ฐ ์ง์ํ์ง ์๋์ง ํ์ธํ๊ธฐ ์ํด ๊ตฌ์ฑ / ๊ธฐํ ์์์ด ์ต์ ์ ์ฐพ๋ ๋ฐ ํ ์๊ฐ์ ๋ณด๋์ต๋๋ค. ์ผ. :์ค๋งํ:
์ง๊ธ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ฐ์ถ Sonarr๋ฅผ ์ฌ์ฉํ๊ณ ์์ง๋ง ๊ฐ๋ณ๊ณ ํตํฉ ๋ ๊ฒ์ ์ฐพ๊ณ ์์์ต๋๋ค.
+1
+1
๋๋๊ฒ๋ 4 ๋ ์ด ์ง๋๋ฉด ์์ง ์ถ๊ฐ๋์ง ์์์ต๋๋ค. ๋ชจ๋๊ฐ rTorrent๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋น์ฐํฉ๋๋ค.
+1 OMG ์ด๊ฒ์ ์ ๋ง ์ฐ์ค๊ฝ ์ค๋ฝ์ต๋๋ค. qBittorent๋ฅผ ์ ๋ง ์ข์ bittorent ํด๋ผ์ด์ธํธ๋ก ๋ง๋ค ์ ์์ต๋๋ค.
RSS ๊ด๋ จ WebAPI๋ # 6505์ ์ผ๋ถ๋ก ๊ตฌํ๋์ด์ผํฉ๋๋ค.
WebUI์์ RSS ์ง์์ ๊ตฌํํ๊ธฐ ์์ํ์ต๋๋ค. ํ์ง๋ง ์ ๊ฐ ๋ณต์ฉํ๋ ํญ์ฐ์ธ์ ๋๋ฌธ์์ด ์์ ์ ์๋ฃ ํ ์ ์์ต๋๋ค.
@ qbittorrent / webdev
๋๊ตฐ๊ฐ๊ฐ WebUI์์ RSS ์ง์์ ๊ตฌํํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ๋ด ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
+1
+1
+1
๋ ๋ค๋ฅธ ์ฌ๋์ด ์๋ ํ์ +1์ ์ถ๊ฐํฉ๋๋ค.
+1
+1์ ์๋ง๋ RSS ํผ๋๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ์ด ์๋๋ก API๋ฅผ ์ง์ ์ฐ๋ฅด๊ธฐ ์ํด ๋ฌด์ธ๊ฐ๋ฅผ ์์ฑํ๊ฒ ๋ ๊ฒ์ ๋๋ค.
@buinsky , ์์ง๋ ์ด๊ฒ์ ๋ํ ์์ ์ ์๋ฃ ํ ์ ์์ต๋๊น?
@glassez ๋ถํํ๋ ํ ์ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ ธ๋ ฅํ @glassez ๋ฅผ ์ ๋ง
+1
+1
+1
+1
+1
+1 ํ์ํ ํ ๊ฐ์ง ... rss ๋ณ๊ฒฝ์ ์ํด ๋ด ์๋ฒ์ ์๊ฒฉ์ผ๋ก ๊ท์ฐฎ๊ฒํด์ผํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฉ์ง ํด๋ผ์ด์ธํธ!
+1์ ์ด๊ฒ์ด ๋ฌธ์ ๊ฐ ์๋๋ผ๋ ์ฌ์ค์กฐ์ฐจ ์์ง ๋ชปํ์ต๋๋ค. :( ํ์คํ ๊ทธ๊ฒ์ ์ํ ๊ฒ์ ๋๋ค!
์ด ๊ธฐ๋ฅ์ ๊ตฌํํ์ญ์์ค!
๋ถํํ๋์ด ํ๋ก์ ํธ์๋ ํ์ฌ ํ์ฑ ์น ๊ฐ๋ฐ์๊ฐ ์์ต๋๋ค.
+1
qbittorrent ํํ์ด์ง๋ฅผ๋ณด๊ณ ํค๋์๋ ์ค์น๋ก ๋ฐ๋ก ๋ฐ์ด ๋ค์์ต๋๋ค.
์ด ํ ์คํธ๋ ๋๋ฝ ๋ ๊ธฐ๋ฅ์ด ์๋ค๊ณ ๋งํ๋ ๊ฒ์ด ์๋๋ผ GUI๊ฐ ์ ํํ ๋์ผํ์ง ์๋ค๋ ๊ฒ์ ๋๋ค.
SSH๋ฅผ ํตํด qbittorrent์์ RSS๋ฅผ ์๋์ํค๋ ๊ฐ์ด๋๊ฐ ์์ต๋๊น?
+1
+1!
์์ง์๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
์ด๊ฒ์ ๊ด์ฌ์ด์๋ ์ฌ๋์ ์์ง ๊ตฌํํ์ง ์์๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ ๋ฆฌํ์คํธ๋ฅผ ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฌ๋๋ค์ด ๊ธฐ๋ค๋ฆฌ๋ ๋์ Linux 3.3_alpha ์ฉ utorrent ์๋ฒ์๋ webUI์ rss ๊ตฌ์ฑ ์์๊ฐ ์์์ ์ง์ ํ๊ณ ์ถ์ต๋๋ค.
์ปค๋ฎค๋ํฐ 0.83 webui์์๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค (์คํก ์น UI์๋ ๋ช ๊ฐ์ง๊ฐ ๋ถ์กฑํฉ๋๋ค)
ํ์ฌ ์ ์ ํ ์น API๊ฐ ๊ฐ๋ฐ ์ค์
๋๋ค. 4.0.x ๋ธ๋์น์ ์ฒซ ๋ฒ์งธ ์
๋ฐ์ดํธ์ ํจ๊ป ์ถ์๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์น UI๋ ํ์ฌ ์น ๊ฐ๋ฐ์๊ฐ ์์ด์ ์ถ์ ์ผ์ ์ ์ก์ ์ ์์ต๋๋ค.
๋ฐฉ๊ธ Rockstor NAS๋ก ์ด๋ํ๊ณ ๋ด RSS ๊ตฌ์ฑ์ ์น UI์์ ๊ฐ์ ธ์ฌ ์ ์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ์์ผ...
+1! ๋ฐฉ๊ธ Netgear NAS๋ฅผ ๊ตฌ์ ํ์ผ๋ฉฐ์ด ๊ธฐ๋ฅ์ ์น UI ๋ฒ์ ์ ์ ๋ง ํ์ํฉ๋๋ค!
+1
+1
+1
+1
ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ํ์ํ ๊ฒฝ์ฐ ์ด๊ฒ์ ์ผ์ข
์ ํด๊ฒฐ์ฑ
์
๋๋ค.
https://askubuntu.com/questions/498232/using-rss-in-qbittorrent
+1
qBittorrent v4.1์๋ ์คํ์ ์ธ RSS ๊ด๋ฆฌ API๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ๋ฅผ๋ณด์ญ์์ค .
๊ณง ์ง์ ๋ ๊น์? qbittorent๋ฅผ ์๋น์ค๋ก ์คํํฉ๋๋ค. RSS ๋ค์ด๋ก๋๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์๋น์ค๋ฅผ ์ข ๋ฃํ๊ณ ๋ฐ์คํฌํฑ์์ ์์ํด์ผํ๋ ๊ฒ์ด ์ ๋ง ์ง์ฆ๋ฉ๋๋ค.
๊ณง ์ง์ ๋ ๊น์?
๋ด ์ด์ ๋๊ธ์ ๋ชป ๋ดค์ด? ์๋๋ฉด ์น UI๋ฅผ ์๋ฏธํฉ๋๊น?
์น UI๋ฅผ ์๋ฏธํ์ง๋ง Chrome ์ฉ Tamper Monkey๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ ๋ํ ๋ทฐ๋ฅผ ์ฝ์ ํ๋ ์ค์ ๋๋ค.
์ฌ๊ธฐ์ Chrome ์ฉ Tampermonkey๊ฐ ํ์ํฉ๋๋ค. ๋งค์ฐ ํ ์คํธ๋์ง ์์์ผ๋ฉฐ ๊ท์น์ด๋ ์ ์ฌํ ๊ฒ์ ๋ฎ์ด ์ฐ๋๋ผ๋ ๋๋ฅผ ๋น๋ํ์ง ๋ง์ญ์์ค.
// ==UserScript==
// <strong i="6">@name</strong> qbittorrent rss
// <strong i="7">@namespace</strong> http://tampermonkey.net/
// <strong i="8">@version</strong> 0.1
// <strong i="9">@description</strong> Adds rss rule window to qBittorent web UI
// <strong i="10">@author</strong> Anders Malmgren
// <strong i="11">@match</strong> http://localhost:8080
// <strong i="12">@grant</strong> none
// <strong i="13">@require</strong> http://knockoutjs.com/downloads/knockout-3.4.2.js
// <strong i="14">@require</strong> http://andersmalmgren.github.io/Knockout.BindingConventions/src/Knockout.BindingConventions.js
// ==/UserScript==
(function() {
var modalTemplate = '<div>\
<select data-name="rules"></select>\
<button data-name="addRule">Add</button>\
<button data-name="deleteSelectedRule">Delete</button>\
<div data-name="selectedRule">\
<div><label><input data-name="enabled"/>Enabled</label></div>\
<div><label>Name</label><input data-name="name" /></div>\
<div><label>Must contain</label><input data-name="mustContain" /></div>\
<div><label>Must NOT contain</label><input data-name="mustNotContain" /></div>\
<div><label>Save path</label><input data-name="savePath" /></div>\
<label>Feeds</label>\
<div data-name="feeds">\
<div><label><input data-name="enabled"/><span data-name="name"></span></label></div>\
</div>\
<button data-name="save">Save</button>\
</div>\
</div>'
var button = new Element("a", { html: "RSS<div data-name='modal' data-bind='modal: modal'>" + modalTemplate + "</div>"});
button.setAttribute("data-bind", "click: showRss");
var feeds = null;
new Request.JSON({
url: new URI('api/v2/rss/items'),
noCache: true,
method: 'get',
onFailure: function() {
//TODO: error handling
},
onSuccess: function(response) {
feeds = Object.keys(response).map(function(key) { return { name: key, url: response[key] != "" ? response[key] : key }; })
}
}).send();
$("mochaToolbar").append(button);
var Model = function() {
this.modal = ko.observable().extend({notify: 'always'});;
this.modal.subscribe(function(value) { console.log(value);});
};
Model.prototype = {
showRss: function() {
if(this.modal() == null) {
this.modal(new RssModel());
}
}
};
var RssModel = function() {
this.rules = ko.observableArray();
this.selectedRule = ko.observable();
this.listRules();
this.canDeleteSelectedRule = ko.computed(function() { return this.selectedRule() != null }, this);
};
RssModel.prototype = {
listRules: function() {
var url = new URI('api/v2/rss/rules');
var request = new Request.JSON({
url: url,
noCache: true,
method: 'get',
onFailure: function() {
//TODO: error handling
},
onSuccess: function(response) {
this.rules(Object.keys(response).map(function(key) { return new Rule(key, response[key]); }));
}.bind(this)
}).send();
},
addRule: function() {
this.rules.push(new Rule("Untitled", { enabled: false, mustContain: "", mustNotContain: "", savePath: "", affectedFeeds: []}));
},
deleteSelectedRule: function() {
var rule = this.selectedRule();
var url = new URI('api/v2/rss/removeRule');
url.setData('ruleName', rule.name());
new Request.JSON({
url: url,
noCache: true,
method: 'get',
onFailure: function(response) {
//Unpexted behaviour, eror with status 200 trigger, why?
if(response.status !== 200) {
throw "Error deleting rule";
}
this.rules.remove(rule);
}.bind(this)
}).send();
}
};
var Rule = function(name, data) {
this.name = ko.observable(name);
this.enabled = data.enabled;
this.mustContain = data.mustContain;
this.mustNotContain = data.mustNotContain;
this.savePath = data.savePath;
this.feeds = feeds.map(function(f) { return new Feed(f, data.affectedFeeds.indexOf(f.url) >= 0)});
this.data = data;
this.canSave = ko.observable(true);
};
Rule.prototype = {
save: function() {
var toSave = Object.assign({}, this.data);
for (var key in toSave) {
if (this.hasOwnProperty(key)) {
toSave[key] = ko.utils.unwrapObservable(this[key]);
}
}
toSave.affectedFeeds = this.feeds.filter(function(f) { return f.enabled; }).map(function(f) { return f.url; });
var json = ko.toJSON(toSave);
var dirty = ko.toJSON(this.data) !== json;
if(!dirty) return;
var url = new URI('api/v2/rss/setRule');
url.setData('ruleName', this.name());
url.setData("ruleDef", json);
this.canSave(false);
var request = new Request.JSON({
url: url,
noCache: true,
method: 'get',
onFailure: function(response) {
//Unpexted behaviour, eror with status 200 trigger, why?
if(response.status !== 200) {
throw "Error saving rule";
}
this.data = toSave;
this.canSave(true);
}.bind(this)
}).send();
}
};
var Feed = function(data, enabled) {
this.name = data.name;
this.url = data.url;
this.enabled = enabled;
};
var orgOptionsApply = ko.bindingConventions.conventionBinders.options.apply;
ko.bindingConventions.conventionBinders.options.apply = function(name, element, bindings, options, type, data, viewModel) {
orgOptionsApply(name, element, bindings, options, type, data, viewModel)
if (options.length === 0 || options[0]["name"]) {
bindings.optionsText = function() { return "name"; };
}
};
ko.bindingHandlers.modal = {
init: function(element, valueAccessor) {
valueAccessor().subscribe(function(value) {
if(value) {
setTimeout(function () {
new MochaUI.Window({
title: "RSS auto download",
content: element,
storeOnClose: true,
addClass: 'windowFrame', // fixes iframe scrolling on iOS Safari
scrollbars: true,
maximizable: false,
closable: true,
paddingVertical: 0,
paddingHorizontal: 0,
onClose: function() {
valueAccessor()(null);
}
});
}, 0);
}
});
}
}
ko.applyBindings(new Model(), button)
})();
ํน์ impactedFeeds URL๋ก setRule์ ํธ์ถํ๋ฉด qbitTorrent๋ฅผ ํผ๋ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ฉฐ, ์ํฅ์๋ฐ๋ ํผ๋๋ฅผ ๊ท์น์ ์ ์ฅํ์ง ์์ผ๋ฉฐ, ๋ด๊ฐ ์ ํํ์ง ์์๋ ๊ท์น์ ํ์ฑํํฉ๋๋ค.
URL (์์ ๋ ๋ฐฉ์์ ์๊ตฌ ๋ฐ์ดํฐ)
" https://xxx.org/rss/feed?passkey=xxxx&feed=dl&type_origin=1&cats [] = 1c1c3 & cats [] = 1c1c6 & cats [] = 2c1c3 & cats [] = 2c1c6"
ํ์ฌ API์ ์์์น ๋ชปํ ๋์ / ๋ฒ๊ทธ๋ฅผ ๊ณ ๋ คํ์ฌ ์์ ์คํฌ๋ฆฝํธ๋ฅผ ์
๋ฐ์ดํธํ์ต๋๋ค.
๋ํ ํผ๋๋ฅผ ๋ ๋งคํ์ง ๋ง๊ณ ์ด๋ฆ์ URL๊ณผ ๋๊ธฐํํ์ญ์์ค.
์๋ ํ์ธ์! ์ฐ์ ๋๋ณธ์ ๋ํด Anders์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ๊ทธ๊ฒ์ ์๋ํ๊ณ ์๋ง๋ ๋ด๊ฐ ๋ณด๋ ๊ฒ์ ์๋จ ๋ฉ๋ด์ ์ฃผํฉ์ "RSS"(ํ๋ฉด ์บก์ฒ ์ฐธ์กฐ)์ด๊ธฐ ๋๋ฌธ์ ๋ญ๊ฐ ์๋ชปํ์ ์ ์์ต๋๋ค. ... ์ฐ๋ฆฌ๋ ๋ฌด์์ ์ด๋์์๋ณด์์ผํฉ๋๊น? ๋๋ ๋ค๋ฅธ ๊ฒ์ ์ฐพ์ ์ ์์๋ค. (Btw, "์ถ๊ฐ"๋ฅผ ํด๋ฆญํด๋ ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์๊ณ ๋๋กญ ๋ค์ด ๋ฉ๋ด๊ฐ ๋น์ด ์๊ณ ํธ์ง ํ ์ ์์ต๋๋ค)
๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
์๋ ํ์ธ์ @jadazul ๊ฐ์ฌํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ๋ณด์ผ ๊ฒ์
๋๋ค.
v4.1.1 ์น UI์ ๋ํด ํ ์คํธ๋์์ต๋๋ค.
์๋ํ๋ ค๋ฉด ํผ๋๋ฅผ ์ ์ํด์ผ ํ ์ ์์ผ๋ฉฐ ๊ท์น์ ๋ํ ์ ์ผํ UI์ ๋๋ค. RSS ํผ๋๊ฐ ์์ง๋ง ๊ท์น์ด์๋ ๊ฒฝ์ฐ ์ถ๊ฐ๋ฅผ ๋๋ฌ ํ๋๋ฅผ ์ฑ์ธ ์ ์์ต๋๋ค. 4.1.1์๋ ๋ฒ๊ทธ๊ฐ ์์ผ๋ฏ๋ก ์์ ๊ฒ์๋ฌผ์์ ๋ด ์์ ๊ฐ์ด ๊ธด URL ํผ๋๋ฅผ ํฌํจํ๋ ๊ท์น์ ์ ์ฅํ ์ ์์ต๋๋ค.
4.1.1์๋ ๋ฒ๊ทธ๊ฐ ์์ผ๋ฏ๋ก ์์ ๊ฒ์๋ฌผ์์ ๋ด ์์ ๊ฐ์ด ๊ธด URL ํผ๋๋ฅผ ํฌํจํ๋ ๊ท์น์ ์ ์ฅํ ์ ์์ต๋๋ค.
์คํฌ๋ฆฝํธ๊ฐ qBittorrent์ ํผ๋๋ฅผ ์ถ๊ฐ ํ ๋ ์ฌ์ฉํ ๊ฒ๊ณผ ๋์ผํ ํ์์ผ๋ก ํผ๋ URL์ ์ ์กํฉ๋๊น?
๋ฟก๋ฟก
๋ฐํ ๋ URL์ ์ฌ์ฉํฉ๋๋ค.
api / v2 / rss / ํญ๋ชฉ
๋ค์ ๊ฐ์ฌํฉ๋๋ค @AndersMalmgren
ํค๋๋ฆฌ์ค ์ฐ๋ถํฌ ์๋ฒ์ qBittorrent-nox๋ฅผ ์ค์นํ์ ๋ RSS ํผ๋ ํ๋๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ ์ ์์์ต๋๋ค. api์ ๋ํ Wiki๋ฅผ ์ฝ์์ง๋ง ๊ทธ ๋ฐฉ๋ฒ์ ๋ํ ์์ ๋ ๋ง์ง ์์ต๋๋ค ... ssh ํฐ๋ฏธ๋์์ curl์ ์ฌ์ฉํ์ฌ ๋ก๊ทธ์ธํ๊ณ ์ฟ ํค๋ฅผ ์ ๊ณตํ์ง๋ง ์๋ํ์ง ์๋ / api / v2๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋งค๋ฒ 404 ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ๋ฐฉ๋ฒ์ ๋ํ ์๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ์ ๋๋ก ์ํํ์ฌ ํฌ๊ธฐํ๊ณ ์คํฌ๋ฆฝํธ๋ฅผ ์๋ํ์ต๋๋ค (ํ์ง๋ง ์ด์ ๋ ๊ธฐ์กด ํผ๋๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์์ ์ดํดํฉ๋๋ค).
๋์ค์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ด๋ฆฌ ํ ์ โโ์๋๋ก ํผ๋๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? ์ผ๋ถ ๊ตฌ์ฑ ํ์ผ์ ์๋์ผ๋ก ์์ ํ๋๋ผ๋ ๋ฐฉ๋ฒ์ ์ฐพ์์ผํฉ๋๋ค.
๋ค์ ํ ๋ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
๋์ค์ ์ดํด๋ณผ ์ ์์ต๋๋ค. ๊ธฐ์กด ํผ๋์ ๊ท์น์ ์ถ๊ฐํ๋ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ง์ํ๊ธฐ ์ํด ๋ง๋ค์์ต๋๋ค.
ํธ์ง : ์ฝ์์์ ์ค๋ฅ๋ฅผ ํ์ธ ํ์ต๋๊น?
์ฃ์กํฉ๋๋ค. ํ์ธํ์ค ๋ ๋ฐฉ๊ธ ์์ ํ์ ๋ด์ฉ์ ํ์ธํ์ต๋๋ค.
curl๋ก ์๋ ํ ๋๋ง๋ค 404 ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ์์ธํ ๋ด์ฉ์ ํ์๋์ง ์์ต๋๋ค.
4.1.1์ ์์ต๋๊น? RSS API๋ 4.1์์ ์ถ๊ฐ๋์์ต๋๋ค.
์, ํค๋๋ฆฌ์ค Ubuntu Server 18.04์ qBittorrent-nox v4.1.1์ ์ค์นํ์ต๋๋ค.
ํธ์ง : ์คํฌ๋์น, ๋ฐฉ๊ธ ํ์ธํ๊ณ ์ฌ์ง์ด ๋ง์ง๋ง ๋ฒ์ ์ด ์๋ค๊ณ ์๊ฐํ์ต๋๋ค (์ฐ๋ถํฌ์์ apt-get์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ง์ง๋ง ๋ฒ์ ์ด๋ผ๊ณ ๊ฐ์ ํ์ต๋๋ค) ๋์ v4.0.3์ ์ค์นํ์ต๋๋ค ... ๊ณง ์ต์ ๋ฒ์ ์ ์ค์นํด ๋ณด๊ฒ ์ต๋๋ค. ์ด์จ๋ ๋น์ ์ ๋์์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
setRule์ 4.1.2์์ ์ฌ์ ํ ์๋ํ์ง ์์ต๋๋ค.
+1
setRule์ด 4.1.3์์ ์ฌ์ ํ ์๋ํ์ง ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ ๊ฐ ๋ง๋ ๋์์์ด ์์ต๋๋ค. ํผ๋ URL์ ์ค์ ํ๋ ค๊ณ ํ ๋ ๋ชจ๋ ๊ฒ์ด ์๋ชป๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
@AndersMalmgren ์ Alt WebUI https://github.com/qbittorrent/qBittorrent/wiki/Alternate-WebUI-usage ๋ฅผ ํตํด Tampermonkey๋ฅผ ์ฌ์ฉํ๋ ๋์ webui ๊ฐ์ ์๋ฒ ์ธก์ ์ฝ์ ํ ์ ์์์ ๊ธฐ์ต
setRule์ด 4.1.3์์ ์ฌ์ ํ ์๋ํ์ง ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ ๊ฐ ๋ง๋ ๋์์์ด ์์ต๋๋ค. ํผ๋ URL์ ์ค์ ํ๋ ค๊ณ ํ ๋ ๋ชจ๋ ๊ฒ์ด ์๋ชป๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
ํ๋กํ ์ฝ์ด ๋ณ๊ฒฝ๋์์ต๋๋ค. ์ผ๋ง ์ ์ ์์ ํ ๋ด์ฉ์ ์ ํํ ๊ธฐ์ตํ์ง ๋ชปํฉ๋๋ค. ํ์ธํด์ฃผ์ญ์์ค.
`
// ==UserScript==
// <strong i="11">@name</strong> qbittorrent rss
// <strong i="12">@namespace</strong> http://tampermonkey.net/
// <strong i="13">@version</strong> 0.1
// <strong i="14">@description</strong> Adds rss rule window to qBittorent web UI
// <strong i="15">@author</strong> Anders Malmgren
// <strong i="16">@match</strong>
// <strong i="17">@grant</strong> none
// <strong i="18">@require</strong> http://knockoutjs.com/downloads/knockout-3.4.2.js
// <strong i="19">@require</strong> http://andersmalmgren.github.io/Knockout.BindingConventions/src/Knockout.BindingConventions.js
// ==/UserScript==
(function() {
var modalTemplate = '<div>\
<select data-name="rules"></select>\
<button data-name="addRule">Add</button>\
<button data-name="deleteSelectedRule">Delete</button>\
<div data-name="selectedRule">\
<div><label><input data-name="enabled"/>Enabled</label></div>\
<div><label>Name</label><input data-name="name" /></div>\
<div><label>Must contain</label><input data-name="mustContain" /></div>\
<div><label>Must NOT contain</label><input data-name="mustNotContain" /></div>\
<div><label>Assigned Category</label><input data-name="assignedCategory" /></div>\
<div><label>Save path</label><input data-name="savePath" /></div>\
<label>Feeds</label>\
<div data-name="feeds">\
<div><label><input data-name="enabled"/><span data-name="name"></span></label></div>\
</div>\
<button data-name="save">Save</button>\
</div>\
</div>'
var button = new Element("a", { html: "RSS<div data-name='modal' data-bind='modal: modal'>" + modalTemplate + "</div>"});
button.setAttribute("data-bind", "click: showRss");
var feeds = null;
new Request.JSON({
url: new URI('api/v2/rss/items'),
noCache: true,
method: 'get',
onFailure: function() {
//TODO: error handling
},
onSuccess: function(response) {
feeds = Object.keys(response).map(function(key) { return { name: key, url: response[key] != "" ? response[key]["url"] : key }; })
}
}).send();
$("mochaToolbar").append(button);
var Model = function() {
this.modal = ko.observable().extend({notify: 'always'});;
this.modal.subscribe(function(value) { console.log(value);});
};
Model.prototype = {
showRss: function() {
if(this.modal() == null) {
this.modal(new RssModel());
}
}
};
var RssModel = function() {
this.rules = ko.observableArray();
this.selectedRule = ko.observable();
this.listRules();
this.canDeleteSelectedRule = ko.computed(function() { return this.selectedRule() != null }, this);
};
RssModel.prototype = {
listRules: function() {
var url = new URI('api/v2/rss/rules');
var request = new Request.JSON({
url: url,
noCache: true,
method: 'get',
onFailure: function() {
//TODO: error handling
},
onSuccess: function(response) {
this.rules(Object.keys(response).map(function(key) { return new Rule(key, response[key]); }));
}.bind(this)
}).send();
},
addRule: function() {
this.rules.push(new Rule("Untitled", { enabled: false, mustContain: "", mustNotContain: "",assignedCategory: "", savePath: "", affectedFeeds: []}));
},
deleteSelectedRule: function() {
var rule = this.selectedRule();
var url = new URI('api/v2/rss/removeRule');
url.setData('ruleName', rule.name());
new Request.JSON({
url: url,
noCache: true,
method: 'get',
onFailure: function(response) {
//Unpexted behaviour, eror with status 200 trigger, why?
if(response.status !== 200) {
throw "Error deleting rule";
}
this.rules.remove(rule);
}.bind(this)
}).send();
}
};
var Rule = function(name, data) {
this.name = ko.observable(name);
this.enabled = data.enabled;
this.mustContain = data.mustContain;
this.assignedCategory = data.assignedCategory;
this.mustNotContain = data.mustNotContain;
this.savePath = data.savePath;
this.feeds = feeds.map(function(f) { return new Feed(f, data.affectedFeeds.indexOf(f.url) >= 0)});
this.data = data;
this.canSave = ko.observable(true);
};
Rule.prototype = {
save: function() {
var toSave = Object.assign({}, this.data);
for (var key in toSave) {
if (this.hasOwnProperty(key)) {
toSave[key] = ko.utils.unwrapObservable(this[key]);
}
}
toSave.affectedFeeds = this.feeds.filter(function(f) { return f.enabled; }).map(function(f) { return f.url; });
var json = ko.toJSON(toSave);
var dirty = ko.toJSON(this.data) !== json;
if(!dirty) return;
var url = new URI('api/v2/rss/setRule');
url.setData('ruleName', this.name());
url.setData("ruleDef", json);
this.canSave(false);
var request = new Request.JSON({
url: url,
noCache: true,
method: 'get',
onFailure: function(response) {
//Unpexted behaviour, eror with status 200 trigger, why?
if(response.status !== 200) {
throw "Error saving rule";
}
this.data = toSave;
this.canSave(true);
}.bind(this)
}).send();
}
};
var Feed = function(data, enabled) {
this.name = data.name;
this.url = data.url;
this.enabled = enabled;
};
var orgOptionsApply = ko.bindingConventions.conventionBinders.options.apply;
ko.bindingConventions.conventionBinders.options.apply = function(name, element, bindings, options, type, data, viewModel) {
orgOptionsApply(name, element, bindings, options, type, data, viewModel)
if (options.length === 0 || options[0]["name"]) {
bindings.optionsText = function() { return "name"; };
}
};
ko.bindingHandlers.modal = {
init: function(element, valueAccessor) {
valueAccessor().subscribe(function(value) {
if(value) {
setTimeout(function () {
new MochaUI.Window({
title: "RSS auto download",
content: element,
storeOnClose: true,
addClass: 'windowFrame', // fixes iframe scrolling on iOS Safari
scrollbars: true,
maximizable: false,
closable: true,
paddingVertical: 0,
paddingHorizontal: 0,
onClose: function() {
valueAccessor()(null);
}
});
}, 0);
}
});
}
}
ko.applyBindings(new Model(), button)
})();
`
@ rqi14 ์์ ๊ฒ์ ํ ์ฝ๋๋ฅผ ๋ณ๊ฒฝ ํ์ต๋๊น?
๋๋ ๋ด๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ธฐ์ตํ๋ค๋ฉด URL์ด ๋์ด๋ ํ์์ด์๋ ๊ฒ์ด ์ผ๋ง ์ ์ ๋ณ๊ฒฝ๋ ๊ฒ์ remberํ๋ค. setRules๋ ์ฌ์ ํ URL ๋ฌธ์์ด์ ๋ฐฐ์ด์ ์ทจํ๋ค.
@ rqi14 ์์ ๊ฒ์ ํ ์ฝ๋๋ฅผ ๋ณ๊ฒฝ ํ์ต๋๊น?
๋๋ ๋ด๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๊ธฐ์ตํ๋ค๋ฉด URL์ด ๋์ด๋ ํ์์ด์๋ ๊ฒ์ด ์ผ๋ง ์ ์ ๋ณ๊ฒฝ๋ ๊ฒ์ remberํ๋ค. setRules๋ ์ฌ์ ํ URL ๋ฌธ์์ด์ ๋ฐฐ์ด์ ์ทจํ๋ค.
์ ๋๋ ํ์ด. ๋ด๊ฐ ๋งํ๋๋ก ์ด๋ค ์์ ์ํ๋์ง ๊ธฐ์ต์ด ๋์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ง๊ธ์ ์๋ํ๊ณ ์์ต๋๋ค.
@ rqi14 ๋น๊ต ๋๊ตฌ์์ ๋ ๋ฒ์ ์ ๋น๊ตํ์ผ๋ฉฐ ์, ์ด๋ฏธ ๋ณ๊ฒฝ ํ ์ฌํญ์ ๋๋ค. api / v2 / rss / items์์ ๋ฐํ ๋ ํผ๋ URL์ ํ์์ ๋ณ๊ฒฝํ์ต๋๋ค.
VNC ๋ฐ ์ผ๋ฐ GUI๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ GUI๋ฅผ ์คํํ๋ ์ปดํจํฐ์์ ์ด๋ฏธ RSS ํผ๋ ์ค์ ์ ์ฌ์ฉํ์ฌ ์ค์ ์ ๋ณต์ฌ ํ ๋ qbittorrent๋ฅผ ์ค์งํ๊ณ qbittorrent-nox๋ฅผ ์์ํ ์ ์์ต๋๊น? ์ฆ, GUI ๋ง ๋๋ฝ๋์๊ฑฐ๋ ์ ์ฒด ๊ธฐ๋ฅ ์ธํธ๊ฐ ์์ต๋๊น?
๊ทธ๋์ ๋ด๊ฐ ์ด๊ฒ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋ค๋ฉด RSS ํผ๋๋ฅผ ์ฐ๋ฆฌ ์ค์ค๋ก ์ถ๊ฐํด์ผํ๊ณ ์น UI์ ์ถ๊ฐ๋์ง ์์๊น์?
VNC ๋ฐ ์ผ๋ฐ GUI๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ GUI๋ฅผ ์คํํ๋ ์ปดํจํฐ์์ ์ด๋ฏธ RSS ํผ๋ ์ค์ ์ ์ฌ์ฉํ์ฌ ์ค์ ์ ๋ณต์ฌ ํ ๋ qbittorrent๋ฅผ ์ค์งํ๊ณ qbittorrent-nox๋ฅผ ์์ํ ์ ์์ต๋๊น? ์ฆ, GUI ๋ง ๋๋ฝ๋์๊ฑฐ๋ ์ ์ฒด ๊ธฐ๋ฅ ์ธํธ๊ฐ ์์ต๋๊น?
๋ถ๋ช ํ GUI ๋ง ๋๋ฝ๋์ด ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ํ ๋ ํธ๊ฐ ๊ฒ์๋๊ธฐ ์ ์ ํ ์คํธ๋ฅผ ์ํด -nox๋ก ์ ํํ์ผ๋ฉฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ ๋ค์ด๋ก๋๋์์ต๋๋ค.
GUI ์ถ๊ฐ๊ฐ ์ธ์ ๋์์ด๋๋์ง ์์ญ๋๊น?
์๋
ํ์ธ์, ์ฌ๊ธฐ ๋ด RSS ๊ท์น UI์ ์ต์ ๋ฒ์ ์ด ์์ต๋๋ค.
์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ชจ๋ ์์ฒญ์ โโ๋ํด ๊ฒ์๋ฌผ์ ์ฌ์ฉํฉ๋๋ค. ๋ณด๋์ค๋ก ๋ชจ๋ ํผ๋ URL์์ ์๋ํฉ๋๋ค (qbittorrent๊ฐ ํ์ฌ get ์์ฒญ์์ ๊ฒฝ๋ก๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๋ ๋ฐฉ๋ฒ์ ๋ฒ๊ทธ๊ฐ ์์ต๋๋ค).
์ด UI๋ ํ์ฌ ๊ท์น ๋ง ์ง์ํ๋ฉฐ ํผ๋ ๋ฑ์ ์ถ๊ฐ ํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ง์ ์ถ๊ฐํด๋๋ฉ๋๋ค.
// ==UserScript==
// <strong i="8">@name</strong> qbittorrent rss
// <strong i="9">@namespace</strong> http://tampermonkey.net/
// <strong i="10">@version</strong> 0.1
// <strong i="11">@description</strong> Adds rss rule window to qBittorent web UI
// <strong i="12">@author</strong> Anders Malmgren
// <strong i="13">@match</strong> http://winserver:8080
// <strong i="14">@match</strong> http://localhost:8080/
// <strong i="15">@grant</strong> none
// <strong i="16">@require</strong> http://knockoutjs.com/downloads/knockout-3.4.2.js
// <strong i="17">@require</strong> http://andersmalmgren.github.io/Knockout.BindingConventions/src/Knockout.BindingConventions.js
// ==/UserScript==
(function() {
var modalTemplate = '<div>\
<select data-name="rules"></select>\
<button data-name="addRule">Add</button>\
<button data-name="deleteSelectedRule">Delete</button>\
<div data-name="selectedRule">\
<div><label><input data-name="enabled"/>Enabled</label></div>\
<div><label>Name</label><input data-name="name" /></div>\
<div><label>Must contain</label><input data-name="mustContain" /></div>\
<div><label>Must NOT contain</label><input data-name="mustNotContain" /></div>\
<div><label>Save path</label><input data-name="savePath" /></div>\
<label>Feeds</label>\
<div data-name="feeds">\
<div><label><input data-name="enabled"/><span data-name="name"></span></label></div>\
</div>\
<button data-name="save">Save</button>\
</div>\
</div>'
var button = new Element("a", { html: "RSS<div data-name='modal' data-bind='modal: modal'>" + modalTemplate + "</div>"});
button.setAttribute("data-bind", "click: showRss");
var feeds = null;
new Request.JSON({
url: new URI('api/v2/rss/items'),
noCache: true,
method: 'get',
onFailure: function() {
//TODO: error handling
},
onSuccess: function(response) {
feeds = Object.keys(response).map(function(key) { return { name: key, url: response[key] != "" ? response[key] : key }; })
}
}).send();
$("mochaToolbar").append(button);
var Model = function() {
this.modal = ko.observable().extend({notify: 'always'});;
this.modal.subscribe(function(value) { console.log(value);});
};
Model.prototype = {
showRss: function() {
if(this.modal() == null) {
this.modal(new RssModel());
}
}
};
var RssModel = function() {
this.rules = ko.observableArray();
this.selectedRule = ko.observable();
this.listRules();
this.canDeleteSelectedRule = ko.computed(function() { return this.selectedRule() != null }, this);
};
RssModel.prototype = {
listRules: function() {
var url = new URI('api/v2/rss/rules');
var request = new Request.JSON({
url: url,
noCache: true,
method: 'get',
onFailure: function() {
//TODO: error handling
},
onSuccess: function(response) {
this.rules(Object.keys(response).map(function(key) { return new Rule(key, response[key]); }));
}.bind(this)
}).send();
},
addRule: function() {
this.rules.push(new Rule("Untitled", { enabled: false, mustContain: "", mustNotContain: "", savePath: "", affectedFeeds: []}));
},
deleteSelectedRule: function() {
var rule = this.selectedRule();
var url = new URI('api/v2/rss/removeRule');
new Request.JSON({
url: url,
noCache: true,
method: 'post',
data: { ruleName: rule.name() },
onFailure: function(response) {
//Unpexted behaviour, eror with status 200 trigger, why?
if(response.status !== 200) {
throw "Error deleting rule";
}
this.rules.remove(rule);
}.bind(this)
}).send();
}
};
var Rule = function(name, data) {
this.name = ko.observable(name);
this.enabled = data.enabled;
this.mustContain = data.mustContain;
this.mustNotContain = data.mustNotContain;
this.savePath = data.savePath;
this.feeds = feeds.map(function(f) { return new Feed(f, data.affectedFeeds.indexOf(f.url.url) >= 0)});
this.data = data;
this.canSave = ko.observable(true);
};
Rule.prototype = {
save: function() {
var toSave = Object.assign({}, this.data);
for (var key in toSave) {
if (this.hasOwnProperty(key)) {
toSave[key] = ko.utils.unwrapObservable(this[key]);
}
}
toSave.affectedFeeds = this.feeds.filter(function(f) { return f.enabled; }).map(function(f) { return f.url; });
var json = ko.toJSON(toSave);
var dirty = ko.toJSON(this.data) !== json;
if(!dirty) return;
var url = new URI('api/v2/rss/setRule');
this.canSave(false);
var request = new Request.JSON({
url: url,
noCache: true,
method: 'post',
data: { ruleName: this.name(), ruleDef: json },
onFailure: function(response) {
//Unpexted behaviour, eror with status 200 trigger, why?
if(response.status !== 200) {
throw "Error saving rule";
}
this.data = toSave;
this.canSave(true);
}.bind(this)
}).send();
}
};
var Feed = function(data, enabled) {
this.name = data.name;
this.url = data.url.url;
this.id = data.url.uid;
this.enabled = enabled;
};
var orgOptionsApply = ko.bindingConventions.conventionBinders.options.apply;
ko.bindingConventions.conventionBinders.options.apply = function(name, element, bindings, options, type, data, viewModel) {
orgOptionsApply(name, element, bindings, options, type, data, viewModel)
if (options.length === 0 || options[0]["name"]) {
bindings.optionsText = function() { return "name"; };
}
};
ko.bindingHandlers.modal = {
init: function(element, valueAccessor) {
valueAccessor().subscribe(function(value) {
if(value) {
setTimeout(function () {
new MochaUI.Window({
title: "RSS auto download",
content: element,
storeOnClose: true,
addClass: 'windowFrame', // fixes iframe scrolling on iOS Safari
scrollbars: true,
maximizable: false,
closable: true,
paddingVertical: 0,
paddingHorizontal: 0,
onClose: function() {
valueAccessor()(null);
}
});
}, 0);
}
});
}
}
ko.applyBindings(new Model(), button)
})();
์ข์์, ์ ๋ qbittorrent๋ฅผ ํฌํฌํ์ต๋๋ค. ์ด์ ๋์ฒด webui ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ด RSS ๊ท์น UI๋ฅผ ์ถ๊ฐ ํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ ๋ด ์ ์ฅ์์ ๋๋ค
https://github.com/AndersMalmgren/qBittorrent
๋์ฒด UI์ ๋ํ ์ง์นจ
https://github.com/qbittorrent/qBittorrent/wiki/Alternate-WebUI-usage
@AndersMalmgren ์ด ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ PR์ ์ด์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
@Piccirello ๋ช ๊ฐ์ง ์ด์ , ๋จผ์ Knockout์ด๋ผ๋ MVVM ์์ง์ ์ฌ์ฉํฉ๋๋ค. ํต์ฌ ํ์ด ๋ฏน์ค์ ๋ค๋ฅธ ์์ง์ ์ถ๊ฐํ๊ณ ์ถ์ดํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋์งธ, ์ธ์ด ์ง์์ด ์์ต๋๋ค. ์ ์งธ, ๋น์ฃผ์ผ์ด ๋๋จธ์ง UI์ ์ผ๊ด๋์ง ์์ ๋ง์ง๋ง์ผ๋ก ์ ๋ฆฌํด์ผํฉ๋๋ค. :๋
์ค๋์ github์์์ด ๊ธฐ๋ฅ ์์ฒญ 5 ์ฃผ๋ ์ ๋๋ค.
RSS ๋ฐ ์น UI์ ๋ํ ํ์ ํฅํ ๊ณํ์ ๋ํ ํผ๋๋ฐฑ์๋ฐ์ ์ ์์ต๋๊น?
RSS ๋ฐ ์น UI์ ๋ํ ํ์ ํฅํ ๊ณํ์ ๋ํ ํผ๋๋ฐฑ์๋ฐ์ ์ ์์ต๋๊น?
์ด 5 ๋ ๋์ ํผ๋๋ฐฑ์ ๋ณ๊ฒฝ๋์ง ์์์ต๋๋ค. ๊ธฐ์ฌํ๊ณ ์ํ๋ ์น ๊ฐ๋ฐ์๊ฐ ์์ผ๋ฉด ๋ฐ๋ก ๊ตฌํ ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋์ ๋์ฒด UI๊ฐ ์์ ์ ์ํํฉ๋๋ค. :)
์ ๋ ์น ๊ฐ๋ฐ์์ด๋ฉฐ์ด ์์ ์ ํ ์ํฅ์ด ์์ต๋๋ค (์ด ๊ธฐ๋ฅ์ ์ง์ ์ํฉ๋๋ค). ์ฝ๋๋ฒ ์ด์ค์ ์ ํ ์ต์ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ์๋ฃ ํ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์์ง ๋ชปํฉ๋๋ค.
@alexiooo RSS ์น API ๋ฉ์๋์ ๊ดํด์๋ ๋ด ๋ธ๋์น์์ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
@alexiooo , ๋ํ
+1
@Piccirello @glassez @ngosang @buinsky
์ด๊ฒ์ ์ค๋ ์ง์๋๊ณ ๋งค์ฐ ์ธ๊ธฐ์๋ ์์ฒญ์ฒ๋ผ ๋ณด์ด์ง๋ง ๋ง์ผ์คํค์ ์ถ๊ฐ ํ ์ ์์ต๋๋ค.
๊ฐ์ฌ
์ง๊ธ ๋น์ฅ ์ด๊ฑธ ๋งก์ ์๊ฐ์ด ์์ต๋๋ค. ๊ธฐ์กด PR์ ๋ํ ์๊ฒฌ์ ๋ค๋ฃฐ ๊ธฐํ์กฐ์ฐจ ์์์ต๋๋ค.
๋ฌธ์ ์ ์ฌ์ค์ ์น ๊ฐ๋ฐ์๊ฐ ํ๋๋ฟ์ด๋ผ๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ์ํด์๋ ์ปค๋ฎค๋ํฐ์ ๋ ๋ง์ ์ง์์ด ํ์ํฉ๋๋ค.
@alexiooo @glassez๊ฐ ์ธ๊ธํ๋ฏ์ด webui / webapi ์ํคํ ์ฒ ๋๋ qBittorrent์ ์ฝ๋๋ฒ ์ด์ค์ ๋ํ ์ง๋ฌธ์ด ์์ผ๋ฉด ์ธ์ ๋ ์ง ์ฐ๋ฝํ์ญ์์ค. RSS์ ๋ํ ๊ฒฝํ์ด ์์ต๋๋ค.
@Piccirello ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ๋ํ ์ง์นจ์ด ์์ต๋๊น? ES6 ๊ธฐ๋ฅ, ํนํ Classes ( https://caniuse.com/#feat = es6-class)๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค.
์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ํ๋์ ๊ฒฐ์ ํด์ผ ํ ์ฌํญ์ ๋๋ค. ๋ค๋ฅธ ์ด์ / ํ๋ณด์์์ด ์ฃผ์ ์ ๋ํด ๋ ผ์ํ ๊ฒ์ ์๊ณ ์์ง๋ง ์ด๋์ ์๋์ง ๊ธฐ์ตํ ์ ์์ต๋๋ค.
ํํธ์ผ๋ก๋ ES6 ์์ ์์ ํ์ํ ๋ชจ๋ ๊ฒ์ ์ฑ์ทจ ํ ์์๋ ๋ชจ์นด ์์ ์ด ์์ต๋๋ค. ๋ฐ๋ฉด์, ES6 ํด๋์ค๋ IE11์ด ์๋ ์ฐ๋ฆฌ์ ์ฌ์ฉ์๊ฐ ๊ฐ๋ฅ์ฑ์ด ์ฌ์ฉํ๋ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋ฉ๋๋ค. ๋๋ ๋ค์ ์ฌ๋๋งํผ IE11์ ์ซ์ดํ์ง๋ง ์ ๋นํ ์ด์ ์์ด ์ง์์ ์ค๋จํ๊ณ ์ถ์ง ์์ต๋๋ค. ์ง์ง ๋ฌธ์ ๋ ์ฌ์ฉ์๊ฐ ์ด๋ค ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํ๋์ง ์ ์์๋ ์ด๋ค ์ข ๋ฅ์ ์งํ๋ ์๋ค๋ ๊ฒ์ ๋๋ค.
ํธ์ง : ๋๋ ๋ด๊ฐ ์ฃผ๋ก ๋์ํ๋ @ Chocobo1 ์์์ด ๊ฒ์๋ฌผ์ ์ฐพ์ ์ต๋๋ค.
๋๋ ๋ง์ ์ฌ๋๋ค์ด IE11์ ์ฌ์ฉํ๊ณ ์๊ฐํ์ง ์๋๋ค, ์ฌ์ง์ด ๋ง์ดํฌ๋ก ์ํํธ๋ํ์ง ๊ทธ๊ฒ์ ์ฌ์ฉ ๋งํ๋ค https://techcommunity.microsoft.com/t5/Windows-IT-Pro-Blog/The-perils-of-using-Internet-Explorer- ๊ธฐ๋ณธ ๋ธ๋ผ์ฐ์ ๋ก / ba-p / 331732
์ค์ ์์ ํ์ฑํํ๊ณ ์ด์ ๊ฐ์ ๊ฒ์ ๋ํ ์ต๋ช ํต๊ณ๋ฅผ ๊ธฐ๋ก ํ ์์๋ ๋ฉํธ๋ฆญ์ ์ตํธ ์ธ ํ ์ ์์ต๋๊น?
๊ทธ๊ฒ์ ๊ณต์ ํ ์์ ์ ๋๋ค. ์์ค ์ ๋ฐ๋ผ IE๋ ์ฌ์ ํ ๋ฐ์คํฌํฑ ๋ธ๋ผ์ฐ์ ์์ฅ์ 5-10 % ์ฌ์ด์์ ๋ช ๋ นํ๋ ๊ฒ ๊ฐ์ต๋๋ค. 10 %๋ ๊ฝค ๋์ ๊ฒ ๊ฐ๊ณ ๋ง์ ์ฌ์ฉ์์ ๋ํ ์ง์์ ์ค๋จํ๋ ๊ฒ์ ์ฃผ์ ํฉ๋๋ค.
๊ทธ๋ฌ๋ ์๋ง๋ 4.2.0์ es6๋ก ์ ํํ๊ธฐ์ ์ข์์๊ธฐ์ ๋๋ค. IE ์ฌ์ฉ์๋ 4.1์ ์ ์งํ๊ฑฐ๋ ์ต์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํด์ผํฉ๋๋ค. ์ด ๊ฒฐ์ ์ ํผ์ ๋ด๋ฆฌ๊ณ ์ถ์ง๋ ์์ต๋๋ค. @ Chocobo1 ์ด๊ฒ์ ๋ํ ๋น์ ์ ์๊ฐ์ ๋ฌด์์ ๋๊น? ํ๋์ ์ฐ๋ฆฌ ์คํ์ ์ ๋ฐ์ดํธํ๊ณ ์ถ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ 10 %๋ ํ ๋ ํธ๊ฐ ๋ฌด์์ธ์ง์กฐ์ฐจ ๋ชจ๋ฅด๋ ๊ณ ๋ น ์ฌ์ฉ์๋ ํฌํจ ํ ๊ฒ์ ๋๋ค. ๋๋ qBittorrent ์ฌ์ฉ์์ ๊ฒฝ์ฐ IE๋ฅผ ์ฌ์ฉํ๋ ์๋ ๊ฐ ํจ์ฌ ๋ฎ์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง qBittorrent ์ฌ์ฉ์์ ํต๊ณ ์์ด๋ ๋งํ ์ ์์ต๋๋ค.
๋ง์ qBittorrent ์ฌ์ฉ์๊ฐ uTorrent์ ๋ฌธ์ ๋ก ์ธํด uTorrent๋ก ์ด๋ํ์ผ๋ฉฐ, qBittorrent๋ก ์ด๋ํ๊ธฐ ์ํด uTorrent์ ์ํ์ ์ถฉ๋ถํ ์์ํ๊ณ ์๋ค๋ฉด ์ค์ ์ผ๋ก ์ด๋ํ์ฌ webgui๋ฅผ ํตํด ์ก์ธ์ค ํ ์ ์๋๋ก ์ค์ ํฉ๋๋ค. IE๋ฅผ ์ฌ์ฉํ์ญ์์ค.
๊ทธ๋ฌ๋ ๋๋ ๋จ์ง ๊ฐ์ ํ๊ณ ์์ต๋๋ค, ๋๋ ์ด๋ค ์ค์๋ ํ ์ ์์ต๋๋ค.
๋ฉํธ๋ฆญ์ ์ถ๊ฐํ๋ ๊ฒ์ ๋จ๊ธฐ์ ์ผ๋ก (ํนํ GDPR ์ดํ์ ์ธ๊ณ์์) ์๋นํ ํฐ ๋์ฝ์ด์ง๋ง ์ง๊ธ๊ณผ ๋ธ๋ผ์ฐ์ ์ง์์ ์ค๋จ ํ ๋ ์ฌ์ด์ ์ ์ด๋ ํ๋์ ๋ฆด๋ฆฌ์ค๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด EOL ๊ฒฝ๊ณ ์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒํ๋ฉด ์ํฅ์๋ฐ๋ ๋ธ๋ผ์ฐ์ ์ ๋ฉ์์ง๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ํ๊ฒํ ํ๊ณ ์ฌ์ฉ์์๊ฒ ์ ๋ณด๋ฅผ ์ ๊ณต ํ ์ ์์ต๋๋ค.
์ด ๋์ง๋ ์ฌ์ฉ์๊ฐ ์์ ์ ๋ธ๋ผ์ฐ์ ์ ํ์ด qB๋ณด๋ค ๋ ๊ด๋ฒ์ํ ๋ณด์์ ์ํฅ์ ๋ฏธ์น๋ค๋ ์ฌ์ค์ ๊นจ๋ซ๋ ๋ฐ ๋์์ด๋๋ฉฐ, ๋ฉํธ๋ฆญ๊ณผ ๋ด์ค ๊ฒ์๋ฌผ์ด ์ ๋๋ก ํ ์์๋ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ๋ก ์์ ํ์ํ๋ฏ๋ก ์ด๊ฒ์ด ์๋ง๋ ๋ ๋์ ์ ๊ทผ ๋ฐฉ์ ์ผ ๊ฒ์ ๋๋ค.
ํ์ง๋ง ์ ๋นํ ์ด์ ์์ด ์ง์์ ์ค๋จํ๊ณ ์ถ์ง ์์ต๋๋ค.
๋ด๊ฐ ์๊ฐํ๋ ๋ฐฉ์ : ES6 ํด๋์ค๊ฐ IE11 ์ง์์ ๋ฒ๋ฆฌ๊ณ ์ถ์๋งํผ ์ค์ํฉ๋๊น? ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค ...
๋๋ต์ด ๊ธ์ ์ ์ธ ๊ฒฝ์ฐ์๋ IMO๋ v4.2.x ์๋ฆฌ์ฆ๋ก ์ ํํ๊ธฐ์๋ ์์ง ๋๋ฌด ์ด๋ฅด๋ฉฐ, https://github.com/qbittorrent/qBittorrent/issues/453#issuecomment -475126288์ ๋์ํฉ๋๋ค. ์ฌ์ ์ EOL ๊ฒฝ๊ณ ๊ฐ ์์ด์ผํฉ๋๋ค (์ ์ด๋ ๋ช ๊ฐ์ง ๋ฆด๋ฆฌ์ค์ ๊ฒฝ์ฐ). ๋๊ตฐ๊ฐ๊ฐ ๊ทธ๊ฒ์ ๊นจ๋ซ๊ณ ์ถ๋ค๋ฉด ๋ค๋ฅธ ๋ฌธ์ (๋๋ PR)๋ฅผ ์ ์ถํ๊ณ ๊ฑฐ๊ธฐ์์ ๋
ผ์ํ์ญ์์ค.
๋๋ ๋ฒ์ญ์ Babel์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด์จ๋ ์ฐ๋ฆฌ๋ ์ปดํ์ผ ๋จ๊ณ์ ๊ฐํ ์์ผ๋ฏ๋ก ํฐ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ์ด๋ ๊ฒํ๋ฉด ES6๋ฅผ ์ฌ์ฉํ๊ณ ๋์์ IE๋ฅผ ์ง์ํ ์ ์์ต๋๋ค.
Typescript๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ค ํ๋กํ ํ์ ๊ฐ์ฒด๋ก ์ปดํ์ผ๋ฉ๋๋ค.
์, Typescript๊ฐ ๊ฐ๋ฅํ์ง๋ง ์ผ๋ฐ ES6 ์๋ฐ ์คํฌ๋ฆฝํธ๋ฅผ IE์์ ์คํ๋๋ ์๋ฐ ์คํฌ๋ฆฝํธ๋ก ๋ณํํ๋ ๊ฒ์ ์๋ฏธํ์ต๋๋ค.
์, ๊ทธ๋ฌ๋ ์ถ๊ฐ ๋น๋ ๋จ๊ณ๊ฐ ํ์ํ๋ฏ๋ก typescript๋ก ์ด๋ํ์ฌ ์ ํ ์์ ์ฑ์ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค.
์ด๊ฒ์ด ํ์ฌ ๋ถ๊ฐ๋ฅํ๋ค๋ฉด, ์ฐ๋ฆฌ๊ฐ qbittorrent-nox์ UI๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์คํํ ์ ์๋๋ก X ์๋ฒ UI์ ๋ํ "ํด๋ผ์ด์ธํธ"์ต์ ์ ์ด๋ป์ต๋๊น? Deluge๋ ๋ค์๊ณผ ๊ฐ์ ์์ ์ ์ํํฉ๋๋ค. ๊ธฐ๋ณธ UI๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ญํ ๋ ํ ์ ์์ผ๋ฏ๋ก ์๋ฒ๋ฅผ ๋์คํ๋ ์ด์๋ ์ปดํจํฐ์์ ์คํํ๊ณ ๋ค๋ฅธ ์ปดํจํฐ์์ ์๊ฒฉ์ผ๋ก ์ ์ด ํ ์ ์์ต๋๋ค.
๊ทธ๋์ ๋์ฒด UI๊ฐ ์์ ์ ์ํํฉ๋๋ค. :)
์๋
ํ์ธ์.
qBittorrent์ Windows ์ค์น๋ก ๋์ฒด UI๋ฅผ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง์นจ์ ๋ฐ๊ณ ์ถ์ต๋๋ค.
์ฆ, XXX๋ฅผ ํด๋์ ๋ค์ด๋ก๋ํ๊ณ qBittorrent "์ฌ์ฉ์ ๋์ฒด ์น UI"๋ฅผ ํด๋น ํด๋๋ก ์ง์ ํฉ๋๋ค.
์์ ๋๊ธ์ ์คํฌ๋ฆฝํธ๋ฅผ ๊ฒ์ํ์ผ๋ฉฐ ํฌํฌ๋ ์ํ ํ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๊ฒ์๋ฌผ์์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ณต์ฌํ์ฌ ํน์ ํ์ผ ์ด๋ฆ์ผ๋ก ํ์ผ์ ์ ์ฅ ํ ๋ค์ (์ด๋ฆ์ ์๋ ค์ฃผ์ธ์!) qBittorrent์ ๋์ฒด ์น UI๋ฅผ ํด๋น ํ์ผ์ด ํฌํจ ๋ ํด๋๋ก ์ง์ ํ ์ ์์ต๋๊น?
์ด๊ฒ์ ์ปค๋ฎค๋ํฐ์ ์ ๊ณต ํด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
๋ฟก ๋นต๋จ
์๋
ํ์ธ์, ๋จผ์ yuo๊ฐ 4.1.x ๋ธ๋์น์ ์๋์ง ํ์ธํ์ธ์.
src\webui\www
๋ชจ๋ ๋ก์ปฌ ์ปดํจํฐ์ ํด๋๋ก ์ด๋ํด์ผํฉ๋๋ค. ๋ํ src\icons
์ src\webui\www\public\images
์ ๋ณต์ฌํด์ผํฉ๋๋ค.
๋ฟก ๋นต๋จ
์๋ ํ์ธ์, ๋จผ์ yuo๊ฐ 4.1.x ๋ธ๋์น์ ์๋์ง ํ์ธํ์ธ์.
src\webui\www
๋ชจ๋ ๋ก์ปฌ ์ปดํจํฐ์ ํด๋๋ก ์ด๋ํด์ผํฉ๋๋ค. ๋ํsrc\icons
์src\webui\www\public\images
์ ๋ณต์ฌํด์ผํฉ๋๋ค.
๊ฐ์ฌํฉ๋๋ค!
๋ค๋ฅธ ์ฌ๋๋ค์ ์ํด ์ค์ ๋ก ์ฒ ์๋ฅผ ์ฐ์ญ์์ค.
1) https://github.com/AndersMalmgren/qBittorrent์๊ฐ์ต๋๋ค
2) ๋ค์ด๋ก๋ํ์ต๋๋ค ( "๋ณต์ ๋๋ ๋ค์ด๋ก๋"ํด๋ฆญ).
3) "qBittorrent-mastersrcwebuiwww"ํด๋๋ฅผ ๋ด ์ปดํจํฐ์ ์์น์ ๋ณต์ฌํ์ต๋๋ค.
4) ๋ด ์ปดํจํฐ์ ๋ณต์ฌ ๋ ํด๋์ "wwwpublic"์ ์ด๋ฏธ์ง ํด๋๋ฅผ ์์ฑํ์ต๋๋ค.
5) "qBittorrent-mastersrcicons"์ ๋ด์ฉ์ "wwwpublicimages"์ ๋ณต์ฌํ์ต๋๋ค.
6) qBittorrent "์ค์ -> ์น UI-> ๋์ฒด ์น UI ์ฌ์ฉ"์์ ํ์ผ ์์น๋ฅผ www ํด๋๋ก ์ค์ ํ๊ณ ํ์ธ์ ํด๋ฆญํฉ๋๋ค.
7) ์ UI๋ฅผ๋ณด๊ธฐ ์ํด " http : // localhost : 8080"์ผ๋ก ์ด๋
ํด๋ฐ์ ์๋ก์ด "RSS"์์ด์ฝ์ด ํ์๋์ด ๊ธฐ์กด RSS ์๋ ๋ค์ด๋ก๋๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์ ๋ง ๋ฉ์ง๋ค์. ๊ฐ์ฌํฉ๋๋ค.
๋ถํํ๋ ์ ์ฒด RSS ํญ์๋ณด๊ณ ์ถ์์ต๋๋ค. ์ฆ, RSS ํผ๋์ ๋ด์ฉ์๋ณด๊ณ ํ์์ ๋ฐ๋ผ ์ถ๊ฐ ํ ๋ ํธ๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ถ์์ต๋๋ค.
@bakertony ์๋
ํ์ธ์, api / v2 / rss / items? withData = true๊ฐ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ ๊ณต ํ ์์์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋๋ ์๋ํ์ง ์์์ต๋๋ค.
https://github.com/qbittorrent/qBittorrent/wiki/Web-API-Documentation#get -all-items
๊ทธ๋ฐ ๋ค์ ํ ๋ ํธ ์ถ๊ฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ํ ๋ ํธ๋ฅผ ์ถ๊ฐ ํ ์ ์์ต๋๋ค.
https://github.com/qbittorrent/qBittorrent/wiki/Web-API-Documentation#add -new-torrent
@bakertony ๋ค์ด๋ก๋ UI๋ฅผ ์์ ํ์ต๋๋ค. qbittorrent์ ๋ค์ด๋ก๋ ๊ฐ๋ฅํ ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ 41x ๋ธ๋์น๋ฅผ ์ฌ์ฉํ์ญ์์ค. ๋ง์คํฐ๋ ๋ง์คํฐ์์ ์์ค๋ฅผ ๋น๋ํ๋ ๊ฒฝ์ฐ์ ๋๋ค.
@AndersMalmgren์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๊ทธ๋ฌ๋ HTTP ์์ค์์ ๋ ๊ฐ์ js ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ ์ค๋ ค๊ณ ํ ๋ HTTPS qb ์ธ์คํด์ค ์์์ฒ๋ผ ์๋ํ์ง ์์ต๋๋ค. ์ด๊ฒ์ ๊ต์ฐจ ์ถ์ฒ์ด๋ฏ๋ก ๋ธ๋ผ์ฐ์ ์ ์ํด ์ฐจ๋จ๋ฉ๋๋ค. http๋ฅผ https๋ก ๋ณ๊ฒฝํ๊ธฐ ๋งํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค. ์ด์์ ์ผ๋ก libs๋ WebUI๋ก ํจํค์ง๋์ด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ํ ๋์ฒด UI๋ฅผ ์ ํํ๋ฉด UI์ ์์ด์ฝ / ์ด๋ฏธ์ง์ ๋ํ ๋ชจ๋ ์์ฒญ์ด ์คํจํ๊ณ 500 ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด์ ๊ฐ ํ์คํ์ง ์์ต๋๋ค. ๋ชจ๋ ํ์ผ ์์คํ ์ ์ฌ๋ฐ๋ฅธ ์์น์ ์์ต๋๋ค. qbittorrent ๋๋ nginx์ ์ค๋ฅ๊ฐ ์์ต๋๋ค ... ์ด์ํฉ๋๋ค.
๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ์ RSS ํผ๋๋ฅผ ์ถ๊ฐ ํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ด๋ป๊ฒ ๋ qb ๊ตฌ์ฑ ์ ์ฅ์์ ์ฝ์ ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์ด ๊ธฐ๋ฅ์ Raspberry Pi 2๋ฅผ ์ง์ํ๋ ๋ฒ์ ์ผ๋ก ์ ํํด ์ฃผ์๊ฒ ์ต๋๊น? ๊ฐ์ฌ
@AndersMalmgren , v4_1_x ๋ธ๋์น๋ฅผ ๋ณต์ ํ๊ณ ์ปดํ์ผ ํ ๋ค์ ์ง์นจ์ ๋ฐ๋ผ ๋์ฒด UI๋ฅผ ์ค์ ํ์ต๋๋ค. RSS ๋ฒํผ์ด ์์ง๋ง ์๋ฌด ์์ ๋ํ์ง ์์ต๋๋ค. ๋ด๊ฐ ์ด๋๋ก ์๋ชป ๊ฐ์๊น์?
@AndersMalmgren , ์ค์ ๋ก Repo ๋ฐ knockoutjs์์ ์๋ฐ ์คํฌ๋ฆฝํธ๋ฅผ ์ฐจ๋จํ๋ NoScript ์ ๋์จ์ด์์ต๋๋ค. ํ์ฉ ํ ํ์ ์๋ํฉ๋๋ค.
@AndersMalmgren , API๊ฐ ์์ง ์ค์ (์ค๋งํธ) ์ํผ์๋ ํํฐ๋ง์ ์ง์ํ์ง ์์ต๋๊น? ์๋๋ฉด ๊ทธ๋ฅ ํฌํจํ์ง ์์์ต๋๊น?
@Ingvix ๋ด๊ฐ ์ฌ์ฉํ๋ ๊ฒ๋ง ์ถ๊ฐํ์ต๋๋ค.
https://github.com/qbittorrent/qBittorrent/wiki/Web-API-Documentation#set -auto-downloading-rule
@AndersMalmgren , ์ข์, ๊ณ ๋ง์. ๋ด๊ฐ ์ง์ ๋ง๋ค ์ ์๋์ง ์์ ๋ณด๋ ค๊ณ ๋ ธ๋ ฅํ ๊ฒ ๊ฐ์์.
์์ง ์ถ๊ฐ๋์ง ์์ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์ด ๊ธฐ๋ฅ ์์ฒญ์ 6 ์ธ์ ๋๋ค. ์ด์! ๋ชจ๋ ๋นํธ ํ ๋ ํธ ํด๋ผ์ด์ธํธ์ ํ์ ๋ถ๋ถ์ ๋๋ค.
๊ทธ๋ ์ค์ฌ! ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ ๋ํด ์ง๋ถ ํ๋งํผ ๋น์ ์ด ์ด๋ฏธ ์ฝ๋ฉํ๊ณ ์ ์ถํ์ง ์์ ๊ฒ์ ํฐ๋ฌด๋์๋ ์ผ์
๋๋ค !!
<</ ํ์>>๋ฅผ ์ด๋ป๊ฒ ์
๋ ฅํฉ๋๊น?
๋๋ ์ด๋ฏธ ์ด๊ฒ์ ํ๋ฌ์ค ์์ ๋ฃ์์ง๋ง, ๋ด ์ ์ด์๋ ๊ณณ์ ๋์ ๋๋ ๊ฒ๋ ๊ธฐ์๊ณ , ์ด๊ฒ์ ๋ํ ํ์๊ธ์ ๊ธฐ์ฌํ ๊ฒ์ ๋๋ค!
Meh์ด ๊ธฐ๋ฅ์ด ์์ฑ ๋ ๋๊น์ง ๋ช ๋ ์ ๋ถํฐ Linux ์ฉ utorrent 3.3์ ๊ณ์ ์ฌ์ฉํ ๊ฒ์ ๋๋ค.
์์ฐ ... 6 ๋
๊ทธ๋ ๋ด๊ฐ ๋๋ผ๋ฉด ๊ธฐ๋ค๋ฆด๊ฑฐ์ผ.
์์ฐ ... 6 ๋
https://github.com/qbittorrent/qBittorrent/issues/453#issuecomment -466984808
https://github.com/qbittorrent/qBittorrent/issues/453#issuecomment -471326843
+1
๋ฌด์๋ฏธ โโํด ๋ณด์ด์ง๋ง์ด ์์ฒญ์ +1์ ์ถ๊ฐ ํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ uTorrent๋ฅผ ๊ณ์ ์ฌ์ฉํ๊ณ ๋ช ๋ ๋ง๋ค ์งํ ์ํฉ์ด ์๋์ง ํ์ธํฉ๋๋ค. ์ฆ, ๋๋ ๊ทธ๊ฒ์ด ๋ฌด๋ฃ ์ ํ์ด๋ผ๋ ๊ฒ์ ์๊ณ ์์ผ๋ฉฐ ๊ด๊ณ ๋ก ์ง์๋๋ ๊ฒฝ์ฐ์ด ๋ชฉ๋ก์์๋ ์ฌ๋๋ค์ด ๋ง์ด๊ทธ๋ ์ด์ ํ๋๋กํ๋ฉด ์์ต์ด ์ฆ๊ฐ ํ ๊ฒ์ ๋๋ค ...
@WilliCJ ๋๋์ฒด ์ด๋ป๊ฒ ๋ฌด์๋ฏธํฉ๋๊น? Rtorrent๋ ์ ์ฒด RSS ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ ์ผํ UI์ด๋ฉฐ ์คํ ์์ค์ ๋๋ค. ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
@owenashurst ์ฃ์กํฉ๋๋ค. ์ ๊ฐ ์๋ฏธํ๋ ๋ฐ๋ ์ด๋ฏธ 6 ๋ ์ด ๋ ์์ ํ์ง ์์ ์ค๋ ๋์ ๋ํ ์์ฒญ์ ๋ด ์์ "+1"์์ฒญ์ ์ถ๊ฐํ๋ ๊ฒ์ด ๋ฌด์๋ฏธํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋๋ ์ฌ๊ณผํด์ผํ๋๋ฐ, Rtorrent ์ฑ์ด ์๋ค๋ ์ฌ์ค์กฐ์ฐจ ๋ชฐ๋๊ธฐ ๋๋ฌธ์ ๋ถ๋ช ํ ์๋ชป๋ ์์น์ ๋ฐฐ์นํ์ต๋๋ค. uTorrent ๋ฐ qBittorrent๋ณด๋ค ๊ถ์ฅํฉ๋๊น?
@WilliCJ haha ok, ๊ทธ๋ Rtorrent๋ Linux ๊ธฐ๋ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ด๋ฉฐ Rutorrent๋ผ๋ UI๊ฐ ์์ผ๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ๋ฐ์ ์ผ๋ก ์ค์น๋๋ RSS ํ๋ฌ๊ทธ์ธ์ด ์์ต๋๋ค. Qbittorent๋ ํฌ๋ก์ค ํ๋ซํผ์ด์ง๋ง Rtorrent๊ฐ ํฌ๋ก์ค ์ปดํ์ผ๋์๋์ง ํ์คํ์ง ์์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค @owenashurst , ๋ฐฉ๊ธ ํ์ธํ ๊ฒฐ๊ณผ Rtorrent๋ ์ฌ์ ํ Linux ์ ์ฉ ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ฌ์ฉ์ค์ธ ์์์์ Windows ํ๋ซํผ์ ์คํ ์ค์ด๋ฏ๋ก ์๋ํ์ง ์์ต๋๋ค. ์ด์จ๋ ๊ฐ์ฌํฉ๋๋ค! ๊ทธ๋๋ ์น UI๋ฅผ ํตํด qBittorrent์ RSS ํผ๋ ๋ฐ ํํฐ ์ต์ ์ ์ก์ธ์ค ํ ์ ์๋๋ก ๊ฐ๋ฐ์ ๋ชฉ๋ก์ ์ถ๊ฐํ๊ณ ์ถ์ต๋๋ค.
6 ๋
๋์ ๊ธฐ๋ค๋ฆฐ ๊ฒ์ ํ๋์ ๊ธฐ๋ฅ์ ๋๋ฌด ๊น๋๋ค.
Linux, Docker, RSS ๋ฐ WebUI๋ฅผ ์ง์ํ๋ ๋์ฒด ํ ๋ ํธ ํด๋ผ์ด์ธํธ๊ฐ ์์ต๋๊น?
@ Haxy89 ์ด์ ๋๊ธ์ ์ฝ์ผ์๋ฉด Linux ๊ธฐ๋ฐ bittorrent ํด๋ผ์ด์ธํธ ์ธ Rtorrent๋ฅผ ์ธ๊ธํ๊ณ ๋ณ๋๋ก ์ค์น ํ ์น UI (Rutorrent)์๋ ์จ๋ผ์ธ ํํ ๋ฆฌ์ผ์ด ๋ชจ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํฌํจํ๋ RSS ์ง์ ํ๋ฌ๊ทธ์ธ์ด ์์ต๋๋ค. ์ด์จ๋ ๋ชจ๋ ๊ฒ์ ํฌํจํ๋ ๋์ปค ์ปจํ ์ด๋๋ ์์ต๋๋ค.
@owenashurst @ Haxy89 @WilliCJ ์ฌ๋ฌ๋ถ์ https://github.com/qbittorrent/qBittorrent/issues/453#issuecomment -483063942 + https://github.com/qbittorrent/qBittorrent/issues/453# ์์ altWebUI ๊ตฌํ์ ์ฌ์ฉํด ๋ณด์ จ์ต๋๊น?
@WolfganP ์ถ๊ฐ / ํธ์ง / ์ญ์ ์์์ ๊ฐ์ด RSS ํผ๋๋ฅผ ๊ด๋ฆฌ ํ ์์๋ ํ ์์ง ์๋ํ์ง ์์์ต๋๋ค. ์์ด๋ฒ๋ฆฐ RSS ํผ๋์์ ํ ๋ ํธ๋ฅผ ๋ณด๊ฑฐ๋ ๋ค์ด๋ก๋ ํ ์ ์๋ค๋ ๊ฒ์ ๋ณด์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๊ทธ๋ค์ง ์ค์ํ์ง ์์ต๋๋ค.
ํํ
์๋ํ์ง๋ง ...
์ฌ๊ธฐ์ ํ ๊ฒ ์์ด...
RTorrent์ ์ธ์ธ ๊ฑฐ์์
@ Haxy89 ์,
ํํ
์๋ํ์ง๋ง ...์ฌ๊ธฐ์ ํ ๊ฒ ์์ด...
์ฝ์์ ๋ฌด์์ ๋งํฉ๋๊น? ๋ฌด์ธ๊ฐ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋์ง ์์์ต๋๋ค. 4.1.x ๋ธ๋์น btw์ ์๋์ง ํ์ธํ์ญ์์ค.
ํธ์ง : ํ์ฌ ๋ฐ์คํฌํฑ UI์์ ํผ๋๋ฅผ ์ค์ ํด์ผํฉ๋๋ค. ํ์ง๋ง ํผ๋๋ฅผ ์ค์ ํ ์์๋ ๋ฒ์ ๋ ์์ต๋๋ค. ํ์ง๋ง ์ฝ๊ฐ ๋ฒ๊ทธ๊ฐ ์์ต๋๋ค.
ํํ
๋ฐ์คํฌํ์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
RTorrent์์์ ๊ฐ์ด ์น์์ ๋ชจ๋ ๊ฒ์ ์ค์ ํ ์ ์์ผ๋ฉด ์ข์ ๊ฒ์
๋๋ค.
@ Haxy89 @AndersMalmgren ์ด๋ฏธ ์ ์ ๋ ํผ๋๊ฐ ์๋๋ผ๋ ํผ๋ ํญ์์ ๋์ผํ ๋ฌธ์ ๊ฐ ๋น์ด ์์ง๋ง ์ ๋๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์๊ฐ์ด ์์์ต๋๋ค. rss / feeds.json ์ํ :
{
"The Pirate Bay - Video": {
"uid": "{ad569ad7-ea3e-4bb5-8c85-a43215b5d352}",
"url": "https://thepiratebay.org/rss//top100/200"
}
}
๋ง์คํฐ ๋น๋๋ก ์์ ํ ๋ @AndersMalmgren ํฌํฌ์ altWebUI๊ฐ ํ์ฌ WebUI ์ํ๋ณด๋ค @Piccirello (์ผ๋ช WebUI ๋ง์คํฐ :-)๊ฐ ์์ผ๋ก ๋์๊ฐ๊ณ ๋ฌธ์ ํด๊ฒฐ์ ๋์ธ ์์๋ ๋ฐฉ๋ฒ์ ์ ์ ํ ์ ์์ต๋๋ค.
@wolfganp 4.1.5์์๋ง ํ ์คํธ
@WolfganP ๋ ๋๋ฅผ ์ํด 4.1.7์์ ์๋ํฉ๋๋ค.
btw, RSS ๊ฐ์ ธ ์ค๊ธฐ๋ฅผ ๊ฐ์ ํ๋ API ํจ์๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ ํผ๋์ ์๋ ๊ท์น์ ์ถ๊ฐํด์ผํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํผ๋ ํญ ์๋์ ํผ๋ ์ด๋ฆ์ด ํ์๋์ง๋ง ํผ๋ ํญ์ ๋น์ด ์์ต๋๋ค.
๊ธฐ๋ณธ ํผ๋ ๊ด๋ฆฌ UI๋ก 4.1.x ๋ธ๋์น๋ฅผ ์ ๋ฐ์ดํธํ์ต๋๋ค.
@AndersMalmgren ์ ์ด์
BTW, rss.js 39 ํ์์ RSS ์์ด์ฝ์ ํ์์ svg ๋ก ์
๋ฐ์ดํธํด์ผ ํ ๊ฒ์
๋๋ค. src='images/qbt-theme/rss-config.svg'
@WolfganP 4.1.x์ ์์ด์ฝ์ ์ฌ์ฉํด์ผํฉ๋๋ค. ์์ด์ฝ์ด png์ ๋๋ค
@owenashurst @ Haxy89 @WilliCJ ๋ํฌ๋ค์ # 453 (์ฃผ์) + # 453 (์ฃผ์) ์์ altWebUI ๊ตฌํ์ ์๋ ํ์ต๋๊น?
@WolfganP ์ง๊ธ ๊ฐ์ง๊ณ ์๋๋ฐ "RSS Rules"๋ฒํผ ์์ฒด๊ฐ ์ ๋๋ก ๋ํ๋์ง ์์ต๋๋ค (์๋ง๋ ๋ญ๊ฐ ์๋ชปํ์ง๋ง ์ง์นจ์ ๋ฐ๋๋ค ๊ณ ์๊ฐํ์ต๋๋ค). RSS์ ์ก์ธ์คํ๊ณ ํธ์ง ํ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ท์น์ ์๋ ๋ค์ด๋ก๋ํ๊ณ ๊ธฐ์กด RSS ํผ๋๋ฅผ ๋ณผ ์ ์์ง๋ง ์ถ๊ฐ / ํธ์ง ํ ์๋ ์์ต๋๋ค.
์ฝ์์์ ์ค๋ฅ๋ฅผ ํ์ธํ์ญ์์ค.
์ฝ์์์ ์ค๋ฅ๋ฅผ ํ์ธํ์ญ์์ค.
@AndersMalmgren ์ฃ์กํฉ๋๋ค.
qBittorrent์ ์๋ ์ค์น๋ qBittorent.org ์ฌ์ดํธ์์ ๋ค์ด๋ก๋ ํ ์ค์น ํ๋ก๊ทธ๋จ์์ ๊ฐ์ ธ ์์ง๋ง ์ด์ github์์ clone / zip์ ๋ค์ด๋ก๋ํ๊ณ " https ์"qBittorrent-mastersrcicons "ํด๋์์๋ ํ์ผ ๋ช ๊ฐ๋ฅผ ๋ณต์ฌํ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค Anders์ Owen!
... ์ด์ qBittorrent์์ ํ์ผ ๋ด์ ์๋์ํค๋ ๋ฐฉ๋ฒ์ ์์ ๋ด์ผํฉ๋๋ค!
btw, RSS ๊ฐ์ ธ ์ค๊ธฐ๋ฅผ ๊ฐ์ ํ๋ API ํจ์๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ ํผ๋์ ์๋ ๊ท์น์ ์ถ๊ฐํด์ผํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํผ๋ ํญ ์๋์ ํผ๋ ์ด๋ฆ์ด ํ์๋์ง๋ง ํผ๋ ํญ์ ๋น์ด ์์ต๋๋ค.
@AndersMalmgren ๊ทธ๋ฅ ํฐ ์๋ฆฌ๋ก ์๊ฐํ๊ณ (๋ด๊ฐ AFK์ด๊ธฐ ๋๋ฌธ์ ์๋ํ์ง ์์์ต๋๋ค) : ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ด๋ค ํ ๋ ํธ์๋ ์ผ์นํ์ง ์๋ ๊ท์น์ ์ถ๊ฐํ๋ ๊ฒ์ด์ง๋ง ์ด์จ๋ ํผ๋ ์ ๋ฐ์ดํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๊น?
๋ํฌ๋ค์ด ๋ฌด์จ ๋ง์ํ๋์ง ๋ชจ๋ฅด๊ฒ ๋ค. ์ ๋ง ๊ทธ๋ฆฌ์ํ๋ API๋ ๋ฌด์์ ๋๊น?
์ด๋ค ๊ธ๋ฅ์๋ ์ผ์นํ์ง ์๋ ๊ท์น์ ์ถ๊ฐํ์ง๋ง ์ด์จ๋ ํผ๋ ์ ๋ฐ์ดํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๊น?
์ด๋ฐ ์์ผ๋ก ์๋ํ์ง ์์ต๋๋ค.
ํผ๋๋ ์ง์ ๋ ๊ฐ๊ฒฉ์ผ๋ก ์
๋ฐ์ดํธ๋ฉ๋๋ค. ํผ๋ ์
๋ฐ์ดํธ ๊ท์น์ด ์ ์ฉ๋๋ ๊ฒฝ์ฐ.
์ด๋ฌํ ์ค์ ์ ์ฌ์ฉ์์๊ฒ ๋ ธ์ถํด์ผํฉ๋๋ค.
ํ์ฌ API๋ก ์์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ ํผ๋ ์ ๋ฐ์ดํธ ๊ธฐ๋ฅ์ API์ ์์ต๋๋ค.
๋๋ ๊ทธ ๋ฌธ์ ์ ๋ํ singel ํผ๋๋ฅผ ์ ๋ฐ์ดํธํ์ญ์์ค
4.1.x ๋ธ๋์น์ ๋ค์ด๋ก๋ ์ค์ ํญ์ RSS ํผ๋ ์ค์ ์ ์ถ๊ฐํ์ต๋๋ค.
์๋
ํ์ธ์.
์๋ ๋ค์ด๋ก๋์ ๋ํ ์ค์ ์ด ์์ต๋๊น?
ํ ๋ ํธ๋ ์ด๋์์ ์๋ ๋ค์ด๋ก๋๋ฉ๋๊น? ๊ธฐ๋ณธ ๋ค์ด๋ก๋ ํด๋?
์ ํํ ํ ๋ ํธ ๋ฑ ๋ง ์๋ ๋ค์ด๋ก๋ํ๋ ํํฐ?
@ Haxy89 ๊ทธ๊ฐ ๊ทธ์ ์ ์ฅ์์์ ์ฒ์์ผ๋ก ๋ณ๊ฒฝ ํ ๊ฒ์ด ์๋
@ Haxy89 @Ingvix๊ฐ ๋งํ ๊ฒ์ฒ๋ผ ํฌํจ๋์์ต๋๋ค. ์์ RSS ์ค์ ์ ์ง๊ธ๊น์ง ์์์ต๋๋ค.
๋ค์ด๋ก๋ ์ค์ ํญ์ RSS ํผ๋ ์ค์ ์ ์ถ๊ฐํ์ต๋๋ค.
๋ณ๊ฒฝ ์ฌํญ์ Pull Request๋ก ์ ๊ณต ํ ์ ์์ต๋๊น?
์๋๋ฉด qBittorrent ๋ด์ฅ WebUI์ ํธํ๋์ง ์์ต๋๊น?
๊ทธ๋ฌ๋ ๋ชจ๋ ํผ๋ ์ ๋ฐ์ดํธ ๊ธฐ๋ฅ์ API์ ์์ต๋๋ค.
๋ ๊ฑฐ์ผ.
๋ค์ด๋ก๋ ์ค์ ํญ์ RSS ํผ๋ ์ค์ ์ ์ถ๊ฐํ์ต๋๋ค.
๋ณ๊ฒฝ ์ฌํญ์ Pull Request๋ก ์ ๊ณต ํ ์ ์์ต๋๊น?
์๋๋ฉด qBittorrent ๋ด์ฅ WebUI์ ํธํ๋์ง ์์ต๋๊น?
๋๋ฝ ๋ ๊ธฐ๋ฅ ๋ง ๋ฒ์ญ์ ๋๋ค. ์ง๊ธ์ ํ๋ ์ฝ๋ฉ
๋ฒ์ญ์ด ์์ด๋ ๊ด์ฐฎ์ ํ ๋ฐ, ์ ์ด๋ ์ฐ๋ฆฌ๋ ํ ์์์ ๊ฒ์ ๋๋ค!
๊ทธ๋์ ์ ์ด๋ ์๊ฐ์ ์ผ๋ก ์๋ํ๋๋ก ๊ด๋ฆฌํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก ๊ธ๋ฅ๋ฅผ ์ถ๊ฐํ์ง ์์์ต๋๋ค. ํฌํจ / ํฌํจ ์ ํจ์ด ์ ๊ท์์ ์ง์ํ๋ค๊ณ ๊ฐ์ ํ๊ณ ์์ต๋๊น? ์ฌ๋์๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ฌ์ฉํ์ง ์๊ณ ์ ๋ ฅํด์ผํฉ๋๊น? ๊ทธ๋ ์ง ์๋ค๋ฉด ์ค์ ๋ก ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ ๊ท์ ์ง์์ ๊ณ ๋ ค ํ์๊ฒ ์ต๋๊น?
๋ํ rss ์ค์ ์ ์๋ง์ผ๋ก ๋ง๋ ํ์ ์ค์ ๋ก๋ ๋ชจ๋ ํจ๊ป ์๋ํ์ง ์์ต๋๋ค. ๋ค์ ์ค๋ฅ๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
ํ์ฉ๋์ง ์๋ ํ์ผ ํ์์
๋๋ค. ์ผ๋ฐ ํ์ผ ๋ง ํ์ฉ๋ฉ๋๋ค.
๋ด๊ฐ URL๋ก ๊ฐ ๋
์ ์ฅ์์์ ๋ฐ๋น์ 10 qbittorrent๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. 4.1.5-1์
๋๋ค.
๋ค์ด๋ก๋ ์น์ ์์ ์ค์ ์ ์์ ํ๋ฉด ์ UI๊ฐ ๋นํ์ฑํ๋๊ณ ๋ค์ ํ์ฑํํด์ผํฉ๋๋ค (๋ชจ๋ ๊ฒ์ด ๊นจ์ง์ง ์๋๋ก๊ธฐ๋ํด์ผํฉ๋๋ค).
์ด์จ๋ ๋๋ ๋น์ ์ด ์ฃผ๋์ ์ผ์ํ๊ณ ์๋ค๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค. ๋๋ ์ฝ๊ฐ ๋ฒ๊ทธ๊ฐ ์๋๋ผ๋ webui์ rss์ ์ก์ธ์ค ํ ์์์ด์ ๋๋ฌด ๊ฐ์ฌํฉ๋๋ค.
@xrishox ๋ด๊ฐ ์ง์ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ์ ๊ท์ ํ๋๋ฅผ ๋ ธ์ถํ์ง ์์์ต๋๋ค. ๊ณ ์น ์ ์์ต๋๋ค. ๊ฐ์ฌ :)
์ด ์ค๋ฅ๊ฐ "ํ์ฉ ํ ์์๋ ํ์ผ ํ์์ ๋๋ค. ์ผ๋ฐ ํ์ผ ๋ง ํ์ฉ๋ฉ๋๋ค."๋ผ๋ ์ค๋ฅ์ ์๋ฏธ๋ฅผ ์๊ณ ๊ณ์ญ๋๊น?
๋๋๋ก ํ์๋๋ webui url๋ก ์ด๋ํ ๋. qbittorrent.conf๋ฅผ ์ญ์ ํ๊ณ ๋ค์ ์์ํด์ผ๋ง ํด๊ฒฐํ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค.
ํธ์ง 1 :
์ด๊ฒ์ด ๋ด ์ค์น์ ๊ด๋ จ๋ ๋ฒ๊ทธ์ธ์ง ์๋๋ฉด ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ณด๊ฒ ๋ ๊ฒ์ธ์ง ๋ชจ๋ฅด๊ฒ ์ผ๋ฏ๋ก ๋ค๋ฅธ ์ฌ๋์ด ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช์ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ ์ ์๊ฒ ํจ๊ณผ๊ฐ ์์๋ ์๋ฃจ์
์ ๊ฒ์ํ๊ฒ ์ต๋๋ค.
https://github.com/qbittorrent/qBittorrent/issues/10503#issuecomment -486923269
"# 10485๋ login.html์์ index.html๋ก ๋ก๊ทธ์ธ ํ์ด์ง์ ์ด๋ฆ์ ๋ณ๊ฒฝํ์ต๋๋ค. v4.1.5๋ ์ฌ์ ํ login.html์ ์ฐพ์ง ๋ง ๊ณต์ฉ ํด๋์๋ index.html์ด ํฌํจ๋์ด ์์ต๋๋ค. ํด๋น ํ์ผ์ ์ด๋ฆ์ login.html๋ก ๋ฐ๊พธ์ญ์์ค."
ํธ์ง 2 :
์ด์ ๋๋ ์ข ์ข ๋์ฒด ์น UI๋ฅผ ๋นํ์ฑํํ๊ณ ๋ค์ ํ์ฑํํ๊ณ ๋์ฒด ๊ฒฝ๋ก๋ฅผ ๋ค์ ์ ๋ ฅ ํด์ผํ๋ ์ด์ํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ ์ด๋ ์๋ํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ๊ฒ ํฐ ๊ฑฐ๋๋ ์๋์ง๋ง ์ ์ด๋ ๊ฒํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋๋ ๋ํ ์ด์ํ ui ๋ฒ๊ทธ๋ฅผ ์ป๊ณ ์์ด ui ์์ด์ฝ์ด ํ์๋์ง ์๊ณ ์ด์ํ ์ด์ ๋ก ํ ์คํธ๊ฐ ๋ณต์ ๋ฉ๋๋ค. ๋ชจ๋ ์์ด์ฝ์ / private ๋ฐ / public์ ๋ณต์ฌ ํ ์ด์ ๋ฅผ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๊ฒ์ qbittorrent๋ฅผ ์ฌ์ฉํ๋ ๋ด ๋ฅ๋ ฅ์ ์ง์ฅ์์ฃผ์ง ์์ผ๋ฏ๋ก ํน๋ณํ ๊ฑฑ์ ํ์ง ์์ต๋๋ค. ์์ ์ฑ์ ์ํด์๋ง ์ฌ๊ธฐ์๋ณด๊ณ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ์ด์ํ ui ํน์ดํ ์ฌ์ง์ด ์์ต๋๋ค https://i.imgur.com/kkdGyzs.png
๋๋ ์ด๊ฒ์ด ์์ ์ ์ด๊ณ ๊ฒฌ๊ณ ํ๋ค๋ ๊ฒ์ ์๊ฒ ๋ ์์ ์์ ์ด๊ฒ์ด ๊ฐ์ง๊ณ ์๋ ๋๋ผ์ด ๊ธฐ๋ฅ์ด๊ธฐ ๋๋ฌธ์ ๋ณํฉ๋๊ธฐ๋ฅผ ์ ๋ง๋ก ๋ฐ๋๋๋ค.
๊ทธ๋ฌ๋ ๋ชจ๋ ํผ๋ ์ ๋ฐ์ดํธ ๊ธฐ๋ฅ์ API์ ์์ต๋๋ค.
๋ ๊ฑฐ์ผ.
๊ฐ์ฌํฉ๋๋ค @glassez ! https://github.com/qbittorrent/qBittorrent/pull/11055
์ด ์ค๋ฅ๊ฐ "ํ์ฉ ํ ์์๋ ํ์ผ ํ์์ ๋๋ค. ์ผ๋ฐ ํ์ผ ๋ง ํ์ฉ๋ฉ๋๋ค."๋ผ๋ ์ค๋ฅ์ ์๋ฏธ๋ฅผ ์๊ณ ๊ณ์ญ๋๊น?
* nix์์ alt webUI๊ฐ ํ์ฑํ๋๊ณ ์์ฒญ ๋ ํ์ผ์ด "์ผ๋ฐ ํ์ผ"์ด ์๋ ๋ ๋ฐ์ํฉ๋๋ค (์ ํํ๊ฒ ์๋ฏธํ๋ ๋ฐ๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค). ๋ํ ๊ทธ๋ฌํ ํ์ผ์ด ์กด์ฌํ์ง ์์ ์ ํ์ ํ์ธํ ์์๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
@xrishox ์ ๊ท์ ์ต์ ์ ๋ ธ์ถํ์ต๋๋ค. ๋ด 4,1.x ์ง์ ์
4.1.x ๋ธ๋์น์ ๋ค์ด๋ก๋ ์ค์ ํญ์ RSS ํผ๋ ์ค์ ์ ์ถ๊ฐํ์ต๋๋ค.
qBittorrent ๋ง์คํฐ (# 11056)์ ํฌํ
ํฉ๋๋ค.
๋ถํํ๋ @AndersMalmgren์ ๋ค๋ฅธ ์ฝ๋๋ก๋ ๊ทธ๋ ๊ฒ ํ ์ ์์ต๋๋ค. ์๋ํ๋ฉด ์ฐ๋ฆฌ ์ฝ๋๋ฒ ์ด์ค์ ํธํ๋์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค.
@glassez ๋๋ฌด ์ค๋๋ ํ๊ต์ ๋๋ค :)
ํธ์ง : ๋ด ์ฝ๋๋ ๊ณต์ ๋ฆด๋ฆฌ์ค๋ฅผ ์ํด ์ ๋ฆฌํด์ผํฉ๋๋ค.
@AndersMalmgren https://github.com/qbittorrent/qBittorrent/pull/11055 ๋ฅผ ์ฌ์ฉํด ๋ณผ ๊ธฐํ๊ฐ ์์์ต๋๊น? (WebAPI๋ฅผ ํตํด RSS ํญ๋ชฉ์ ์๋ก ๊ณ ์น ์ ์์)
์ข์ต๋๋ค. ์ ๊ท์์ ํ์ฑํํ์ต๋๋ค. ์์ง ํธ๋ฆฌ๊ฑฐ๋๋ ์ด๋ฒคํธ๊ฐ ์์์ผ๋ฏ๋ก ์ฌ๊ธฐ์์ ์๋ํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋น์ ์ด ๊ทธ๋ค์๊ฒ ์ด๋ ค์๋ ๊ฒฝ์ฐ ์ถ์ ์ง์ ๋ํ ๋ช ๊ฐ์ง ์ ์์ด ์์ต๋๋ค. ์ด๊ฒ์ ์ค์ ๋ก ๋ด ์ฌ์ฉ ์ฌ๋ก์ ์๋ฒฝํ๊ฒ ์๋ํ๋ฏ๋ก ์์ฒญ์ด๋ ์๊ตฌ๊ฐ ์๋๋ผ ๊ณ ๋ คํ ์์๋ ๋ช ๊ฐ์ง ์ฌํญ์ ๋๋ค.
"์๋ ๋ค์ด๋ก๋"ํ์ด์ง์์ ์ ์ฅ์ ๋๋ฅด๋ฉด ํ์ฌ ์ด์ ์ด ๋ง์ถฐ์ง ๊ฒ๋ฟ๋ง ์๋๋ผ ์์ ํ ๋ชจ๋ ์๋ ๋ค์ด๋ก๋์ ๋ํ ์์ ์ฌํญ์ ์ ์ฅํ ์ ์์ต๋๋ค. ๋๋ ๋ชจ๋ ์ ์ฅ ๋ฒํผ์ ์ถ๊ฐํฉ๋๋ค.
์ ์ฉํ ๋ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์๋ ๋ค์ด๋ก๋๋๋ ํญ๋ชฉ์ ์ ํ์ ์ผ๋ก ์นดํ ๊ณ ๋ฆฌ / ํ๊ทธ์ ์ถ๊ฐ ํ ์ ์๋๋กํ๋ ๊ฒ์ ๋๋ค. ์ฌ๊ธฐ์ ์นดํ ๊ณ ๋ฆฌ / ํ๊ทธ๋ ์๋ ๋ค์ด๋ก๋ ๋ ํญ๋ชฉ์ ์ด๋ฆ์ ๋๋ค.
@WolfganP ๋๋ ํ์ฌ C ++ ํ๊ฒฝ์ด ์์ผ๋ฉฐ ์๋ ๋์ ์์ ํ์ง ์์์ผ๋ฏ๋ก ์ ์งํ๊ฒ ์ปดํ์ผํ๋ ค๊ณ ๋ ธ๋ ฅํ์ง ์์์ต๋๋ค. 4.2 ์ด์ ํ๋ฅผ ๊ณํํ๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๋จธ์ง ๋ฐฉ๋ฒ์ด ์ ์๋ฆฌ์ ์์ผ๋ฉด ์ฝ๊ฒ ์์ ํ ์ ์์ต๋๋ค.
@xrishox ์๊ฒฌ์ ๋ณด๋ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ชจ๋ ์ ์ฅ ๋ฒํผ์ ์ถ๊ฐ ํ ์ ์์ต๋๋ค. ์นดํ ๊ณ ๋ฆฌ๋ ๋งค์ฐ ์ฃผ๊ด์ ์ผ๋ก ๋๊ปด์ง์ง๋ง ์ ํฉํ์ง ์์ ์ ์์ต๋๋ค. ์ํ๋ ๊ฒฝ์ฐ ์นดํ ๊ณ ๋ฆฌ ํ๋๋ฅผ ๋ ธ์ถ ํ ์ ์์ต๋๊น?
@AndersMalmgren ๋์์ด๋๋ค๋ฉด ๋ด Dockerfile ์ ์ฌ์ฉํ์ฌ ๋ก์ปฌ qBittorrent ์ฝ๋๋ฅผ ์ฝ๊ฒ ๋น๋ ํ ์ ์์ต๋๋ค. ์์ค์์ libtorrent 1.1๋ ๋น๋ํฉ๋๋ค. ํ์ฌ ๋ช ๊ฐ์ง ๋จ์ ์ด ์์ง๋ง (์์ง ๊ตฌ์ฑ์ ์ ๋ฌํ ์ ์์ผ๋ฉฐ ์ฆ๋ถ ๋น๋๋ฅผ ์ง์ํ์ง ์์) qBittorrent๋ฅผ ๋น๋ํ๊ธฐ๊ฐ ์ ๋ง ์ฝ์ต๋๋ค.
Docker ๋น๋ : docker build -t qbittorrent/qbittorrent .
Docker ์คํ : docker run --rm -it -p 8080:8080 qbittorrent/qbittorrent
@Piccirello 4.2๋ ์ธ์ ๊ณํ๋ฉ๋๊น? 4.2๊ฐ ์ถ์ ๋ ๋๊น์ง์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ด์ ๊ฐ ์์ต๋๋ค.
์ด ์์ ์์ ๋น์ ์ ์ถ์ธก์ ์ ๋งํผ์ด๋ ์ข์ต๋๋ค.
@Piccirello 4.2๋ ์ธ์ ๊ณํ๋ฉ๋๊น? 4.2๊ฐ ์ถ์ ๋ ๋๊น์ง์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ด์ ๊ฐ ์์ต๋๋ค.
4.2.0์ ๊ณต๊ฐ ๋ฒ ํ๋ # 10047์ ๋ฐ๋ผ ๋ช ์ผ / ์ฃผ ๋๋ ์ดํ ๋ด์ ์ถ์ ๋ ์ ์์ต๋๋ค.
6 ์ ๋ง๋ถํฐ ์ฌ์ฉํ๊ณ ์๋ ์ด์ ์ ๊ฒ์ ๋ 4.2.0 ์ํ ๋น๋๊ฐ ์์ต๋๋ค.
์ข์, RSS ์์ ์ด ๋ฒ ํ ๋ฒ์ ์ด๋ฉด ๋ง์คํฐ์์ ๊ตฌํํ ์ ์์ต๋๋ค.
๊ทธ๋์ ๋ฐฉ๊ธ rss ์ด๋ฒคํธ ํธ๋ฆฌ๊ฑฐ๊ฐ ์์๊ณ ์ ๊ท์์ด ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ์๋ํ๋ ๊ณณ์์ ์ ํํ๊ฒ rutorrent์์ ๋ณต์ฌํ์ผ๋ฉฐ ์ฌ๋์๊ฐ ์๊ฑฐ๋์๋ ๋ ๊ฐ์ง ๋ชจ๋๋ก ์๋ํ์ต๋๋ค.
์ด์ v4.1.x ๋ธ๋์น์์ "refreshItem"์์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
@glassez ์ด๋๊ฐ์์ ๋ฒ ํ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ป์ ์ ์์ต๋๊น? ๊ฐ์ฌ
RSS UI๋ฅผ ์์ฑ ํ ๋๊น์ง ๊ธฐ๋ค๋ฆด ์ ์์ต๋๋ค. @AndersMalmgren ๋ง์คํฐ์ ํ ์์ฒญ์ ํ ์ ์์ต๋๊น?
@ caoli5288 https://github.com/qbittorrent/qBittorrent/issues/453#issuecomment -483063942์ ๋ฐ๋ผ altWebUI ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ๋ณด์ จ์ต๋๊น? (https://github.com/AndersMalmgren/qBittorrent๋ https://github.com/qbittorrent/qBittorrent/issues/453#issuecomment-483342384์ ๋ฐ๋ผ 4.1 ๋ธ๋์น๋ฅผ ์ฌ์ฉํฉ๋๋ค.)
@WolfganP ์๋ํ์ง๋ง ์๋ฒฝํ์ง๋ ์์ต๋๋ค. https://github.com/qbittorrent/qBittorrent/issues/453#issuecomment -519135601์ ํ์๋ ๊ฒ๊ณผ ๋ค๋ฅด๋ฉฐ ๋ธ๋ผ์ฐ์ ํผ๋ ์ฝํ ์ธ ๊ฐ ์ด๋ ต์ต๋๋ค.
@ caoli5288 https://github.com/qbittorrent/qBittorrent/issues/453#issuecomment -519135601์ webUI๊ฐ ์๋๋ผ QtUI์ ๋๋ค. ์ด๋ฌํ ์๊ฒฌ์ ์น API์์ ์ฌ์ฉํ ์์๋ ํผ๋ ์ ๋ฐ์ดํธ์ ๊ด๋ จ์ด ์์ผ๋ฉฐ, ๋์ค์ @glassez ๊ฐ https://github.com/qbittorrent/qBittorrent/pull/11055 ์์ ๊ตฌํํ์ต๋๋ค.
์ด๋ป๊ฒ๋๊ณ ์์ต๋๊น? ๋ค์ ๋ฆด๋ฆฌ์ค์์์ด ๊ธฐ๋ฅ์ ๋ณผ ์ ์์ต๋๊น?
์ด๋ป๊ฒ๋๊ณ ์์ต๋๊น? ๋ค์ ๋ฆด๋ฆฌ์ค์์์ด ๊ธฐ๋ฅ์ ๋ณผ ์ ์์ต๋๊น?
์ด๊ฒ์ ์๋ํด ๋ณผ ์ ์์ต๋๋ค : https://github.com/miniers/qb-web
ํ์ง๋ง ์ค๊ตญ์ด ๋ง
์ด๋ป๊ฒ๋๊ณ ์์ต๋๊น? ๋ค์ ๋ฆด๋ฆฌ์ค์์์ด ๊ธฐ๋ฅ์ ๋ณผ ์ ์์ต๋๊น?
์ด๊ฒ์ ์๋ํด ๋ณผ ์ ์์ต๋๋ค : https://github.com/miniers/qb-web
ํ์ง๋ง ์ค๊ตญ์ด ๋ง
@miniers ๊ฐ์ฌํฉ๋๋ค! AltWebUI๋ก ์ฌ์ฉํด ๋ณด์ จ์ต๋๊น? https://github.com/miniers/qb-web/issues/3 ๋ฌธ์ ๋ฅผ ์ด์ด ๊ธฐ์กด ๋ฒ์ญ ๋ฌธ์์ด ์ฌ์ฉ์ ๋ํด ์ง๋ฌธํฉ๋๋ค.
RSS์์ +1์ ๋๋ค. ์ด๊ฒ์ ๊ธฐ๋ณธ์ ์ธ RSS ๋ค์ด๋ก๋๊ฐ qbittorrent-nox์ ์จ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๊น?
(์์ฌ์ค๋ฌ์ด ๊ฒ์ 2013 ๋ ๋ถํฐ ๋ฌด์ ๋จ)
4.2์์ ์ด๊ฒ์ ๋ณผ ํฌ๋ง์ด ์์ต๋๊น? @ Chocobo1 ๋๋ ๋น์ ์ด ๋ง์ ๊ฐ์ ์ ์ด๊ฒ์ด ๋ด๊ฐ
+1 ์๋ ๋์ qbittorrent๋ฅผ ์ฌ์ฉํด ์์ผ๋ฉฐ qbittorrent์์ ์น UI RSS ์ง์์ด ๋ถ์กฑํ์ฌ ๋ค๋ฅธ ํ ๋ ํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ทน์ ์ผ๋ก ์ฐพ๊ณ ์์ต๋๋ค.
qbittorrent ์น ์ฌ์ดํธ์ @AndersMalmgren 4.2.0 ๋ฒ ํ
9 ๋ ์ด ์ง๋ฌ์ง ๋ง ์ฌ์ ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๋ค.
@ikiddoi ๋น์ ์ ์๋ง ๋น์ ์ ์ฝ๋ฉํธ ์์ ์ฝ๊ณ ๊ทธ๊ฒ์ด qbittorrent์ ๋ฒ ํ ๋ฒ์ ์ด๋ผ๋ ๊ฒ์ ๊นจ๋ฌ์์ผ ํ ๊ฒ์ ๋๋ค.
์ฐธ๊ณ : https://github.com/qbittorrent/qBittorrent/issues/453#issuecomment -549786145
๋๋ ๋ญ๊ฐ๋ฅผ ๋์น๊ณ ์๋๋ฐ, ๋ถ์์ ํ (4.2.0 ~ 201911110018-6775-8711613 ~ ubuntu18.04.1)์์ qbitorrent-nox๋ฅผ ์ฌ์ฉํ๋ WebUI์์ ์ต์ ์ด ๋ณด์ด์ง ์์ต๋๋ค.
์์ ํ ํ์คํ์ง๋ง nox์ ํ์ค ๋ฒ์ ์ฌ์ด์๋ ํญ์ ๊ธฐ๋ฅ ํจ๋ฆฌํฐ ๋ฌธ์ ๊ฐ์์์ต๋๋ค.
๋ง์คํฐ ๋ธ๋์น์์ 4.2 ์ง์์ ์์ ํ์ต๋๋ค.
https://github.com/AndersMalmgren/qBittorrent/tree/master
๋ํ ์ด์ ์๋ก ๊ณ ์นจ ํผ๋๋ฅผ ์ง์ํฉ๋๋ค. ํผ๋ ์ด๋ฆ ์์์๋ ์์ ์๋ก ๊ณ ์นจ ์์ด์ฝ์ ํด๋ฆญํฉ๋๋ค.
๋๋ ์ปค๋ฎค๋ํฐ๋ฅผ ๋ค๋ฃจ๋ ๊ณต์ ํ์ ๋๋ฆฐ ์๋๋ฅผ ์ดํดํ์ง ๋ชปํฉ๋๋ค.
์ด ์์ฒ ๊ฐ์ ๋ฏธํด๊ฒฐ ๋ฌธ์ ๋ฅผ๋ณด์ญ์์ค!
์๋ง๋ qbittorrent์ ๋์ฒดํ์ ์ฐพ์ ๋์
๋๋ค.
๋๋ ์ปค๋ฎค๋ํฐ๋ฅผ ๋ค๋ฃจ๋ ๊ณต์ ํ์ ๋๋ฆฐ ์๋๋ฅผ ์ดํดํ์ง ๋ชปํฉ๋๋ค.
์ด ์์ฒ ๊ฐ์ ๋ฏธํด๊ฒฐ ๋ฌธ์ ๋ฅผ๋ณด์ญ์์ค!
์๋ง๋ qbittorrent์ ๋์ฒดํ์ ์ฐพ์ ๋์ ๋๋ค.
๊ฐ๋ฐ์๊ฐ ๋ถ์กฑํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฏธํด๊ฒฐ ๋ฌธ์ ์ ๊ธฐ์ฌํ๊ณ ํด๊ฒฐ์ฑ ์ ์ ๊ณตํ๋ ๊ฒ์ ํ์ ํ ๋งํ์ง ๋ง ๋ฌด๊ธ ์์ ์ด๋ฏ๋ก ๊ด์ฌ์ด ์์ ๊ฒ์ ๋๋ค.
๊ธฐ๋ฅ๊ณผ ์์ ์ฌํญ์ ๊ฐ๋ฐํ๊ธฐ ์ํด ์ผ๋ง๋ ๊ธฐ๋ถ ํ์ จ๋์? ๊ฐ๋ฐ์๋ค์ ์์ ์์ ์ํ๋ฉด์ ์์ ์ ์๊ฐ์ ์ผํ๋ฉฐ, ์ด๋ฐ ์ผ์ด ๋ ๋นจ๋ฆฌ ๊ตฌํ๋๋ฉด ์ข์์ง๋ผ๋ ํ๋๋ณด๋ค๋ ํ๋ก์ ํธ์ ํฌ์ ํ ์์ ๊ณผ ๋ ธ๋ ฅ์ ๊ฐ์ฌ๋ฅผ ํํด์ผํฉ๋๋ค. ๊ทธ๋ค์ด ์ฐ๋ฆฌ๋ฅผ ์ํด ๋ ๋ง์ ์๊ฐ์ ํฌ์ํ์ง ์์ ๋ ๊ทธ๋ค์ด ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฒ์ ๋ฌด๋ฃ๋กํ๊ณ ํ๋ฅผ๋ด๋ ๊ฒ์ด ์ฐ๋ฆฌ์ ๊ถ๋ฆฌ ์ธ ๊ฒ์ฒ๋ผ ์.
์ง์ฅ, ๋ด๊ฐ ๊ฐ๋ฐ์ ์ค ํ ๋ช ์ด๋ผ๋ฉด ํ๋ก์ ํธ ์ฌ์ฉ์๊ฐ ๋๋ฌด๋๋ ๊ฐ์ฌํ์ง ์์ ๋ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ ํ๋ก์ ํธ์ ํฌ์ ํ๊ณ ์ถ๋ค๋ฉด ๋ค์ ์๊ฐํ๊ธฐ ์์ํ ๊ฒ์ ๋๋ค.
์,์ด ์ค๋ ๋์ ์๊ฒฉ์ ๋๋ค.
๊ณต์ ํ์ ๋จ์ํํ์ง ์์๋ค๋ ๊ณต์ ์ฑ๋ช
์ ๋ฐํํ์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ์๊ฐ์ ํ ์ ํ ์ ์์ง๋ง
์ปค๋ฎค๋ํฐ. ๋๋์ด ์ฌ๊ธฐ์ ์จ ๊ฒ์ ๊ธฐ๋ปํ๊ฑฐ๋ ๊ฐ์ ์ง์ ๊ธฐ์ฌํ์ญ์์ค.
2019 ๋ 11 ์ 14 ์ผ 12:28:20 caoli5288 [email protected] ์์ฑ :
๋๋ ์ปค๋ฎค๋ํฐ๋ฅผ ๋ค๋ฃจ๋ ๊ณต์ ํ์ ๋๋ฆฐ ์๋๋ฅผ ์ดํดํ์ง ๋ชปํฉ๋๋ค.
์ด ์์ฒ ๊ฐ์ ๋ฏธํด๊ฒฐ ๋ฌธ์ ๋ฅผ๋ณด์ญ์์ค!
์๋ง๋ qbittorrent์ ๋์ฒดํ์ ์ฐพ์ ๋์ ๋๋ค .โ
๋น์ ์ด ์ธ๊ธ ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๊ณ ์์ต๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ๊ฑฐ๋ ๊ตฌ๋ ์ ์ทจ์ํ์ธ์.
๊ธฐ๋ฅ ๋ฐ ์์ ์ฌํญ์ ๊ฐ๋ฐํ๋ ๋ฐ ๋์์ด๋๋๋ก ๊ธฐ๋ถ ํ ๊ธ์ก
@ BradleyDS2 ์ปค๋ฎค๋ํฐ์
๊ณต๊ฐ ๋ ๋ฌธ์ ์ ๊ธฐ์ฌํ๊ณ ํด๊ฒฐ์ฑ ์ ์ ๊ณตํ๋ ๊ฒ์ ํ์ํฉ๋๋ค.
๊ทธ๊ฒ์ ์ค๋งํ ์๊ฐ์ ๋๋ค. ๋๋ถ๋ถ์ ์ฌ์ฉ์๋ ๋ฌด์์ ํ ์ ์์ง๋ง ๋ถํ ํ ์ ์์ต๋๊น? ๊ทํ์ ๊ณ์ ์๋ณด์ญ์์ค. ํ๋ก์ ํธ์ ํ ์ค์ ์ฝ๋๋ฅผ ์ ๊ณตํ์ง ์์์ต๋๋ค. ์ด๋ค ํ๋ก์ ํธ์ ๋ง์กฑํ๊ธฐ ๋๋ฌธ์ ๋๊น? ์๋๋ฉด github๊ฐ ๋ฌธ์ ํ์ด์ง๋ฅผ ์ญ์ ํ๊ณ ํ ์์ฒญ์ ์ ์งํด์ผํ๋ค๊ณ ์๊ฐํ์ญ๋๊น?
์คํ ์์ค ์ํํธ์จ์ด๋ ์ปค๋ฎค๋ํฐ์ ๋ง์ ๋ฃ์ง ์์ผ๋ฉด ์ฌ์ฉ์๋ฅผ ์๊ฒ๋ฉ๋๋ค. ๋ด๊ฐ ๋จ์ํ ์ฌ์ค์ ์ง์ ํ๋ค๋ ๋น๋์ ๋ฐ์์ผํ๋ค๋ ๊ฒ์ด ์ด์ํฉ๋๋ค.
๋๋ถ๋ถ์ ์ฌ์ฉ์๋ ๋ฌด์์ ํ ์ ์์ง๋ง ๋ถํ ํ ์ ์์ต๋๊น?
๊ธฐ๋ถ, ์์ฒญ, ๊ฑด์ค์ ์ธ ํผ๋๋ฐฑ. ๊ธฐ์ฌํ๊ธฐ ์ํด ๋ฌด์์ํ๊ณ ์ถ์์ง ํ์ ๋ฌผ์ด๋ณด์ธ์.
๋น์ ์ด ๋งํ ๋ค๋ฅธ ๊ฒ์ ๊ดํด์๋, ๋น์ ์์ ์ ๋ง์ ์๋ต์ผ๋ก ๊ฒฐํฉ ํ ๊ฒ์ ๋๋ค.
์ด๋ป๊ฒ ๋งํ ์ ์๋
์คํ ์์ค ์ํํธ์จ์ด์ ์ค๋ฆฌ
๊ทธ๊ฑด ์ค๋งํ ์๊ฐ์ด์ผ
ํ์ ์ด์ฌํ ์ผํ๊ณ ์์ต๋๋ค. ์ฌ๋ฌ๋ถ์ด ํน๋ณํ ์ํ๋ ๊ฒ์ด ์ํ๋์ง ์๋๋ค๊ณ ํด์ ๊ทธ๋ค์ด ํฌ์ ํ ๋ ธ๋ ฅ์ด ์ค์ด๋ค์ง๋ ์์ต๋๋ค. ๊ฑด์ค ์ ์ด๊ธฐ๋ฅผ ์ํ์ง ์๊ณ ๋จ์ง ๋ถ๋ง์ ์ ๊ธฐํ๊ธฐ ์ํด ์ฌ๊ธฐ์ ์๋ค๋ฉด ๋ ๋์ญ์์ค. ์๋ฌด๋ ๊ทธ ๋ ์ฑ์ด ํ์ํ์ง ์์ต๋๋ค.
๊ทธ๋ค์ ์ปค๋ฎค๋ํฐ์ ๋ง์ ๋ฃ๊ณ ๋ฌธ์ ์ ์ฐ์ ์์๋ฅผ ์ ํฉ๋๋ค. ์ด๊ฒ์ ์คํ ๋ ๋๋ถ๋ถ์ ์๊ฐ ๋์ ์์ ํ ์์๋ ์ฌ๋์ด ๋ง ๊ทธ๋๋ก ์์๊ธฐ ๋๋ฌธ์ ๋๋ฌด ์ค๋ ๊ฑธ๋ ธ์ต๋๋ค.
๊ทธ๋ค์ ์ปค๋ฎค๋ํฐ์ ๋ง์ ๋ฃ๊ณ ๋ฌธ์ ์ ์ฐ์ ์์๋ฅผ ์ ํฉ๋๋ค.
@ BradleyDS2 2000+ ๊ฐ๋ด ์ด์?
์ ๋ ์คํ ์์ค ๊ฐ๋ฐ์์ด๋ฉฐ ์์ญ ๊ฐ์ ์คํ ์์ค ํ๋ก์ ํธ์ ๊ธฐ์ฌํ์ต๋๋ค. ๋ฌด์จ ์ง์ ํ๊ฑฐ์ผ? ๋๋ ๋น์ ์ด ์ด๋ค ํ๋ก์ ํธ์ ๊ธฐ์ฌํ๋ ๊ฒ์ ๋ณด์ง ๋ชปํฉ๋๋ค. ๋น์ ์ ๋จ์ง ๋งํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋๋ qbittorrent๋ก ์๋ฌด๊ฒ๋ํ์ง ์์์ต๋๋ค. ๋ช ๋ฌ ์ ์ dockerfile ์์ฒญ์ ์์ํ๋๋ฐ ๊ฑฐ๋ถ๋์์ต๋๋ค.
๋น์ ์ ํ ๊ฐ์ง๋ง ์ณ์์ต๋๋ค. ๋๋ ๋ ๋๋ค.
๊ทธ๋ค์ ์ปค๋ฎค๋ํฐ์ ๋ง์ ๋ฃ๊ณ ๋ฌธ์ ์ ์ฐ์ ์์๋ฅผ ์ ํฉ๋๋ค.
@ BradleyDS2 2000+ ๊ฐ๋ด ์ด์?
๋๋ ๋ซํ 6500+๋ฅผ ์ธ๊ธํ๊ณ ์๋ค.
์ ๋ ์คํ ์์ค ๊ฐ๋ฐ์์ด๋ฉฐ ์์ญ ๊ฐ์ ์คํ ์์ค ํ๋ก์ ํธ์ ๊ธฐ์ฌํ์ต๋๋ค. ๋ฌด์จ ์ง์ ํ๊ฑฐ์ผ? ๋๋ ๋น์ ์ด ์ด๋ค ํ๋ก์ ํธ์๋ ๊ธฐ์ฌํ๋ ๊ฒ์ ๋ณด์ง ๋ชปํฉ๋๋ค. ๋น์ ์ ๋จ์ง ๋งํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด์ ์ ํ๋ก์ ํธ์ ๋ํ ํ ๋ฆฌํ์คํธ๋ฅผ ํ์คํ ํด์ ๊ธฐ ๋๋ฌธ์ ๋ญ๊ฐ ๋น ์ง ๊ฒ์ด ๋ถ๋ช ํ์ง๋ง ์ฃผ๋ก gitlab์ ์ฌ์ฉํฉ๋๋ค.
๋๋ qbittorrent๋ก ์๋ฌด๊ฒ๋ํ์ง ์์์ต๋๋ค. ๋ช ๋ฌ ์ ์ dockerfile ์์ฒญ์ ์์ํ๋๋ฐ ๊ฑฐ๋ถ๋์์ต๋๋ค.
๋น์ ๊ณผ ๋๋ ๋ชจ๋ ๊ทธ๊ฒ์ด ๊ฑฐ๋ถ ๋ ์ด์ ๋ฅผ ์๋๋ค. ๋ฒ์ ๊ณ ์ง๋ฅผ ์๋์ผ๋ก ์๋ฝํ๋๋ก ์ค์ ๋์์ผ๋ฉฐ ๊ฐ๋ฐ์๋ค์ "์ง๊ธ ๊ณต์์ ์ผ๋ก ์ ์งํ ๋ฅ๋ ฅ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค."๋ผ๊ณ ๋งํ์ต๋๋ค.
์ง๋ ๋ช ๋ ๋์ ์ฌ์ ํ ๊ตฌํ๋์ง ์์ ์ ์ผํ ์ด์ ๋ qBittorrent ํ๋ก์ ํธ๊ฐ ํ์ ํ์ฑ / ์๊ตฌ ์น ๊ฐ๋ฐ์๊ฐ ์๊ธฐ ๋๋ฌธ ์ ๋๋ค. ์ด ์ด์ ๋ ์ฌ๊ธฐ์์ ์ฌ๋ฌ ๋ฒ ์ธ๊ธ๋์์ผ๋ฏ๋ก ์ดํดํ์ง ๋ชปํ๋ ์ฌ๋๋ค์ ์์ ์ ์ ์ ๋ฅ๋ ฅ์ ๋ํด ์ง์งํ๊ฒ ์๊ฐํด์ผํฉ๋๋ค.
๋ง์คํฐ ๋ธ๋์น์์ 4.2 ์ง์์ ์์ ํ์ต๋๋ค.
https://github.com/AndersMalmgren/qBittorrent/tree/master
๋ํ ์ด์ ์๋ก ๊ณ ์นจ ํผ๋๋ฅผ ์ง์ํฉ๋๋ค. ํผ๋ ์ด๋ฆ ์์์๋ ์์ ์๋ก ๊ณ ์นจ ์์ด์ฝ์ ํด๋ฆญํฉ๋๋ค.
RSS ์๋ ๋ค์ด๋ก๋ ๊ธฐ๋ฅ์ด ๋์ฒด UI์์ด ๊ตฌํ ๋ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํ์ง๋ง ๊ทธ๋ ์ง ์์ต๋๊น? ์ ์ด๋ ๋ง์คํฐ ๋ธ๋์น๋ฅผ ๋น๋ ํ ํ webUI์์ ์๋ ๋ค์ด๋ก๋ ๊ท์น์ ์ก์ธ์คํ๋ ๋ฐฉ๋ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๋ง์คํฐ ๋ธ๋์น์์ 4.2 ์ง์์ ์์ ํ์ต๋๋ค.
https://github.com/AndersMalmgren/qBittorrent/tree/master
๋ํ ์ด์ ์๋ก ๊ณ ์นจ ํผ๋๋ฅผ ์ง์ํฉ๋๋ค. ํผ๋ ์ด๋ฆ ์์์๋ ์์ ์๋ก ๊ณ ์นจ ์์ด์ฝ์ ํด๋ฆญํฉ๋๋ค.RSS ์๋ ๋ค์ด๋ก๋ ๊ธฐ๋ฅ์ด ๋์ฒด UI์์ด ๊ตฌํ ๋ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํ์ง๋ง ๊ทธ๋ ์ง ์์ต๋๊น? ์ ์ด๋ ๋ง์คํฐ ๋ธ๋์น๋ฅผ ๋น๋ ํ ํ webUI์์ ์๋ ๋ค์ด๋ก๋ ๊ท์น์ ์ก์ธ์คํ๋ ๋ฐฉ๋ฒ์ ๋ณผ ์ ์์ต๋๋ค.
qbittorrent์ ๋น๋ ํ๋ก์ธ์ค๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ํ์ผ์ด ์์ผ๋ฏ๋ก ๋น๋์ ํฌํจ๋์ด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํ์ง๋ง ๋์ฒด UI ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค.
@AndersMalmgren ์, https://github.com/qbittorrent/qBittorrent/issues/453#issuecomment -483063942์ ์ง์์ ๋ฐ๋ผ qbittorrent๋ฅผ ๋น๋ํ๊ณ ์๋ํ๊ฒํ์ต๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ด ์์ค ์ฝ๋์ ์์ง๋ง ๋น๋ ์์ฒด์ ํฌํจ๋์ง ์๋๋ค๋ ๊ฒ์ด ์ฌ๋ฏธ ์์ต๋๋ค.
@AndersMalmgren ๊ธ์, ๋๋ qbittorrent๋ฅผ ๊ตฌ์ถํ๊ณ ์๋ํ๋๋ก ์์ค๋ฅผ ์ฌ์ฉํ์ฌ # 453 (์ฝ๋ฉํธ)์ ์ง์์ ๋ฐ๋ผ ํ ๋ฒ ๋ํ์ต๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ด ์์ค ์ฝ๋์ ์์ง๋ง ๋น๋ ์์ฒด์ ํฌํจ๋์ง ์๋๋ค๋ ๊ฒ์ด ์ฌ๋ฏธ ์์ต๋๋ค.
์ด๋๊ฐ์ rss.js๋ฅผ ์ถ๊ฐํด์ผ ํ ๋ชฉ๋ก์ด์์ ์ ์์ต๋๋ค.
@AndersMalmgren ๊ธ์, ๋๋ qbittorrent๋ฅผ ๊ตฌ์ถํ๊ณ ์๋ํ๋๋ก ์์ค๋ฅผ ์ฌ์ฉํ์ฌ # 453 (์ฝ๋ฉํธ)์ ์ง์์ ๋ฐ๋ผ ํ ๋ฒ ๋ํ์ต๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ด ์์ค ์ฝ๋์ ์์ง๋ง ๋น๋ ์์ฒด์ ํฌํจ๋์ง ์๋๋ค๋ ๊ฒ์ด ์ฌ๋ฏธ ์์ต๋๋ค.
RSS ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ธฐ ์ํด @AndersMalmgren ํฌํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๊ฒ์ ๋ค์ ๋น๋ ํ ํ์๊ฐ ์์ต๋๋ค (๋ชจ๋ ๊ฐ์ฌํฉ๋๋ค :-).
๊ทธ์ ๋ง์คํฐ ์์ค ์ฝ๋๋ฅผ zip์ผ๋ก ๊ฐ์ ธ์ค๊ณ ์น ํด๋๋ฅผ ์ถ์ถํ ๋ค์ ๊ณต์ qBt๊ฐ ํด๋น ํด๋์ AltWebUI ์ค์ ์ ๋น๋ํ๋๋ก ์ง์ ํ์ญ์์ค. ๋ชจ๋ ์๋ํฉ๋๋ค.
@WolfganP @Ingvix๊ฐ ์ฌ๋ฐ๋ฅธ์ง ์ดํดํ๋ฉด ์์ค๋ฅผ ๋ฐ์ด๋๋ฆฌ๋ก ๋น๋ํ์ผ๋ฉฐ ํด๋น ๋ฐ์ด๋๋ฆฌ์๋ ๋ด ๋ณ๊ฒฝ ์ฌํญ์ด ํฌํจ๋์ง ์์์ต๋๋ค.
๊ทธ๋ฌ๋ ํ์ค ๋ฐ์ด๋๋ฆฌ๋ก ๋ณ๊ฒฝ ์ฌํญ์ ์ฌ์ฉํ๋ ค๋ฉด ๋์ฒด ์น UI ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ผํฉ๋๋ค.
์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด API๊ฐ ์ด๋ฏธ ๋น๋ ๋ ๊ฒ ๊ฐ์ต๋๋ค. UI ๋ง ์์ฑํ๋ฉด ๋๋์? https://github.com/qbittorrent/qBittorrent/blob/master/src/webui/api/rsscontroller.cpp
๋๋ C ++์ ํค์ ๋ชจ๋ฅด์ง๋ง js๋ฅผ ์๊ณ ์์ผ๋ฉฐ ์ด์ฉ๋ฉด ๋ฌด์ธ๊ฐ๋ฅผ ํฉ์น ์ ์์ต๋๋ค.
@ljmerza ๋น์ ์ ์ง์ํ๋ ๋ด ์ง์ ์ ํ์ธํ ์ ์์ต๋๋ค
@ljmerza ๋น์ ์ ์ง์ํ๋ ๋ด ์ง์ ์ ํ์ธํ ์ ์์ต๋๋ค
4.2.1์์ ์ด๋ค ๋ธ๋์น๋ฅผ ์ฌ์ฉํด์ผํฉ๋๊น?
@ljmerza ๋น์ ์ ์ง์ํ๋ ๋ด ์ง์ ์ ํ์ธํ ์ ์์ต๋๋ค
4.2.1์์ ์ด๋ค ๋ธ๋์น๋ฅผ ์ฌ์ฉํด์ผํฉ๋๊น?
๋ด ์ ์ฅ์์ v4_2_x ๋ถ๊ธฐ๊ฐ 4.2.x๋ฅผ ์ง์ํ๋๋ก ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
@ljmerza ๋น์ ์ ์ง์ํ๋ ๋ด ์ง์ ์ ํ์ธํ ์ ์์ต๋๋ค
4.2.1์์ ์ด๋ค ๋ธ๋์น๋ฅผ ์ฌ์ฉํด์ผํฉ๋๊น?
๋ด ์ ์ฅ์์ v4_2_x ๋ถ๊ธฐ๊ฐ 4.2.x๋ฅผ ์ง์ํ๋๋ก ์ ๋ฐ์ดํธ๋์์ต๋๋ค.
๋ง์คํฐ์์ RSS WebUI ์ง์์ ๋ฐ๊ธฐ์ํ ํ ์์ฒญ์ ๊ณํ ์ค์ด์ ๊ฐ์?
@AndersMalmgren ๋ณ๊ฒฝ ์ฌํญ์์ด ์ ์ฅ์์ ๋ณํฉํ๊ธฐ ์ํด ํ ์์ฒญ์ ์ด ์ ์์ต๋๊น?
@AndersMalmgren ๋ณ๊ฒฝ ์ฌํญ์์ด ์ ์ฅ์์ ๋ณํฉํ๊ธฐ ์ํด ํ ์์ฒญ์ ์ด ์ ์์ต๋๊น?
๋๋ ํ ์ ์์ง๋ง ํ์ด ์ด๊ฒ์ ๊ฐ์ ธ ์ค๊ธฐ๋ฅผ ์ํ๋์ง ํ์คํ์ง ์์ผ๋ฉฐ ๋๋จธ์ง UI์ฒ๋ผ ์๋ํ์ง ์์ผ๋ฉฐ ์ฝ๋์์ ๋๋ฌด ํ๋ฅญํ ๋์์ธ ์์ ์ ์ํํ์ง ์์์ผ๋ฉฐ ๋ด ์์ ์ ์ฉ๋๋ก ๋น ๋ฅด๊ฒ ์๋ํ๊ธฐ๋ฅผ ์ํ์ต๋๋ค. :)
@AndersMalmgren ๋ณ๊ฒฝ ์ฌํญ์์ด ์ ์ฅ์์ ๋ณํฉํ๊ธฐ ์ํด ํ ์์ฒญ์ ์ด ์ ์์ต๋๊น?
๋๋ ๊ทธ ์์ง์์์ง์งํฉ๋๋ค.
ํ๋ก๊ทธ๋๋ฐ์ ๋ํ ์ง์์ด์๊ณ (๋ณต์ฌ ๋ฐ ๋ถ์ฌ ๋ฃ๊ธฐ ๋ง ํด๋น) ๋์ฒด WUI๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ๋ฉด ํญ์ ๊นจ์ ธ์ ์ฒ์๋ถํฐ ๋ค์ ๋์์์ผํฉ๋๋ค.
์ด๊ฒ์ด ๊ธฐ๋ณธ์ ์ผ๋ก WUI๊ฐ๋๋ฉด ์ ์ ๊ฐ์ ์ฌ๋๋ค์ด์ด RSS ๊ธฐ๋ฅ์ ์ด์ฉํ ์ ์์ต๋๋ค.
altWebUI๊ฐ ๊ตฌํ๋์์ผ๋ฏ๋ก ์ฝ๋๋ฅผ ๋ณํฉํ๊ณ WebUI ๊ธฐ๋ฅ (WebAPI๊ฐ ์์ ๋์ง ์์ ๊ฒฝ์ฐ)์ ๋ํ ๋ฆด๋ฆฌ์ค๋ฅผ ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์์ต๋๋ค. ๊ธฐ์กด ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ @AndersMalmgren ๋๋ ๋ค๋ฅธ ๊ฐ๋ฐ์์๊ฒ WebUI๋ฅผ ๋ณ๊ฒฝํ๊ณ ๊ณต์ qBt๋ฅผ ๊ตฌ์ฑํ๋ฉด ์ค๋น๊ฐ ์๋ฃ๋ฉ๋๋ค.
์ฆ : github์์ ์์ค ํธ๋ฆฌ์ ์ผ๋ถ๋ง ๋ค์ด๋ก๋ํ๋ ค๋ฉด https://minhaskamal.github.io/DownGit์ ์ฌ์ฉํฉ๋๋ค.
ํนํ @AndersMalmgren RSS ๋ชจ๋ ์
๋ฐ์ดํธ-> https://minhaskamal.github.io/DownGit/#/home ? url = https : % 2F % 2Fgithub.com % 2FAndersMalmgren % 2FqBittorrent % 2Ftree % 2Fmaster % 2Fsrc % 2Fwebui % 2Fwww ๋ฐ ๊ทธ๋ฐ ๋ค์ ์ผ๋ถ ํด๋์์ zip์ ํ์ฅํ๊ณ https://github.com/qbittorrent/qBittorrent/wiki/Alternate-WebUI-usage์ ์ง์นจ์ ๋ฐ๋ผ altWebUI๋ก ์ฌ์ฉ
๋ด๊ฐ ๋ญ ์๋ชปํ๊ณ ์๋์ง ๋ชจ๋ฅด๊ฒ ๋ค.
๋งํฌ๋ WebUI ์ค์ ์ ๋ณ๊ฒฝํ ๋ Chrome์์ ์ป๋ ๊ฒ์
๋๋ค.
https://mega.nz/#!c9hTgYKa!2q4agsrwv787vwCre -as4IKog1lGQLTBAsGsMfDTeAo
๋ค๋ฅธ ํ๋๋ ์์ด์ฝ์ด์๋ ๋ด www ํด๋
https://mega.nz/#!AtoFFKhJ!q8RiQQdV2oYBHMhbcqnpmiUZ3cQFSKYltUiDRZCGY0E
์ด๊ฒ์ ๋ด WebUI ๊ตฌ์ฑ์
๋๋ค.
WebUIAddress = *
WebUIAlternativeUIEnabled = true
WebUIAuthSubnetWhitelist = @ Invalid ()
WebUIAuthSubnetWhitelistEnabled = false
WebUICSRFProtection = true
WebUIClickjackingProtection = true
WebUIEnabled = true
WebUIHTTPSEnabled = false
WebUIHostHeaderValidation = true
WebUILocalHostAuth = false
WebUIPassword_ha1 = xxxxx
WebUIPort = 1340
WebUIRootFolder = / mnt / Share / www /
WebUIServerDomains = *
WebUIUseUPnP = true
WebUIUsername = xxxx
๋๊ตฌ๋ ์ง ๋๋ฅผ ๋์ธ ์ ์์ต๋๊น?
@Piocas ์ด ์ด์ ์ค๋ ๋๋ ์น UI์์ RSS ๊ด๋ฆฌ๋ฅผ ๋ ผ์ํ๊ธฐ์ํ ๊ฒ์ ๋๋ค. ๋ฒ๊ทธ๋ผ๊ณ ์๊ฐ๋๋ ๊ฒฝ์ฐ ์ ๋ฌธ์ ๋ฅผ ์ด๊ฑฐ ๋ ๊ณต์ qBittorrent ํฌ๋ผ ์์ ๊ตฌ์ฑ ๋์๋ง์ ์ฐธ์กฐํ์ญ์์ค.
์ด๊ฒ์ ๊ฐ์ง๊ณ ์๋ ๋ฉ์ง ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ ๋๋ค.
7 ๋ ์ด ์ง๋ฌ๊ณ ์ด๊ฒ์ ๊ตฌํ๋์ง ์์ ๊ฒ์๋ณด๊ณ ์ํ๊น์ต๋๋ค. ์ฌ์ค ์ข ๋ฏธ์ณค์ต๋๋ค.
altWebUI๊ฐ ๊ตฌํ๋์์ผ๋ฏ๋ก ์ฝ๋๋ฅผ ๋ณํฉํ๊ณ WebUI ๊ธฐ๋ฅ (WebAPI๊ฐ ์์ ๋์ง ์์ ๊ฒฝ์ฐ)์ ๋ํ ๋ฆด๋ฆฌ์ค๋ฅผ ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์์ต๋๋ค. ๊ธฐ์กด ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ @AndersMalmgren ๋๋ ๋ค๋ฅธ ๊ฐ๋ฐ์์๊ฒ WebUI๋ฅผ ๋ณ๊ฒฝํ๊ณ ๊ณต์ qBt๋ฅผ ๊ตฌ์ฑํ๋ฉด ์ค๋น๊ฐ ์๋ฃ๋ฉ๋๋ค.
์ฆ : github์์ ์์ค ํธ๋ฆฌ์ ์ผ๋ถ๋ง ๋ค์ด๋ก๋ํ๋ ค๋ฉด https://minhaskamal.github.io/DownGit์ ์ฌ์ฉํฉ๋๋ค.
ํนํ @AndersMalmgren RSS ๋ชจ๋ ์ ๋ฐ์ดํธ-> https://minhaskamal.github.io/DownGit/#/home ? url = https : % 2F % 2Fgithub.com % 2FAndersMalmgren % 2FqBittorrent % 2Ftree % 2Fmaster % 2Fsrc % 2Fwebui % 2Fwww ๋ฐ ๊ทธ๋ฐ ๋ค์ ์ผ๋ถ ํด๋์์ zip์ ํ์ฅํ๊ณ https://github.com/qbittorrent/qBittorrent/wiki/Alternate-WebUI-usage์ ์ง์นจ์ ๋ฐ๋ผ altWebUI๋ก ์ฌ์ฉ
๊ฒฝ๋ก๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ๋ฉด ์ฒ์์๋ ์ฝ๊ฐ์ ๋ฃจํ๊ฐ ๋ฐ์ํ์ง๋ง ์ด๊ฒ์ ์ ์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค. ์ด์จ๋ ์ด๊ฒ์ด ์ด๋ฏธ ๊ตฌํ๋์์ผ๋ฏ๋ก ์ด๋ป๊ฒ ๋ด๊ฐ (๋๋ ๋๊ตฌ๋ ์ง) ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์คํธ๋ฆผ์ผ๋ก ๋ณํฉํ๋๋ก ๋์ธ ์ ์์ต๋๊น?
ํ์ธ์ ์ํด UI์์ ์ ์ด / ํธ์ง ๊ธฐ๋ฅ ๋ง ์ฌ์ฉํ ์ ์์ต๋๊น? RSS ํผ๋๊ฐ ์ฌ์ ํ ๋ค์ด๋ก๋๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๊น?
+1 qbittorrent-nox์ RSS ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ฌ X ์๋์ฐ๊ฐ์๋ qBittorrent์ ๊ธฐ๋ฅ ํจ๋ฆฌํฐ๋ฅผ ๊ฐ๋๋กํ์ญ์์ค.
qbittorrent-nox์๋ RSS ๊ธฐ๋ฅ์ด ์์ผ๋ฉฐ UI๋ฅผ ์ ๊ณตํ์ง ์๋ ์น ํ๋ฐํธ ์๋์ ๋๋ค.
์ด์ ์ด๋ฅผ ๊ด๋ฆฌ ํ ์ธํฐํ์ด์ค๊ฐ ํ์ํฉ๋๋ค.
์ด์ ์ด๋ฅผ ๊ด๋ฆฌ ํ ์ธํฐํ์ด์ค๊ฐ ํ์ํฉ๋๋ค.
WebAPI์ ๋ํ HTTP ์์ฒญ์ผ๋ก ์ด๋ฏธ ์ ์ด ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ด WebUI๊ฐ ๋ด๋ถ์ ์ผ๋กํ๋ ์ผ์ ๋๋ค. ์์ฒญ์ํ๋ ๊ฒ์ ๋ฒํผ ๋ชจ์ ์ผ๋ฟ์ ๋๋ค.
๋ฐ๋ผ์ WebUI๊ฐ ๊ทธ๋ํฝ ๋ฐฉ์์ ์ ๊ณตํ๋๋ก ์ ๋ฐ์ดํธ ๋ ๋๊น์ง ํญ์ ์คํฌ๋ฆฝํธ ๋ฑ์ผ๋ก ์์ฒญ์ ํ ์ ์์ต๋๋ค.
๋๋ ๋ง ๊ทธ๋๋ก ์ง์ ์ค์นํ์ญ์์ค https://github.com/qbittorrent/qBittorrent/issues/453#issuecomment -600877487
RSS ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ ๋ค๋ฅธ ๋์ฒด webUI https://github.com/CzBiX/qb-web
RSS ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ ๋ค๋ฅธ ๋์ฒด webUI https://github.com/CzBiX/qb-web
์ด๊ฒ์ด ๊ธฐ๋ณธ webUI ์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค! ๊ธฐ๋ณธ๋ณด๋ค ํจ์ฌ ๋ซ์ต๋๋ค!
RSS ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ ๋ค๋ฅธ ๋์ฒด webUI https://github.com/CzBiX/qb-web
์ด๊ฒ์ด ๊ธฐ๋ณธ webUI ์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค! ๊ธฐ๋ณธ๋ณด๋ค ํจ์ฌ ๋ซ์ต๋๋ค!
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๊ฐ ์ฝ์ด๋ฅผ ๊ฑด๋๋ฆฌ์ง ์๊ณ ๋ UI ๊ธฐ๋ฅ์ ์ฌ์ฉ์ ์ ์ ํ ์ ์๋๋ก ๋์ฒด WebUI (๋ฐ ์ต๊ทผ Qt UI ํ
ํ๋ฆฟ)๊ฐ ๊ตฌํ๋์์ต๋๋ค.
ํต์ฌ ์ฝ๋์ ๋ณ๊ฒฝ ์ฌํญ์ ์ผ๋ถ (์ปค๋ฎค๋ํฐ, ๋น ์ ๋ฃ) ๊ฐ๋ฐ์๊ฐ์ด๋ฅผ ์์ํ ์ ์งํด์ผํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก์ด ๋ฌธ์ ๋ฅผ ์ง๊ธ ์ข ๋ฃํ๊ณ ์ถ์ต๋๋ค.
+1
/ me too
/ pleeeeease
/ i've waited 58 years instead of contributing in any way whatsoever to the project besides this disrespectful and ungrateful comment, why is this not done yet?
๊ฒ์๋ฌผ์ด ๋ง์ด ์์ต๋๋ค.์ด ํญ๋ชฉ์ ๋ซ์ผ๋ฉด ๋ ๊ฐ์ ์ ์ค๋ ๋๊ฐ ์ด๋ฆฝ๋๋ค.
+1
๋๊ธ์ด ํ์ํ์ง ์์ต๋๋ค. "์, ๋๋ ์ํฉ๋๋ค"๋ผ๊ณ ๋งํ๊ณ ์ถ๋ค๋ฉด ๋ฐ์์ ์ฌ์ฉํ์ธ์.์ถ๊ฐ ์ฐ๋ ค ์ฌํญ์ด์๋ ๊ฒฝ์ฐ ์๋ ค์ฃผ์ญ์์ค.
ํผ๋๋ฐฑ ๊ฐ์ฌํฉ๋๋ค.
๊ฐ๋ฐ ํ ๋ก ์ค๋ ๋๊ฐ ์์๋์์ต๋๋ค : https://github.com/qbittorrent/qBittorrent/issues/12354.
ํ์ ๊ธฐ๋ฅ ์์ฒญ์ https://github.com/qbittorrent/qBittorrent/issues/12355์์๋ ๊ฐ๋ฅํฉ๋๋ค. ์คํธ ๋ฉ์ผ์ ๋ณด๋ด์ง ๋ง๊ณ "+1"ํ๊ณ ์ถ๋ค๋ฉด ๋ฐ์์ ์ฌ์ฉํ์ธ์.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก์ด ๋ฌธ์ ๋ฅผ ์ง๊ธ ์ข ๋ฃํ๊ณ ์ถ์ต๋๋ค.
+1
/me too
/pleeeeease
/i've waited 58 years instead of contributing in any way whatsoever to the project besides this disrespectful and ungrateful comment, why is this not done yet?
๊ฒ์๋ฌผ์ด ๋ง์ด ์์ต๋๋ค.์ด ํญ๋ชฉ์ ๋ซ์ผ๋ฉด ๋ ๊ฐ์ ์ ์ค๋ ๋๊ฐ ์ด๋ฆฝ๋๋ค.
+1
๋๊ธ์ด ํ์ํ์ง ์์ต๋๋ค. "์, ๋๋ ์ํฉ๋๋ค"๋ผ๊ณ ๋งํ๊ณ ์ถ๋ค๋ฉด ๋ฐ์์ ์ฌ์ฉํ์ธ์.์ถ๊ฐ ์ฐ๋ ค ์ฌํญ์ด์๋ ๊ฒฝ์ฐ ์๋ ค์ฃผ์ญ์์ค.