๐Ÿ ํ™ˆ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ๐Ÿ  ๋ฏธ๋””์–ด ์ž๋™ํ™”

์ƒˆ์–‘ยท2021๋…„ 3์›” 14์ผ
1

ํ™ˆ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ

๋ชฉ๋ก ๋ณด๊ธฐ
12/12
post-thumbnail

๊ฐœ์š”


๋ฏธ๋””์–ด ์ž๋™ํ™”๋Š” ํŠน์ • ์‚ฌ์ดํŠธ๋กœ ๋ถ€ํ„ฐ RSS feedback ์„ ๋ฐ›์•„์„œ ์›ํ•˜๋Š” ์ž๋ฃŒ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ Torrent ๋ฅผ Transmission ์œผ๋กœ ๋‹ค์šด๋ฐ›์•„ Plex ํด๋”์— ๋ถ„๋ฅ˜๊นŒ์ง€ ํ•˜๋Š” ์ž‘์—…์„ ์ž๋™ํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ง„ํ–‰ ์ˆœ์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. Python3 ์„ค์น˜
  2. FlexGet ์„ค์น˜
  3. FlexGet ์„ค์ •ํŒŒ์ผ ์ž‘์„ฑ
  4. ์„ค์ •ํŒŒ์ผ ํ…Œ์ŠคํŠธ
  5. cron ์˜ˆ์•ฝ

๋ฐ”๋กœ ํ•ด๋ณด์‹œ์ฃ .



Python3 ์„ค์น˜


sudo apt install python3 python3-venv -y




FlexGet ์„ค์น˜


Python virtualenvs ๋ฅผ ํ†ตํ•ด ์šด์˜์ฒด์ œ๋ฅผ ์—‰๋ง์œผ๋กœ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ๊ฐ€์ƒ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

python3 -m venv ~/.flexget/
cd ~/.flexget/
bin/pip install flexget
bin/pip install transmission-rpc

๋‹นํ™ฉํ•˜์ง€ ๋งˆ์„ธ์š”

์„ค์น˜ ๋„์ค‘ ERROR: Command errored out with exit status 1 ๊ณผ ๊ฐ™์€ ์—ฌ๋Ÿฌ์ค„์˜ ์—๋Ÿฌ๋ฉ”์„ธ์ง€๊ฐ€ ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด ๊ฒƒ์ด ์•„๋‹ˆ๋ฏ€๋กœ ๊ทธ๋ƒฅ ๊ณ„์† ์ง„ํ–‰ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.




FlexGet ์„ค์ •ํŒŒ์ผ ์ž‘์„ฑ


config.yml

vim ~/.flexget/config.yml
tasks:
  automedia:
    rss: [RSSํ”ผ๋“œURL]
    series:
      settings:
        group:
          timeframe: 12 hours
          target: 1080p
          quality: 720p+
      group:
        - '๋Ÿฐ๋‹๋งจ'
        - '๋นˆ์„ผ์กฐ'
    regexp:
      reject:
        - complete
    transmission:
      host: 127.0.0.1
      port: 9091
      username: [Transmission๊ณ„์ •๋ช…]
      password: [Transmission๋น„๋ฐ€๋ฒˆํ˜ธ]
      path: /srv/nextcloud/[Nextcloud๊ณ„์ •๋ช…]/files/Plex/TvShow/{{series_name}}
  • automedia ์ด๊ฑด ๊ทธ๋ƒฅ ํ•˜๋‚˜์˜ task ์ด๋ฆ„ ์ด๊ณ  ์ง์ ‘ ์ •ํ•˜์‹œ๋ฉด ๋˜๋Š”๋ฐ ๊ทธ๋Œ€๋กœ ์“ฐ์…”๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค.
  • rss ์ผ๋ถ€ ํ† ๋ ŒํŠธ ์‚ฌ์ดํŠธ๊ฐ€ ์ œ๊ณตํ•ด์ฃผ๋Š” RSS ํ”ผ๋“œ ๊ธฐ๋Šฅ์˜ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
    ๋ณดํ†ต ์•„๋ž˜์™€ ๊ฐ™์ด XML ํ˜•์‹์œผ๋กœ ๋˜์–ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

https://15.torrentube.net/rss/kt/list
์œ„ ์‚ฌ์ดํŠธ์— ์ ‘์† ํ•ด๋ณด์‹œ๊ณ  ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ๋ณด์ด์‹ ๋‹ค๋ฉด [RSSํ”ผ๋“œURL] ๋ฅผ https://15.torrentube.net/rss/kt/list ์ˆ˜์ •ํ•˜์…”์„œ ์“ฐ์‹œ๋ฉด ๋˜๊ณ  ์•„๋‹ ๊ฒฝ์šฐ ์ง์ ‘ ์ฐพ์œผ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

  • series > settings > group ํ™”์งˆ ์„ค์ • ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.
    ์œ„์™€ ๊ฐ™์ด ์„ค์ • ํ•˜์‹œ๋ฉด ํ•ด๋‹น ํŒŒ์ผ์ด ์˜ฌ๋ผ์™”์„ ๋•Œ quality ํ™”์งˆ๋งŒ ๋ฐ›์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ์„  target ํ™”์งˆ์ด ์˜ฌ๋ผ์™”์œผ๋ฉด ๋ฐ”๋กœ ๋‹ค์šด๋ฐ›์„ ๊ฒƒ์ธ๋ฐ ์•„๋‹ ๊ฒฝ์šฐ timeframe ์‹œ๊ฐ„ ๋™์•ˆ ๊ณ„์† target ํ™”์งˆ์ด ์˜ฌ๋ผ์˜ค๋Š”์ง€ ์ง€์ผœ๋ณด๋‹ค๊ฐ€ timeframe ์‹œ๊ฐ„์ด ์ง€๋‚  ๊ฒฝ์šฐ ๊ทธ๋ƒฅ quality ์— ํ•ด๋‹นํ•˜๋Š” ํ™”์งˆ์˜ ์˜์ƒ์„ ๋‹ค์šด๋ฐ›๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • series > group ๋ฏธ๋””์–ด ์ž๋™ํ™” ๊ธฐ๋Šฅ์— ๋„ฃ๊ณ ์‹ถ์€ ๋“œ๋ผ๋งˆ๋‚˜ ์˜ˆ๋Šฅ ์ด๋ฆ„์„ ์ •ํ™•ํžˆ ๋„ฃ์–ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • regexp > reject ์—ฌ๊ธฐ์— ๋“ฑ๋ก๋œ ๋ฌธ๊ตฌ๊ฐ€ ๊ฐ์ง€๋˜๋ฉด ๋‹ค์šด๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    complete ๋Š” ๋ณดํ†ต ๋ชจ๋“  ํšŒ์ฐจ๋ฅผ ๋“ฑ๋ก์‹œ์ผœ๋†“์€ ํ† ๋ ŒํŠธ์— ์ถœํ˜„ํ•ด์„œ ๋‹ค์šด๋ฐ›์ง€ ์•Š๊ฒŒ ํ•ด๋‘์—ˆ์Šต๋‹ˆ๋‹ค.
  • transmission ํŠธ๋ Œ์Šค๋ฏธ์…˜์˜ ์ •๋ณด [Transmission๊ณ„์ •๋ช…] [Transmission๋น„๋ฐ€๋ฒˆํ˜ธ] ์™€ ๋‹ค์šด๋ฐ›์„ ์œ„์น˜ [Nextcloud๊ณ„์ •๋ช…] ๋ฅผ ์ž์‹ ์˜ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•ด์„œ ์ž…๋ ฅํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.




์„ค์ •ํŒŒ์ผ ํ…Œ์ŠคํŠธ


์ฒดํฌ

~/.flexget/bin/flexget check
2021-03-15 00:06:19 VERBOSE  check                         Pre-checked 21 configuration lines
2021-03-15 00:06:19 VERBOSE  check                         Checking config file `/home/[Ubuntu๊ณ„์ •๋ช…]/.flexget/config.yml`
2021-03-15 00:06:19 VERBOSE  check                         Config passed check.

์‹คํ–‰ ํ…Œ์ŠคํŠธ

~/.flexget/bin/flexget --test execute
2021-03-15 00:09:29 INFO     manager                       Test mode, creating a copy from database ...
2021-03-15 00:09:29 INFO     manager                       Test database created
2021-03-15 00:09:32 VERBOSE  task_queue                    There are 1 tasks to execute. Shutdown will commence when they have completed.
2021-03-15 00:09:32 INFO     transmission  automedia       Trying to connect to transmission...
2021-03-15 00:09:32 INFO     transmission  automedia       Successfully connected to transmission.
2021-03-15 00:09:33 VERBOSE  details       automedia       Produced 50 entries.
2021-03-15 00:09:34 INFO     series.db     automedia       identified_by has locked in to type `ep` for ๋นˆ์„ผ์กฐ
2021-03-15 00:09:34 INFO     series        automedia       `๋นˆ์„ผ์กฐ`: timeframe waiting for 11h:59min. Currently best is `๋นˆ์„ผ์กฐ.E08.210314.720p-NEXT`.
2021-03-15 00:09:34 VERBOSE  task          automedia       ACCEPTED: `๋นˆ์„ผ์กฐ Vincenzo.S01E07.KOREAN.1080p.NF.WEBRip.DDP2.0.x264-Imagine[eztv.re]` by series plugin because target quality
2021-03-15 00:09:34 VERBOSE  series.db     automedia       identified by is currently on `auto` for ๋Ÿฐ๋‹๋งจ. Multiple id types may be accepted until it locks in on the appropriate type.
2021-03-15 00:09:34 INFO     series        automedia       `๋Ÿฐ๋‹๋งจ`: timeframe waiting for 11h:59min. Currently best is `๋Ÿฐ๋‹๋งจ.E546.210314.720p-NEXT`.
2021-03-15 00:09:34 VERBOSE  details       automedia       Summary - Accepted: 1 (Rejected: 0 Undecided: 49 Failed: 0)
2021-03-15 00:09:34 INFO     transmission  automedia       Would add ๋นˆ์„ผ์กฐ Vincenzo.S01E07.KOREAN.1080p.NF.WEBRip.DDP2.0.x264-Imagine[eztv.re] in transmission.
2021-03-15 00:09:35 INFO     manager                       Removed test database

์ฒ˜์Œ์— ๋นˆ์„ผ์กฐ 720p๊ฐ€ ๋ฐœ๊ฒฌ๋˜์–ด timeframe ์ธ 12์‹œ๊ฐ„ ๋™์•ˆ ๊ธฐ๋‹ค๋ ค๋ณธ๋‹ค๊ณ  ๋˜์–ด์žˆ๊ณ  ๊ทธ ํ›„ 1080p๊ฐ€ ๋ฐœ๊ฒฌ๋˜์–ด ํ† ๋ ŒํŠธ๋ฅผ transmission์— ์ถ”๊ฐ€ํ–ˆ๋‹ค๊ณ  ๋‚˜์™€์žˆ์Šต๋‹ˆ๋‹ค.

์œ„ ์ƒํ™ฉ ์ฒ˜๋Ÿผ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ๋ณด๊ธฐ ์œ„ํ•ด ์šฐ์„  rss ํ”ผ๋“œ๋ฐฑ ์‚ฌ์ดํŠธ์— ์˜ฌ๋ผ์™€์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ ์•„๋ฌด๊ฑฐ๋‚˜๋ฅผ ์„ค์ • ํŒŒ์ผ์— ๋„ฃ๊ณ  ํ…Œ์ŠคํŠธ ํ•ด๋ณด์„ธ์š”.

์‹คํ–‰

~/.flexget/bin/flexget execute
2021-03-15 00:13:19 VERBOSE  task_queue                    There are 1 tasks to execute. Shutdown will commence when they have completed.
2021-03-15 00:13:21 VERBOSE  details       automedia       Produced 50 entries.
2021-03-15 00:13:21 INFO     series.db     automedia       identified_by has locked in to type `ep` for ๋นˆ์„ผ์กฐ
2021-03-15 00:13:21 INFO     series        automedia       `๋นˆ์„ผ์กฐ`: timeframe waiting for 11h:59min. Currently best is `๋นˆ์„ผ์กฐ.E08.210314.720p-NEXT`.
2021-03-15 00:13:21 VERBOSE  task          automedia       ACCEPTED: `๋นˆ์„ผ์กฐ Vincenzo.S01E07.KOREAN.1080p.NF.WEBRip.DDP2.0.x264-Imagine[eztv.re]` by series plugin because target quality
2021-03-15 00:13:21 VERBOSE  series.db     automedia       identified by is currently on `auto` for ๋Ÿฐ๋‹๋งจ. Multiple id types may be accepted until it locks in on the appropriate type.
2021-03-15 00:13:21 INFO     series        automedia       `๋Ÿฐ๋‹๋งจ`: timeframe waiting for 11h:59min. Currently best is `๋Ÿฐ๋‹๋งจ.E546.210314.720p-NEXT`.
2021-03-15 00:13:21 VERBOSE  details       automedia       Summary - Accepted: 1 (Rejected: 0 Undecided: 49 Failed: 0)
2021-03-15 00:13:21 INFO     transmission  automedia       "๋นˆ์„ผ์กฐ Vincenzo.S01E07.KOREAN.1080p.NF.WEBRip.DDP2.0.x264-Imagine[eztv.re]" torrent added to transmission


์ž˜ ์‹คํ–‰ ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ  Transmission ํŽ˜์ด์ง€์—๋„ ์‹œ๋“œ๊ฐ€ ์ถ”๊ฐ€๋œ ๊ฒƒ์ด ๋ณด์ž…๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์œ„ ๋ช…๋ น์–ด๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ด์„œ ๋‹ค์‹œ ๋‹ค์šด๋ฐ›์œผ๋ ค๊ณ  ํ•  ๋•Œ ์ด๋ฏธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋‹ค์šด ํ–ˆ์—ˆ๋‹ค๊ณ  ๋“ฑ๋ก๋˜์žˆ์–ด์„œ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธธ๊ฒ๋‹ˆ๋‹ค.
์ด ๋•Œ๋Š” ~/.flexget/bin/flexget database reset --sure ๋ช…๋ น์–ด๋กœ ์ด๋•Œ๊นŒ์ง€ ๋ฐ›์•˜๋˜ ๋‚ด์—ญ๋“ค์„ ์ „๋ถ€ ์ดˆ๊ธฐํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.




cron ์˜ˆ์•ฝ


์‚ฌ์šฉ์ž ๊ณ„์ •์—์„œ cron ์ž‘์„ฑ

export EDITOR=vim
crontab -e

[Ubuntu๊ณ„์ •๋ช…] ์„ ์•Œ๋งž๊ฒŒ ์ˆ˜์ •ํ•œ ํ›„ ์ œ์ผ ์•„๋ž˜ ์ค„์— ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

@hourly /home/[Ubuntu๊ณ„์ •๋ช…]/.flexget/bin/flexget --cron execute

์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ ์•„๊นŒ ์ž…๋ ฅํ–ˆ๋˜ ๋ฌธ๊ตฌ๊ฐ€ ๋œฐ ๊ฒฝ์šฐ ์ž˜ ๋“ฑ๋ก๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

crontab -l | grep flexget




ํ™ˆ์„œ๋ฒ„ ํ™•์žฅ์„ฑ


ํ™ˆ์„œ๋ฒ„ ๋งŒ๋“œ๋Š๋ผ ์ •๋ง ๊ณ ์ƒํ•˜์…จ์Šต๋‹ˆ๋‹ค.
์ €๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์šฐ๋ถ„ํˆฌ ์„œ๋น„์Šค๋“ค์„ ์†Œ๊ฐœ ์‹œ์ผœ๋“œ๋ฆฌ๊ณ  ํ™ˆ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ ์‹œ๋ฆฌ์ฆˆ๋ฅผ ๋งˆ์น˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


code-server


https://github.com/cdr/code-server
์ด๋ ‡๊ฒŒ ์„ค์น˜ํ•œ ํ™ˆ์„œ๋ฒ„๋ฅผ ๋”์šฑ ๋ฉ‹์ง€๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” IDE์ธ VSCode ๋ฅผ ํ™ˆ์„œ๋ฒ„์— ์˜ฌ๋ ค๋‘๊ณ  ์›น์„œ๋น„์Šค๋ฅผ ํ•ด์„œ ์–ธ์ œ ์–ด๋””์„œ๋“  ์›น์œผ๋กœ VSCode ๋ฅผ ์ผœ๊ณ  ์ฝ”๋”ฉ์„ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.


NodeJS

๋ฐฑ์—”๋“œ ๊ฐ•์„ธ ํ”Œ๋žซํผ์ด์ฃ ~
๋…ธ๋“œ๋„ ์„ค์น˜ํ•ด์„œ ๋ฐฑ์—”๋“œ ํ”Œ๋žซํผ ๊ณต๋ถ€๋„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!
Nginx ์˜ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋กœ ์‹ค์ œ ์›น์„œ๋น„์Šค๋„ ๊ฐ€๋Šฅํ•˜๋‹ˆ ์ž์‹ ๋งŒ์˜ ํฌํŠธํด๋ฆฌ์˜ค ์‚ฌ์ดํŠธ๋„ ๋งŒ๋“ค์–ด๋ณด์„ธ์š”~


๋ชจ์˜ํ•ดํ‚น

๋ณด์•ˆ ๊ณต๋ถ€๋ฅผ ํ•˜๊ธฐ์œ„ํ•ด ์‹ค์ œ ์„œ๋น„์Šค์ค‘์ธ ์‚ฌ์ดํŠธ๋‚˜ ์„œ๋ฒ„๋ฅผ ๊ณต๊ฒฉํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๋ฒ•์ž…๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ์ž์‹ ์˜ ํ™ˆ์„œ๋ฒ„๋ฅผ ์ƒ๋Œ€๋กœ ๋ชจ์˜ํ•ดํ‚น ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด์„ธ์š”!
๊ทธ๋Ÿฌ๋ฉด ๋ณด์•ˆ ๊ณต๋ถ€๋„ ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ™ˆ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๊ธฐ์— ๋”์šฑ ์•ˆ์ „ํ•œ ํ™ˆ์„œ๋ฒ„๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ฒ ์ฃ ?

web develop & real service

code-server ๋Š” ์™ธ๋ถ€์˜ Public ํ•œ ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ž ๊น ๊ฐœ๋ฐœํ•˜๊ธฐ ์ข‹์€ ํˆด๋กœ ๋ณดํ†ต ์ง‘์—์„œ ์‚ฌ์šฉํ•˜์ง„ ์•Š์Šต๋‹ˆ๋‹ค.
๋ฐ์Šคํฌํƒ‘์ด ์œˆ๋„์šฐ ํ™˜๊ฒฝ์ผ ๋•Œ vscode ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ํ™ˆ์„œ๋ฒ„์— SSH ์—ฐ๊ฒฐ์„ ํ†ตํ•ด ์›น ๊ฐœ๋ฐœํ•  ๋•Œ ๋งค์šฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ €์˜ ๊ฒฝ์šฐ์—๋„ ๋“€์–ผ ๋ชจ๋‹ˆํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ๊ฐ vscode์™€ ๊ฐœ๋ฐœ์ค‘์ธ ์›นํŽ˜์ด์ง€๋ฅผ ํฌ๋กฌ์œผ๋กœ ๋„์›Œ ๋†“๊ณ 
vscode ์˜ SSH ํฌํŠธ ํฌ์›Œ๋”ฉ ๊ธฐ๋Šฅ๊ณผ ํฌ๋กฌ ์ต์Šคํ…์…˜ LiveReload ๋ฅผ ํ†ตํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ Frontend(HTML, CSS, JS)์™€ Backend(NodeJS) ๋ฅผ ๊ฐœ๋ฐœํ–ˆ์—ˆ๋Š”๋ฐ ์ง„์งœ ์ •๋ฆฌ ํŽธ๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.


๊ทธ๋Ÿผ ๋‹ค๋“ค ํ–‰๋ณตํ•œ ๊ฐœ๋ฐœํ•˜์„ธ์š”~
ํŒŒ์ดํŒ…

profile
์•ˆ๋…•, ์„ธ์ƒ!

0๊ฐœ์˜ ๋Œ“๊ธ€