Qbittorrent: ์›น UI์—์„œ RSS ํ”ผ๋“œ ์ œ์–ด / ํŽธ์ง‘

์— ๋งŒ๋“  2013๋…„ 02์›” 25์ผ  ยท  281์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: qbittorrent/qBittorrent

์ €๋Š” ํ† ๋ ŒํŠธ๋ฅผ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜๋„๋ก RSS ํ”ผ๋“œ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ–ˆ๋˜ OpenSUSE 12.2์—์„œ qbittorrent๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ์ด ์ƒ์ž๋ฅผ ์ง‘์˜ ๋ฏธ๋””์–ด ์„œ๋ฒ„๋กœ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ssh ์„ธ์…˜์ด๋‚˜ ์›น UI๋ฅผ ํ†ตํ•ด ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์ž์— ssh -Y๋ฅผ ๋„ฃ๊ณ  gui๋ฅผ ๊ฐ€์ ธ ์™€์„œ ํŽธ์ง‘ํ•˜์ง€ ์•Š๊ณ ๋„ qbittorrent์˜ RSS ํ”ผ๋“œ๋ฅผ ์ œ์–ด ํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. iPAD์—์„œ ์›น UI๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  RSS ํ”ผ๋“œ๋ฅผ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค.์ด ๊ธฐ๋Šฅ์„ ์›น UI์— ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๊ฐ์‚ฌ
jdavis3980

Feature request Help wanted RSS WebUI

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ์ข…๋ฃŒํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

  • ๋Œ€ํ™”๊ฐ€ ๋„ˆ๋ฌด ๊ธธ๊ณ  ์ฃผ์ œ์™€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ข‹์€ ์ ์ด ๋ช‡ ๊ฐ€์ง€ ์žˆ์ง€๋งŒ์ด ํ‹ฐ์ผ“์€ ๊ณต์‹ WebUI์˜ RSS ์ง€์›์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์žˆ๋Š” ๋งŽ์€ ๊ฒƒ๋“ค์„์œ„ํ•œ ์žฅ์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ฐ„๋‹จํ•˜๊ณ  ๋ช…ํ™•ํ•œ ๊ธฐ๋Šฅ ์š”์ฒญ์ž…๋‹ˆ๋‹ค.
  • ์ „์ฒด ๋Œ€ํ™”๋ฅผ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒํ•˜๋Š” +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? ๊ฒŒ์‹œ๋ฌผ์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๊ฐ€ ์š”์ฒญํ•œ ๊ธฐ๋Šฅ์€ ์ด์ œ ๋Œ€์ฒด WebUI๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ์œ ์ผํ•œ ํ•ฉ๋ฆฌ์ ์ธ ๊ฒƒ์€ ๊ณต์‹์ ์ธ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํ•ญ๋ชฉ์„ ๋‹ซ์œผ๋ฉด ๋‘ ๊ฐœ์˜ ์ƒˆ ์Šค๋ ˆ๋“œ๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค.

  • ํ•˜๋‚˜๋Š” ๊ธฐ๋ณธ WebUI์—์„œ์ด ๊ธฐ๋Šฅ์˜ ๊ตฌํ˜„์„ ์ถ”์ ํ•˜๊ณ  ์ด์— ์ง‘์ค‘ํ•˜๊ธฐ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. +1 ๋Œ“๊ธ€์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. "์˜ˆ, ๋‚˜๋„ ์›ํ•ฉ๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋ฐ˜์‘์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
  • "๋Œ€์ฒด WebUI ๊ฐœ๋ฐœ ํ† ๋ก "์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ํ•˜๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์ค‘์•™ ์ง‘์ค‘๋œ ์žฅ์†Œ์—์„œ ๋Œ€์ฒด WebUI ๊ฐœ๋ฐœ์— ๋Œ€ํ•ด ์ž์œ ๋กญ๊ฒŒ ํ† ๋ก  ํ•  ์ˆ˜ ์žˆ๋„๋กํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์šฐ๋ ค ์‚ฌํ•ญ์ด์žˆ๋Š” ๊ฒฝ์šฐ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

๋ชจ๋“  281 ๋Œ“๊ธ€

+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 ์ง€์›์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

https://github.com/buinsky/qBittorrent/tree/rss

+1

+1

+1

๋˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ˆ˜๋…„ ํ›„์— +1์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

+1

+1์€ ์•„๋งˆ๋„ RSS ํ”ผ๋“œ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ณ ์ด ์†๋„๋กœ API๋ฅผ ์ง์ ‘ ์ฐŒ๋ฅด๊ธฐ ์œ„ํ•ด ๋ฌด์–ธ๊ฐ€๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@buinsky , ์•„์ง๋„ ์ด๊ฒƒ์— ๋Œ€ํ•œ ์ž‘์—…์„ ์™„๋ฃŒ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ?

@glassez ๋ถˆํ–‰ํžˆ๋„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•œ @glassez ๋ฅผ ์ •๋ง

+1

+1

+1

+1

+1

+1 ํ•„์š”ํ•œ ํ•œ ๊ฐ€์ง€ ... rss ๋ณ€๊ฒฝ์„ ์œ„ํ•ด ๋‚ด ์„œ๋ฒ„์— ์›๊ฒฉ์œผ๋กœ ๊ท€์ฐฎ๊ฒŒํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฉ‹์ง„ ํด๋ผ์ด์–ธํŠธ!

+1์€ ์ด๊ฒƒ์ด ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ์‚ฌ์‹ค์กฐ์ฐจ ์•Œ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. :( ํ™•์‹คํžˆ ๊ทธ๊ฒƒ์„ ์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค!

์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜์‹ญ์‹œ์˜ค!

๋ถˆํ–‰ํžˆ๋„์ด ํ”„๋กœ์ ํŠธ์—๋Š” ํ˜„์žฌ ํ™œ์„ฑ ์›น ๊ฐœ๋ฐœ์ž๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

+1
qbittorrent ํ™ˆํŽ˜์ด์ง€๋ฅผ๋ณด๊ณ  ํ—ค๋”์—†๋Š” ์„ค์น˜๋กœ ๋ฐ”๋กœ ๋›ฐ์–ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

  • AJAX๋กœ ์ž‘์„ฑ๋œ ์›น ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•œ ์›๊ฒฉ ์ œ์–ด
    - ์ผ๋ฐ˜ GUI์™€ ๊ฑฐ์˜ ๋™์ผ

์ด ํ…์ŠคํŠธ๋Š” ๋ˆ„๋ฝ ๋œ ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ 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, "์ถ”๊ฐ€"๋ฅผ ํด๋ฆญํ•ด๋„ ์•„๋ฌด ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š๊ณ  ๋“œ๋กญ ๋‹ค์šด ๋ฉ”๋‰ด๊ฐ€ ๋น„์–ด ์žˆ๊ณ  ํŽธ์ง‘ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค)

๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

image

์•ˆ๋…•ํ•˜์„ธ์š” @jadazul ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
Rss

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์„ ์„ค์ •ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ชจ๋“  ๊ฒƒ์ด ์ž˜๋ชป๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://youtu.be/t_w9epoyxC8

@AndersMalmgren ์€ Alt WebUI https://github.com/qbittorrent/qBittorrent/wiki/Alternate-WebUI-usage ๋ฅผ ํ†ตํ•ด Tampermonkey๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  webui ๊ฐœ์„  ์„œ๋ฒ„ ์ธก์„ ์‚ฝ์ž… ํ•  ์ˆ˜ ์žˆ์Œ์„ ๊ธฐ์–ต

setRule์ด 4.1.3์—์„œ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์ œ๊ฐ€ ๋งŒ๋“  ๋™์˜์ƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ”ผ๋“œ URL์„ ์„ค์ •ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ชจ๋“  ๊ฒƒ์ด ์ž˜๋ชป๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://youtu.be/t_w9epoyxC8

ํ”„๋กœํ† ์ฝœ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์–ผ๋งˆ ์ „์— ์ˆ˜์ • ํ•œ ๋‚ด์šฉ์„ ์ •ํ™•ํžˆ ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ํ™•์ธํ•ด์ฃผ์‹ญ์‹œ์˜ค.

`

// ==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 ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ๋งˆ์Šคํ„ฐ๋Š” ๋งˆ์Šคํ„ฐ์—์„œ ์†Œ์Šค๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

https://github.com/AndersMalmgren/qBittorrent/tree/v4_1_x

@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 ๋…„

๊ทธ๋ž˜ ๋‚ด๊ฐ€ ๋„ˆ๋ผ๋ฉด ๊ธฐ๋‹ค๋ฆด๊ฑฐ์•ผ.

+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 ํ”ผ๋“œ์—์„œ ํ† ๋ ŒํŠธ๋ฅผ ๋ณด๊ฑฐ๋‚˜ ๋‹ค์šด๋กœ๋“œ ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๊ทธ๋‹ค์ง€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ—‰ํ—‰
์‹œ๋„ํ–ˆ์ง€๋งŒ ...
obraz

์—ฌ๊ธฐ์„œ ํ• ๊ฒŒ ์—†์–ด...

RTorrent์™€ ์‹ธ์šธ ๊ฑฐ์—์š”

@ Haxy89 ์˜ˆ,

ํ—‰ํ—‰
์‹œ๋„ํ–ˆ์ง€๋งŒ ...
obraz

์—ฌ๊ธฐ์„œ ํ• ๊ฒŒ ์—†์–ด...

์ฝ˜์†”์€ ๋ฌด์—‡์„ ๋งํ•ฉ๋‹ˆ๊นŒ? ๋ฌด์–ธ๊ฐ€๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. 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 ๋ธŒ๋žœ์น˜๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

image

@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๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์–ด๋–ค ๊ธ‰๋ฅ˜์™€๋„ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•˜์ง€๋งŒ ์–ด์จŒ๋“  ํ”ผ๋“œ ์—…๋ฐ์ดํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•ฉ๋‹ˆ๊นŒ?

์ด๋Ÿฐ ์‹์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
ํ”ผ๋“œ๋Š” ์ง€์ •๋œ ๊ฐ„๊ฒฉ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค. ํ”ผ๋“œ ์—…๋ฐ์ดํŠธ ๊ทœ์น™์ด ์ ์šฉ๋˜๋Š” ๊ฒฝ์šฐ.

์ด๋Ÿฌํ•œ ์„ค์ •์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ์ถœํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

image

ํ˜„์žฌ API๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ํ”ผ๋“œ ์—…๋ฐ์ดํŠธ ๊ธฐ๋Šฅ์€ API์— ์—†์Šต๋‹ˆ๋‹ค.

image

๋˜๋Š” ๊ทธ ๋ฌธ์ œ์— ๋Œ€ํ•œ singel ํ”ผ๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์‹ญ์‹œ์˜ค

image

4.1.x ๋ธŒ๋žœ์น˜์˜ ๋‹ค์šด๋กœ๋“œ ์„ค์ • ํƒญ์— RSS ํ”ผ๋“œ ์„ค์ •์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

image

์•ˆ๋…•ํ•˜์„ธ์š”.
์ž๋™ ๋‹ค์šด๋กœ๋“œ์— ๋Œ€ํ•œ ์„ค์ •์ด ์žˆ์Šต๋‹ˆ๊นŒ?
ํ† ๋ ŒํŠธ๋Š” ์–ด๋””์—์„œ ์ž๋™ ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๊นŒ? ๊ธฐ๋ณธ ๋‹ค์šด๋กœ๋“œ ํด๋”?
์„ ํƒํ•œ ํ† ๋ ŒํŠธ ๋“ฑ ๋งŒ ์ž๋™ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ํ•„ํ„ฐ?

@ Haxy89 ๊ทธ๊ฐ€ ๊ทธ์˜ ์ €์žฅ์†Œ์—์„œ ์ฒ˜์Œ์œผ๋กœ ๋ณ€๊ฒฝ ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ

@ Haxy89 @Ingvix๊ฐ€ ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ํฌํ•จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์œ„์˜ RSS ์„ค์ •์€ ์ง€๊ธˆ๊นŒ์ง€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์šด๋กœ๋“œ ์„ค์ • ํƒญ์— RSS ํ”ผ๋“œ ์„ค์ •์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ Pull Request๋กœ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
์•„๋‹ˆ๋ฉด qBittorrent ๋‚ด์žฅ WebUI์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ํ”ผ๋“œ ์—…๋ฐ์ดํŠธ ๊ธฐ๋Šฅ์€ API์— ์—†์Šต๋‹ˆ๋‹ค.

๋ ๊ฑฐ์•ผ.

๋‹ค์šด๋กœ๋“œ ์„ค์ • ํƒญ์— RSS ํ”ผ๋“œ ์„ค์ •์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ Pull Request๋กœ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
์•„๋‹ˆ๋ฉด qBittorrent ๋‚ด์žฅ WebUI์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

๋ˆ„๋ฝ ๋œ ๊ธฐ๋Šฅ ๋งŒ ๋ฒˆ์—ญ์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ํ•˜๋“œ ์ฝ”๋”ฉ

https://github.com/AndersMalmgren/qBittorrent/blob/c52de3980f7543248e88f76c09f53da41dc4d63b/src/webui/www/private/preferences_content.html#L236

๋ฒˆ์—ญ์ด ์—†์–ด๋„ ๊ดœ์ฐฎ์„ ํ…๋ฐ, ์ ์–ด๋„ ์šฐ๋ฆฌ๋Š” ํ•  ์ˆ˜์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

๊ทธ๋ž˜์„œ ์ ์–ด๋„ ์‹œ๊ฐ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋„๋ก ๊ด€๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ ๊ธ‰๋ฅ˜๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํฌํ•จ / ํฌํ•จ ์•ˆ ํ•จ์ด ์ •๊ทœ์‹์„ ์ง€์›ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ์Šฌ๋ž˜์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ž…๋ ฅํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ •๊ทœ์‹ ์ง€์›์„ ๊ณ ๋ ค ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋˜ํ•œ 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 ์ง€์›์ด ๋ถ€์กฑํ•˜์—ฌ ๋‹ค๋ฅธ ํ† ๋ ŒํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ ๊ทน์ ์œผ๋กœ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

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 ํ…œํ”Œ๋ฆฟ)๊ฐ€ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
ํ•ต์‹ฌ ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ผ๋ถ€ (์ปค๋ฎค๋‹ˆํ‹ฐ, ๋น„ ์œ ๋ฃŒ) ๊ฐœ๋ฐœ์ž๊ฐ€์ด๋ฅผ ์˜์›ํžˆ ์œ ์ง€ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ์ด ๋ฌธ์ œ๋ฅผ ์ง€๊ธˆ ์ข…๋ฃŒํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

  • ๋Œ€ํ™”๊ฐ€ ๋„ˆ๋ฌด ๊ธธ๊ณ  ์ฃผ์ œ์™€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ข‹์€ ์ ์ด ๋ช‡ ๊ฐ€์ง€ ์žˆ์ง€๋งŒ์ด ํ‹ฐ์ผ“์€ ๊ณต์‹ WebUI์˜ RSS ์ง€์›์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์žˆ๋Š” ๋งŽ์€ ๊ฒƒ๋“ค์„์œ„ํ•œ ์žฅ์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ฐ„๋‹จํ•˜๊ณ  ๋ช…ํ™•ํ•œ ๊ธฐ๋Šฅ ์š”์ฒญ์ž…๋‹ˆ๋‹ค.
  • ์ „์ฒด ๋Œ€ํ™”๋ฅผ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒํ•˜๋Š” +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? ๊ฒŒ์‹œ๋ฌผ์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๊ฐ€ ์š”์ฒญํ•œ ๊ธฐ๋Šฅ์€ ์ด์ œ ๋Œ€์ฒด WebUI๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ์œ ์ผํ•œ ํ•ฉ๋ฆฌ์ ์ธ ๊ฒƒ์€ ๊ณต์‹์ ์ธ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํ•ญ๋ชฉ์„ ๋‹ซ์œผ๋ฉด ๋‘ ๊ฐœ์˜ ์ƒˆ ์Šค๋ ˆ๋“œ๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค.

  • ํ•˜๋‚˜๋Š” ๊ธฐ๋ณธ WebUI์—์„œ์ด ๊ธฐ๋Šฅ์˜ ๊ตฌํ˜„์„ ์ถ”์ ํ•˜๊ณ  ์ด์— ์ง‘์ค‘ํ•˜๊ธฐ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. +1 ๋Œ“๊ธ€์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. "์˜ˆ, ๋‚˜๋„ ์›ํ•ฉ๋‹ˆ๋‹ค"๋ผ๊ณ  ๋งํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋ฐ˜์‘์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
  • "๋Œ€์ฒด WebUI ๊ฐœ๋ฐœ ํ† ๋ก "์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ํ•˜๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์ค‘์•™ ์ง‘์ค‘๋œ ์žฅ์†Œ์—์„œ ๋Œ€์ฒด WebUI ๊ฐœ๋ฐœ์— ๋Œ€ํ•ด ์ž์œ ๋กญ๊ฒŒ ํ† ๋ก  ํ•  ์ˆ˜ ์žˆ๋„๋กํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์šฐ๋ ค ์‚ฌํ•ญ์ด์žˆ๋Š” ๊ฒฝ์šฐ ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค.

ํ”ผ๋“œ๋ฐฑ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ํ† ๋ก  ์Šค๋ ˆ๋“œ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค : https://github.com/qbittorrent/qBittorrent/issues/12354.
ํ›„์† ๊ธฐ๋Šฅ ์š”์ฒญ์€ https://github.com/qbittorrent/qBittorrent/issues/12355์—์„œ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ŠคํŒธ ๋ฉ”์ผ์„ ๋ณด๋‚ด์ง€ ๋ง๊ณ  "+1"ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋ฐ˜์‘์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰