plex movie feed

plex서버에서 최신피드 xml 형으로 만들기


드라마/예능 라이브러리는 xml 방식이 조금다르다. 


* php / codeigniter 기준으로 되어있습니다. 


1. Simplexml 라이브러리 


출처 : https://www.codeigniter-kr.org/bbs/view/source?idx=7542


Simplexml.php


2. xml 주소만들기 


토큰과 카테고리 주소를 알아야된다.


가장쉬운방법으로는 영상 정보에서 xml열기로 확인하자



1. 정보보기

2. view xml


xml 파일을 열어보면 주소 마지막에 토큰값이 있다. ( X-Plex-Token= )

카테고리는 librarySectionKey="/library/sections/21"부분 확인




이제 최신 영화 피드를 보는 xml를 만들어보자.


http://server-ip:32400/library/sections/카테고리ID/recentlyAdded?X-Plex-Container-Size=10&X-Plex-Token=토큰ID


들어가서 확인해보면 xml이 만들어져있다. 


3. xml 파싱하기


//Controller 
public function index()
{
	$this->load->model('plexMediaFeed');
	$url = 'server-url';
	$token = '토큰ID';
	$category =  카테고리ID

	$data = array(
		'movieData' => $this->plexMediaFeed->getMovieFeed($url,$token,$category,5)
	);
	$this->load->view('plex-update',$data);
}

//Model 
/**
* $url : 서버주소
* $token : 토큰ID
* $category : 카테고리ID
* $limit : 가져올 개수 
**/
function getMovieFeed($url,$token,$category,$limit='5') {
	$xml_url = $url.'/library/sections/'.$category.'/recentlyAdded?X-Plex-Container-Size=10&X-Plex-Token='.$token;
	$xmlRaw = file_get_contents($xml_url);
	$xmlData = $this->simplexml->xml_parse($xmlRaw);

	$data = array();
	foreach($xmlData['Video'] as $row)
	{
		if(!$limit--) break;
		array_push($data,
			array ( 
				'title' => $row['@attributes']['title'], //영화이름
				'thumb' => $url.$row['@attributes']['thumb'].'?X-Plex-Token='.$token, //썸네일 이미지주소 
			)
		);
	}
}


4. 확인 


'취미생활 > 혼자삽질기' 카테고리의 다른 글

plex movie feed  (0) 2018.12.29
코드이그나이터 RSS파싱 라이브러리  (0) 2018.12.27
반응형 viewport 및 해상도별 css  (0) 2018.12.26
codeigniter index.php 제거하기  (0) 2018.12.24
mysql 사용자에게 테이블 권한주기  (0) 2018.12.24
CSS reset  (0) 2018.12.21

태그 : CI, php, plex, plex xml, XML

댓글(0)

코드이그나이터 RSS파싱 라이브러리

코드이그나이터(CI)에서 RSS 파싱해보기


1. 라이브러리 다운로드 (아래주소)

https://github.com/hasokeric/codeigniter-rssparser



2. 라이브러리 폴더에 Rssparser.php 파일 복사



3. 사용법


$this->load->library('rssparser');							// 라이브러리 로드
$this->rssparser->set_feed_url('http://example.com/feed'); 	// RSS URL설정
$this->rssparser->set_cache_life(30); 						// 캐시수명시간(분)
$rss = $this->rssparser->getFeed(6); // 가져올 피드개수


4. 예제 


$url = 'https://load-map.com/rss';
$data = $this->rssparser->set_feed_url('https://load-map.com/rss')->getFeed(3);
var_dump($data);




위와같이 잘 출력된다. 

'취미생활 > 혼자삽질기' 카테고리의 다른 글

plex movie feed  (0) 2018.12.29
코드이그나이터 RSS파싱 라이브러리  (0) 2018.12.27
반응형 viewport 및 해상도별 css  (0) 2018.12.26
codeigniter index.php 제거하기  (0) 2018.12.24
mysql 사용자에게 테이블 권한주기  (0) 2018.12.24
CSS reset  (0) 2018.12.21

댓글(0)

반응형 viewport 및 해상도별 css

뷰포트




해상도별 CSS (출처 : https://goo.gl/v5Lktq )


/* 스마트폰 (가로 및 세로) ----------- */
@media only screen and (min-device-width : 320px) and (max-device-width : 480px) {
/* 사용자 코드 */
}

/* 스마트폰 (가로 ) ----------- */
@media only screen and (min-width : 321px) {
/* 사용자 코드 */
}

/* 스마트폰 (세로) ----------- */
@media only screen and (max-width : 320px) {
/* 사용자 코드 */
}

/* 아이패드 (가로 및 세로) ----------- */
@media only screen and (min-device-width : 768px) and (max-device-width : 1024px) {
/* 사용자 코드 */
}

/* 아이패드 (가로) ----------- */
@media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : landscape) {
/* 사용자 코드 */
}

/* 아이패드 (세로) ----------- */
@media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : portrait) {
/* 사용자 코드 */
}

/* PC 및 노트북 ----------- */
@media only screen and (min-width : 1224px) {
/* 사용자 코드 */
}

/* 대형 스크린 ----------- */
@media only screen and (min-width : 1824px) {
/* 사용자 코드 */
}

/* 아이폰 4 ----------- */
@media
only screen and (-webkit-min-device-pixel-ratio : 1.5),
only screen and (min-device-pixel-ratio : 1.5) {
/* 사용자 코드 */
}

/* 아이폰 5 & 5S 가로 및 세로 */
@media only screen and (min-device-width : 320px) and (max-device-width : 568px) {
/* 사용자 코드 */
}

/* 아이폰 5 & 5S 가로 ------ */
@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {
/* 사용자 코드 */
}

/* 아이폰 5 & 5S 세로 ------ */
@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : portrait) {
/* 사용자 코드 */
}

/* 아이폰 6 세로 및 가로 */
@media only screen and (min-device-width : 375px) and (max-device-width : 667px) {
/* 사용자 코드 */
}

/* 아이폰 6 가로 */
@media only screen and (min-device-width : 375px) and (max-device-width : 667px) and (orientation : landscape) {
/* 사용자 코드 */
}

/* 아이폰 6 세로 */
@media only screen and (min-device-width : 375px) and (max-device-width : 667px) and (orientation : portrait) {
/* 사용자 코드 */
}

/* 아이폰 6 Plus 가로 및 세로 */
@media only screen and (min-device-width : 414px) and (max-device-width : 736px) {
/* 사용자 코드 */
}

/* 아이폰 6 Plus 가로 */
@media only screen and (min-device-width : 414px) and (max-device-width : 736px) and (orientation : landscape) {
/* 사용자 코드 */
}

/* 아이폰 6 Plus 세로 */
@media only screen and (min-device-width : 414px) and (max-device-width : 736px) and (orientation : portrait) {
/* 사용자 코드 */
}

/* 아이패드 미니 가로 및 세로 */
@media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (-webkit-min-device-pixel-ratio: 1)  {
/* 사용자 코드 */
}

/* 아이패드 미니 가로 */
@media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : landscape) and (-webkit-min-device-pixel-ratio: 1)  {
/* 사용자 코드 */
}

/* 아이패드 미니 세로 */
@media only screen and (min-device-width : 768px) and (max-device-width : 1024px) and (orientation : portrait) and (-webkit-min-device-pixel-ratio: 1)  {
/* 사용자 코드 */
}


'취미생활 > 혼자삽질기' 카테고리의 다른 글

plex movie feed  (0) 2018.12.29
코드이그나이터 RSS파싱 라이브러리  (0) 2018.12.27
반응형 viewport 및 해상도별 css  (0) 2018.12.26
codeigniter index.php 제거하기  (0) 2018.12.24
mysql 사용자에게 테이블 권한주기  (0) 2018.12.24
CSS reset  (0) 2018.12.21

댓글(0)

codeigniter index.php 제거하기

Apache 설정


	sudo vi /etc/apache2/sites-available/000-default.conf

	AllowOverride None -> AllowOverride All

	sudo service apache2 restart


ci config.php 설정


	$config['index_page'] = '';


.htaccess 수정



  RewriteEngine On
  RewriteBase /
  RewriteCond $1 !^(index\.php|images|captcha|data|include|uploads|robots\.txt)
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ (루트 디렉토리가 아닐경우 서브폴더명 )index.php/$1 [L]


댓글(0)

mysql 사용자에게 테이블 권한주기

mysql 사용자에게 테이블 권한주기


- mysql root 접속
mysql -u root -p

GRANT ALL PRIVILEGES ON DB명.테이블 TO 계정아이디@host IDENTIFIED BY '비밀번호';


댓글(0)

CSS reset

css reset 


	/* Reset Styles
	***********************/
	html, body, div, span, applet, object, iframe,h1, h2, h3, h4, h5, h6, p, blockquote, pre,a, abbr, acronym, address, big, cite, code,del, dfn, em, img, ins, kbd, q, s, samp,small, strike, strong, sub, sup, tt, var,b, u, i, center,dl, dt, dd, ol, ul, li,fieldset, form, label, legend,table, caption, tbody, tfoot, thead, tr, th, td,article, aside, canvas, details, embed,figure, figcaption, footer, header, hgroup,menu, nav, output, ruby, section, summary,time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; }
	/* HTML5 display-role reset for older browsers */
	article, aside, details, figcaption, figure,footer, header, hgroup, menu, nav, section {display: block;}
	body {line-height: 1;}
	ol, ul {list-style: none;}
	blockquote, q demo
	blockquote:before, blockquote:after,q:before, q:after {content: ''; content: none;}
	table {border-collapse: collapse; border-spacing: 0;}
	strong {font-weight: bold;}
	em {font-style: italic;}
	a {color: #fff; text-decoration: none; outline: none}
	a:hover, a:active {text-decoration: none; color:#fff; }


댓글(0)

ubuntu 파일 내 텍스트 치환(replace) 하기

파일 내 텍스트 일괄수정


	find ./ -name "*.php" -exec perl -pi -e 's/lovejin90.kr/lovejin90.com/g' {} \;


현재폴더 내 모든 php 파일에서 lovejin90.kr 을 lovejin90.com으로 치환하는 명령어 

태그 : replace, ubuntu, 치환

댓글(0)

햄버거메뉴 애니메이션 주기

모바일에서 많이 사용하는 메뉴아이콘 일명 햄버거


애니메이션 효과를 줘보자 


예제 : https://codepen.io/lovejin90/pen/REoZNE




소스코드

	
	$(function(){
	  $('.menu-box .menu-ui').click(function(){
		$(this).toggleClass('active');  
	  });
	});
	.menu-box .menu-ui,
	.menu-box .menu-ui span {
		display: inline-block;
		transition: all .4s;
		box-sizing: border-box;
	}
	.menu-box .menu-ui {
		position: relative;
		width: 25px;
		height: 25px;
		z-index: 4;
	}

	.menu-box .menu-ui span {
		position: absolute;
		left: 0;
		width: 100%;
		height: 2px;
		background-color: #000000;
		border-radius: 4px;
	}

	.menu-box .menu-ui span.active{
		background-color: #ffffff;
	}

	.menu-box .menu-ui span:nth-of-type(1) {
		top: 0;
	}

	.menu-box .menu-ui span:nth-of-type(2) {
		top: 9px;
	}

	.menu-box .menu-ui span:nth-of-type(3) {
		bottom: 4px;
	}

	.menu-box .menu-ui.active span:nth-of-type(1) {
		-webkit-transform : translateY(10px) rotate(-45deg);
		transform : translateY(10px) rotate(-45deg);
	}
	.menu-box .menu-ui.active span:nth-of-type(2) {
		left : 50%;
		opacity : 0;
		-webkit-animation : active-menu-bar05 .8s forwards;
		animation : active-menu-bar05 .8s forwards;
	}
	.menu-box .menu-ui.active span:nth-of-type(3) {
		-webkit-transform : translateY(-9px) rotate(45deg);
		transform : translateY(-9px) rotate(45deg);
	}


댓글(0)

css 애니메이션 사용하기

css 애니메이션 사용하기



보통 위와같은 효과를줄때 예전엔 jquery 를 사용했었는데 요즘엔 css로 처리할때도 있다.



	
        
        Test
        
        
        
	
	
        
        

Hello World1

Hello World2

Hello World3

/*

  애니메이션 지속시간

  all 대신하여 지정하여 넣어도됨.

*/

transition: all .8s;

-webkit-transition: all .8s;

-moz-transition: all .8s;

// 애니메이션 딜레이

transition-delay: .5s;



https://codepen.io/lovejin90/pen/pqjZaa

태그 : CSS

댓글(0)

.jsx 다른 클래스 import할때 jsx확장자 제거하기

.jsx 다른 클래스 import 할때 확장자 제거하기


import Counter from './Counter.jsx';

위에서 .jsx를 제거하면 아래와같은 에러가 난다. 


ERROR in ./MainPage.jsx
Module not found: Error: Can't resolve './Counter' in 'C:\project\demo\src\main\jsx'
 @ ./MainPage.jsx 23:0-32 50:64-71


webpack.config.js 에 아래내용 추가



module: {
        rules: [ {
            ...
            resolve: {
                extensions: [".js", ".jsx"]
            }
        }
		...
    }


이후 .jsx를 제거하면 정상적으로 출력됨.




태그 : react

댓글(0)

spring x react 세팅후 package.json 파일이 안보일때

spring x react 세팅후 package.json 파일이 안보일때 


https://github.com/babel/babel/tree/master/packages/babel-plugin-proposal-class-properties



나는 @babel/plugin-proposal-class-properties 설치후 생성되었다. 

태그 : react

댓글(0)

react state 에러

SyntaxError: C:\project\demo\src\main\jsx\Counter.jsx: Support for the experimental syntax 'classProperties' isn't currently enabled (4:9):


import React, { Component } from 'react';

class Counter extends Component {
  state = { //이부분에 에러날때 
    number: 0
  }
  ...



처리방법


package.json 에 아래내용추가. 

plugins만 추가해도 될것같기도함.


  ...
  "babel": {
    "presets": [
      "@babel/preset-env",
      "@babel/preset-react"
    ],
    "plugins": [
      "@babel/plugin-proposal-class-properties"
    ]
  }


태그 : react

댓글(0)

Missing privilege separation directory: /var/run/sshd

서버 리부팅을 하였는데 ssh가 붙지않고 에러가 났다.


root@lovejin90:/etc/apache2# systemctl status rsyslog.service
● rsyslog.service - System Logging Service
   Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
   Active: failed (Result: start-limit-hit) since 화 2018-11-27 19:18:20 KST; 11s ago
     Docs: man:rsyslogd(8)
           http://www.rsyslog.com/doc/
  Process: 732 ExecStart=/usr/sbin/rsyslogd -n (code=exited, status=1/FAILURE)
 Main PID: 732 (code=exited, status=1/FAILURE)

11월 27 19:18:20 lovejin90 systemd[1]: rsyslog.service: Main process exited, code=exited, status=1/FAILUR
11월 27 19:18:20 lovejin90 systemd[1]: Failed to start System Logging Service.
11월 27 19:18:20 lovejin90 systemd[1]: rsyslog.service: Unit entered failed state.
11월 27 19:18:20 lovejin90 systemd[1]: rsyslog.service: Failed with result 'exit-code'.
11월 27 19:18:20 lovejin90 systemd[1]: rsyslog.service: Service hold-off time over, scheduling restart.
11월 27 19:18:20 lovejin90 systemd[1]: Stopped System Logging Service.
11월 27 19:18:20 lovejin90 systemd[1]: rsyslog.service: Start request repeated too quickly.
11월 27 19:18:20 lovejin90 systemd[1]: Failed to start System Logging Service.
11월 27 19:18:20 lovejin90 systemd[1]: rsyslog.service: Unit entered failed state.
11월 27 19:18:20 lovejin90 systemd[1]: rsyslog.service: Failed with result 'start-limit-hit'.
lines 1-18/18 (END)


원인은 찾고 해결했지만 왜 이렇게 됬는지 모르겠다. 

폴더 생성후 권한주고 다시 ssh를 시작시켜주면 정상적으로 된다.


mkdir /var/run/sshd
chmod 0755 /var/run/sshd


태그 : ssh, ubuntu

댓글(0)

Spring x react 연동하기

에디터 vscode 기준


2018/11/23 - [취미생활/알쓸기능] - vscode spring 프로젝트 생성하기


이전 vscode에 설치한 spring에 react를 연동시켜보았다.

이글은 전적으로 이동련님 블로그에서 보고 배웠다.


1. react 라이브러리 설치 


터미널 Ctrl + Shift + '


npm i react react-dom
npm i @babel/core @babel/preset-env @babel/preset-react babel-loader css-loader style-loader webpack webpack-cli -D


package.json에 의존성 추가확인



2. webpack 설정


루트에 webpack.config.js 파일 생성


var path = require('path'); module.exports = { context: path.resolve(__dirname, 'src/main/jsx'), entry: { main: './MainPage.jsx', page1: './Page1Page.jsx' }, devtool: 'sourcemaps', cache: true, output: { path: __dirname, filename: './src/main/webapp/js/react/[name].bundle.js' }, mode: 'none', module: { rules: [ { test: /\.jsx?$/, exclude: /(node_modules)/, use: { loader: 'babel-loader', options: { presets: [ '@babel/preset-env', '@babel/preset-react' ] } } }, { test: /\.css$/, use: [ 'style-loader', 'css-loader' ] } ] } };


3. Controller 작성


 지난번 HomeController.java 파일에 추가함. 

class import - Alt + Shift + o 


	@GetMapping("/{name}.html")
    public String page(@PathVariable String name, Model model){
        model.addAttribute("pageName", name);
        return "page";
    }



4. 폴더생성

src/main/jsx 

src/java/webapp/css

src/java/webapp/jsp




5. .../jsp/page.jsp 


	<%@ page language="java" contentType="text/html; charset=utf-8"
	%>
	
	
		
			${pageName}
		
		 
		
			


 .../css/custom.css

.main { font-size: 24px; border-bottom: solid 1px black; }
.page1 { font-size: 14px; background-color: yellow; }


.../jsx/MainPage.jax


import '../webapp/css/custom.css';
 
import React from 'react';
import ReactDOM from 'react-dom';
 
class MainPage extends React.Component {
 
    render() {
        return 
메인 페이지
; } } ReactDOM.render(, document.getElementById('root'));




6. webpack watch


개발시 -d , 운영시 -p


node_modules\.bin\webpack --watch -d


'취미생활 > 혼자삽질기' 카테고리의 다른 글

react state 에러  (0) 2018.11.29
Missing privilege separation directory: /var/run/sshd  (0) 2018.11.27
Spring x react 연동하기  (0) 2018.11.27
ubuntu 포트열기  (0) 2018.11.26
ubuntu tomcat8 설치하기  (0) 2018.11.26
react 설치하기  (0) 2018.11.21

태그 : react, Spring

댓글(0)

ubuntu 포트열기

포트개방


iptables -I INPUT -p tcp --dport 8080 -j ACCEPT



ubuntu 16.04 이상일경우 아래명령어도 실행

sudo netfilter-persistent save
sudo netfilter-persistent reload



안된다면 패키지 설치후 사용


sudo apt install iptables-persistent


'취미생활 > 혼자삽질기' 카테고리의 다른 글

Missing privilege separation directory: /var/run/sshd  (0) 2018.11.27
Spring x react 연동하기  (0) 2018.11.27
ubuntu 포트열기  (0) 2018.11.26
ubuntu tomcat8 설치하기  (0) 2018.11.26
react 설치하기  (0) 2018.11.21
티스토리 초기화면 특정페이지로 이동  (0) 2018.11.20

댓글(0)

ubuntu tomcat8 설치하기

업무가 spring로 봐뀔것같아 되새김좀 해볼겸 서버에 톰켓서버 설치해보았다.



java/jdk 설치


apt-get install openjdk-8-jre-headless
apt-get install openjdk-8-jdk


tomcat8 설치


apt-get install tomcat8


확인

http://ip:8080 




도메인 연결하기

vi /etc/tomcat8/server.xml

최하단 <host></host> 부분 복사하여 localhost 부분 도메인으로 변경
appbase 는 루트로 설정

	

        
        

        
        
	


tomcat8 재시작


service tomcat8 restart











'취미생활 > 혼자삽질기' 카테고리의 다른 글

Spring x react 연동하기  (0) 2018.11.27
ubuntu 포트열기  (0) 2018.11.26
ubuntu tomcat8 설치하기  (0) 2018.11.26
react 설치하기  (0) 2018.11.21
티스토리 초기화면 특정페이지로 이동  (0) 2018.11.20
plex 서브도메인 설정  (0) 2018.11.13

태그 : tomcat, ubuntui

댓글(0)

react 설치하기

1. node.js 설치

https://nodejs.org/ko/download/


2. Yarn 설치(npm 사용해도됨)

https://yarnpkg.com/en/docs/install#windows-stable



3. react install


yarn global add create-react-app


4. 프로젝트 생성하기


create-react-app hello-react


5. 프로젝트 실행하기 


yarn start


결과화면



'취미생활 > 혼자삽질기' 카테고리의 다른 글

ubuntu 포트열기  (0) 2018.11.26
ubuntu tomcat8 설치하기  (0) 2018.11.26
react 설치하기  (0) 2018.11.21
티스토리 초기화면 특정페이지로 이동  (0) 2018.11.20
plex 서브도메인 설정  (0) 2018.11.13
css 영어 입력시 줄바꿈처리  (0) 2018.11.13

태그 : react

댓글(0)

티스토리 초기화면 특정페이지로 이동

티스토리 초기화면 특정페이지로 이동 

if ( window.location.pathname == '/' ) {
     location.href = 'https://load-map.com/86';
}


댓글(0)

plex 서브도메인 설정

Plex Media Server에 서브도메인을 달아보자.
내 서버는 아파치가 설치되어있어 아파치 기준이다. nginx 이전 전까지는 아파치로 사용할것 같다.
apache2 설정

 

$ vi /etc/apache2/sites-available/파일명.conf

 

80포트
ProxyPass 와 ProxyPassReverse의 주소는 개인 plex주소로 변경한다.

  


  ServerName plex.lovejin90.com
 

    Order deny,allow
    Allow from all

 
  ProxyRequests Off
  ProxyPreserveHost On
 
  ProxyPass / http://localhost:32400/
  ProxyPassReverse / http://localhost:32400/
 
  RewriteEngine on
  RewriteCond %{REQUEST_URI} !^/web
  RewriteRule ^/$ /web/$1 [R,L]
 
  SSLEngine on
  SSLProtocol all -SSLv2 -SSLv3
 
 
  SSLCertificateFile "/etc/letsencrypt/live/도메인/cert.pem”            
  SSLCertificateKeyFile "/etc/letsencrypt/live/도메인/privkey.pem”    
  SSLCertificateChainFile "/etc/letsencrypt/live/도메인/chain.pem"

 

 

443 (ssl)
기타 ssl설정은 본인설정에 맞게 변경해준다.

 


  ServerName plex.lovejin90.com
 

    Order deny,allow
    Allow from all

 
  ProxyRequests Off
  ProxyPreserveHost On
 
  ProxyPass / http://localhost:32400/
  ProxyPassReverse / http://localhost:32400/
 
  RewriteEngine on
  RewriteCond %{REQUEST_URI} !^/web
  RewriteRule ^/$ /web/$1 [R,L]
 
  SSLEngine on
  SSLProtocol all -SSLv2 -SSLv3
 
 
  SSLCertificateFile "/etc/letsencrypt/live/도메인/cert.pem”            
  SSLCertificateKeyFile "/etc/letsencrypt/live/도메인/privkey.pem”    
  SSLCertificateChainFile "/etc/letsencrypt/live/도메인/chain.pem"

 

태그 : plex, ubuntu, 리눅스

댓글(0)

css 영어 입력시 줄바꿈처리

한글은 줄바꿈 잘되는데 영어가 안될때 아래 css추가하면된다.

 

word-break:break-all;

 

태그 : CSS

댓글(0)