반응형

이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다)
Notion 가입 Link

Plex Library Auto Scan은 GDRIVE Access 혹은 HDD Wake Up을 자주 유발하기 때문에 저는 Manual Scan으로 세팅하여 사용 중입니다.
그렇다고 매번 Plex Page에서 Scan버튼을 누르는것 또한 너무 번거로운 일입니다.

Plex는 URL을 통해 간단하게 Library를 Scan할 수 있는 방법을 제공하고 있습니다.

Plex Media Server URL Commands | Plex Support

X-Plex-Token 얻어오기

Finding an authentication token / X-Plex-Token | Plex Support

먼저 자신의 X-Plex-Token이 필요합니다.

  1. 자신의 Plex서버에 로그인
  2. 아무 미디어를 클릭하고 메뉴정보 가져오기xml 보기

  1. 주소표시줄에 자신의 X-Plex-token을 확인할 수있습니다

Library ID 확인

Libraray별로 Refresh를 진행하는것으로 보여 각 Library별로 ID를 확인해야합니다.
다음주소를 브라우저에 넣어봅니다.

http://localhost:32400/library/sections?X-Plex-Token={YOURTOKENVALUEHERE}

아래와 같은 Result를 확인할 수 있을 텐데 각 라이브러리별로 key라는 애트리뷰트를 확인하면 됩니다.

<MediaContainer size="3" allowSync="0" identifier="com.plexapp.plugins.library" mediaTagPrefix="/system/bundle/media/flags/"
mediaTagVersion="1390169701" title1="Plex Library">
   <Directory allowSync="0" art="/:/resources/movie-fanart.jpg" filters="1" refreshing="0" thumb="/:/resources/movie.png"
   key="29" type="movie" title="Movies" agent="com.plexapp.agents.imdb" scanner="Plex Movie Scanner"
   language="en" uuid="07a4b132-a67b-477e-a245-585935d08c0b" updatedAt="1394559305" createdAt="1390438950">
      <Location id="4" path="/Users/plexuser/Movies/Media/Movies"/>
   </Directory>
   <Directory allowSync="0" art="/:/resources/artist-fanart.jpg" filters="1" refreshing="0" thumb="/:/resources/artist.png"
   key="31" type="artist" title="Music" agent="com.plexapp.agents.lastfm" scanner="Plex Music Scanner"
   language="en" uuid="10254ef0-a0a4-481b-ad9c-46ab3db39d0b" updatedAt="1394039950"
   createdAt="1390440566">
      <Location id="7" path="/Users/plexuser/Movies/Media/Music"/>
   </Directory>
   <Directory allowSync="0" art="/:/resources/show-fanart.jpg" filters="1" refreshing="0" thumb="/:/resources/show.png"
   key="30" type="show" title="Television" agent="com.plexapp.agents.thetvdb" scanner="Plex Series Scanner"
   language="en" uuid="540e7c98-5a92-4e8f-b255-9cca2870060c" updatedAt="1394482680"
   createdAt="1390438925">
      <Location id="3" path="/Users/plexuser/Movies/Media/TV Shows"/>
   </Directory>
</MediaContainer>

여기서 확인한 key값을 통해 다음과 같은 url로 접근하면 해당 라이브러리의 refresh를 수행할 수있습니다.

http://localhost:32400/library/sections/{KEY}/refresh?X-Plex-Token={YOURTOKENVALUEHERE}

이외 다른 명령들은 위의 링크를 통해 확인해 보시기 바랍니다.

모든 Library Refresh Python Script

Transmission after-download 스크립트 와 같이 활용할 수 있도록 위의 과정들을 파이썬 스크립트로 작성하였습니다. Plex 서버에 존재하는 모든 라이브러리 스캔을 진행합니다.

GDRIVE(Plexdrive)사용자분들은 업로드 완료 후 Wait 시간이 있어야 정상동작 합니다.

#!/opt/QPython3/bin/python3

import requests
import xml.etree.ElementTree as ET


class plex_control:
    def __init__(self):
        self.response = list()
        self.x_token = 'X-Plex-Token=<USE_YOUR_TOKEN>'
        self.base_url = 'http://<Server Address>:32400/library/sections'

    def refresh(self, id):
        url = '%s/%s/refresh?%s' % (self.base_url, id, self.x_token)
        r = requests.get(url=url)
        self.response.append(r)

    def refresh_all(self):
        url = "{:s}?{:s}".format(self.base_url, self.x_token)
        r = requests.get(url=url)
        tree = ET.fromstring(r.text)

        ids = []
        for child in tree:
            ids.append(child.attrib['key'])

        for id in ids:
            self.refresh(id)

        return self.check_response();

    def check_response(self):
        result = ""
        for r in self.response:
            if r.status_code != requests.codes.ok:
                result += "Error in '{:s}' \n".format(r.url)
        return result


if __name__ == "__main__":
    plex = plex_control()
    out = plex.refresh_all()
    print(out)
    print("Plex Scan Finish!")
반응형
반응형

Requirement

Contents

QNAP에 기본으로 되어있는 vi의 경우 빌드과정에서 많이 줄여놓아 많은 기능들이 빠져있다.
심지어 한글 Editing 및 Viewing도 지원하지 않는다.
그래서 Ubuntu 18.04에서 Static Compile을 해서 VIM을 복사하여 사용 할 수있다
다음 링크를 참고하여 빌드 진행하였다.

참고: https://raymii.org/s/blog/Statically_cross_compiled_vim_for_x86_x86-64_and_mips.html

아래와 같은 Script수행 후 bin폴더내의 vim을 원하는 위치에 복사하여 사용하면 된다.


#!/bin/bash



apt install libncurses5-dev build-essential git



git clone https://github.com/vim/vim.git





pushd vim/src

export LDFLAGS="-static"

export MAKEFLAGS="-j4"

export CFLAGS=""

./configure --with-features=small  --with-compiledby='Remy <relst@relst.nl>'  --with-x=no  --disable-gui  --disable-netbeans  --disable-pythoninterp  --disable-python3interp  --disable-rubyinterp  --disable-luainterp

make



strip vim

popd

mkdir bin

cp vim/src/vim bin/.
반응형
반응형

[Python] 카카오 배경화면 확인 스크립트

Requirement

  • Python3
  • requests
  • sqlite3
  • python-telegram-bot

Article

카카오에서 매달 발행하는 배경화면을 업데이트 하여 사용 중에 있습니다.

카카오 배경화면 페이지 링크

이 배경화면이 사람이 하는 일이다보니 매번 같은시점에 업로드 되지 않아서
매번 들어가서 올라왔나 확인해아하는 번거로움이 있어 코딩연습겸 매일 자동으로 검사하여 텔레그램
메세지를 보내주는 스크립트를 작성하여 공유합니다

https://github.com/seongmock/check_kakao_bg

위의 Git Hub Link에서 확인가능합니다.
로컬에 있는 DB에 이번달에 해당하는 날짜의 파일을 받았는지 확인하는 기록을 하게되고
기록이 없으면 페이지에 접근하여 접근가능한지 확인 후 메세지를 전달합니다.

저는 NAS Crontab에 스케쥴 등록하여 사용중 입니다.

#!/opt/QPython3/bin/python3

from datetime import date
import sqlite3
import requests
import os

# Connect DB
con = sqlite3.connect('/share/my/Kakao/kakao.db')
cur = con.cursor();

#Create Table
try:
  cur.execute("CREATE TABLE Check_hist(Date text, Status text);")
except:
  pass;

today = date.today()
target = today.strftime('%Y%m');


#Check Already checked or not
cur.execute("SELECT * FROM Check_hist WHERE Date = %s;"%target);
for row in cur:
  exit();


#Check Web Respose
url='https://store.kakaofriends.com/kr/brand/wallpaper%s'%target;
r = requests.get(url);

#if Page Exist Save and Send
if (r.status_code==200):
  os.system("/share/my/Telegram/tele.py \"%s\n%s\" "%("Download Kakao BG", url));
  cur.execute("INSERT INTO Check_hist Values(\'%s\',\'%s\');"%(target, "O"));
  con.commit();
  con.close();
  exit();


###### tele.py Contents ######
#import telegram
#import sys
#text = ""
#for item in sys.argv[1:]:
#    text = text + " " + item;
#gram_token = 'Use own TOKEN'
#chat_id = 'Use own chat_id'
#mybot = telegram.Bot(token= gram_token)
#mybot.sendMessage(chat_id = chat_id, text=text);
#print("[Telegram] Send "+text);
####################################
반응형

'Software > Scripts' 카테고리의 다른 글

[Python] 복사로 구글 번역 (영어 논문 번역)  (0) 2019.08.28
반응형

[SSH] 윈도우에서 X11 포워딩 접속하기

이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다)
Notion 가입 Link

요즘 VSCode의 Remote SSH를 통해 원격 개발환경 꾸미기를 진행 중이다. 이런 과정에서 X11 디스플레이 포워딩을 진행하다 고생하여 관련 내용을 정리하여 본다.

필요사항

윈도우에서 X server를 설치해줘야 한다. Xming 도 있지만 요즘 vcXsrv를 많이 사용한다하여 설치해 보았다.

Linux 환경 설정

Sudo 권한을 통해 /etc/ssh/sshd_config 파일에 다음과 같은 라인을 추가하여 준다

    sudo gvim /etc/ssh/sshd_config

    ## ADD
    X11Forwarding yes

    #Save & Exit


    sudo service sshd restart

환경변수 추가

SSH -X를 통해 접속을해봐도 자동으로 DISPLAY번호가 발생하지 않아서 왜그런가 찾아봤더니 윈도우 환경변수에 DISPLAY가 추가되어있어야 한다고 한다. 다음과 같이 추가한다

이후 vcXsrv가 실행되어있는 상황에서 X를 띄우면 잘 뜨는것을 볼 수있다.

반응형
반응형

[Python] 복사로 구글 번역 (영어 논문 번역)

이 포스팅은 Notion에서 작성되었으며 다음추천인 링크를 통해 가입하시면 $10 Credit을 얻으실 수 있습니다(저에게는 $5 Credit이 쌓입니다)
Notion 가입 Link

영어 논문을 읽기 너무 힘들어 다음 꼬마사전과 같은 기능을 하는 윈도우 사전을 찾아 해매다가
링고스... 등등 모든 것들을 적용해 봤지만 제가 사용하는 방법에 적용하기는 너무 어려웠습니다.
그러다 클리앙 stargen님의 프로그램을 보게 되었고, 그와 비슷한 컨셉으로 google 번역을 할 수 있는 script를 작성하였습니다.

아래는 GITHUB에 작성한 MD입니다. 다음 주소에서 받으시면 됩니다
https://github.com/seongmock/copytrans

copytrans

CopyTrans는 간단한 파이썬 스크립트로 수행되고 있는 도중에 클립보드의 텍스트 변화를
감지하여 구글 번역기로 변역해 표시해 주는 역할을 합니다.
클리앙의 stargen님 프로그램을 사용하다가 사용가능한 단어길이가 짧아 만들어 보았습니다.
https://www.clien.net/service/board/pds/9071993

Requirement

Windows

  • Output 폴더내의 exe파일을 그대로 수행하시면 됩니다.

Others

  • python3
  • pip module: pyperclip, googletrans, beautifulsoup4, requests
  • MAC: pbcopy, pbpaste 명령어 사용
  • LINUX: xclip or xel, qtk or pyqt4

사용방법

  1. 스크립트 or exe를 실행한다.
  2. 번역하고자 하는 Text를 복사한다.
  3. 복사한 Text가 문장일 경우 Google 번역을 진행
  4. 복사한 Text가 단어일 경우 Daum Dict 검색을 진행

반응형

'Software > Scripts' 카테고리의 다른 글

[Python] 카카오 배경화면 확인 스크립트  (0) 2020.01.15

+ Recent posts