본문 바로가기

컴퓨터21

MusicXML 악보로 연습하기 배경지식상용 스캔된 악보나 IMLSP에서 다운받을 수 있는 저작권만료 악보들은 PDF이다.PDF는 일반문서 포맷으로 패드에서 보거나 프린터에서 출력하기 좋으나 파일크기가 크고 음악에 대한 정보가 없다. MusicXML은 악보를 기록하거나 Musescore, Finale, Sibelius 같은 작곡프로그램 간에 이동을 쉽게 하기 위해 만들어진 포맷이다. Musescore는 악보를 기록하는 오픈소스 프로그램으로 MusicXML로 된 파일을 불러오거나 내보낼 수 있다. MusicXML 파일 다운받기MusicXML은 .mxl 확장자를 가지고 있다.OpenScore라는 오픈소스 악보를 공유하는 프로젝트가 있고, Musescore 사이트에서 유료 악보와 같이 제공하고 있다. 다운받으려 하더라도  Musescore .. 2024. 1. 3.
PC용 텍본 리더들 알림: 텍스트 파일(소위 텍본)을 책처럼 두페이지로 나눠 읽을 때 쓰는 프로그램에 대한 정리이다. 가림토 도대체 언제적 가림토인데 지금도 회자된다는게 pc용 리더로 쓸만한게 없다는 증거다. 오래전 전자책 사업을 해보려던 업체가 텍본 리더에 gbs란 전자책도 읽을 수 있는 리더를 판매했다. 유료이다 보니 질은 어느정도 보장. 돈내고 사놨던거 아니라면 굳이 쓸 이유가 없다본다. 텍스북 이것도 연식이 좀 된다. 유료인 가림토를 대체하러 나왔다고 보면 된다. 열화버전이지만 무료니까 감지덕지. 1.3과 2.2가 있는데, 1.3가 윈도우 호환성에 문제가 있어 모양만 같게 새로 만든게 2.2로 기억된다. 그래서 그런지 2.2가 불안도 하고 기능이 없던걸로.... 셈틀이라는 사이트에서 제공하고 있던 것으로 기억되는데 .. 2015. 4. 8.
XBMC 스크래퍼 만들기 처음시작하기스크래퍼를 만드는데에는 XML과 Regular Expression에 익숙해야 합니다.아마 perl/python같은 스크립트 언어나 적어도 vi 를 쓰시는 분들은 시작하는데 큰 어려움은 없을 겁니다.스크래퍼의 XML 구조는 XBMC Wiki 에 설명되어 있습니다. 그런데 오래 되기도 했고, 너무 간략한 설명이 되나서 이것만 보고는 절대 시작할 수 없습니다.차라리 HOW-TO write Media Info Scrapers 문서가 예를 들어서 설명하기 때문에 꼭 읽어야할 문서입니다. 사실 그래도 막상 만들려면 엄청 귀찮습니다. 특히 " 등과 같은 특수문자들이 난무하면 암만 regular expression에 자신있어도 눈이 빠집니다.그럴때를 위해서 ScraperXML Editor 가 있습니다.아.. 2015. 4. 2.
XBMC 플러그인 만들기 - 8강: 메뉴 추가 플러그인에서도 context menu(키보드 C)가 동작하며 사용자가 추가할 수도 있다.예를 들어 다운로드 명령을 추가하여 재생가능 비디오를 저장도 할 수 있게 할 수 있다.# -*- coding: utf-8 -*- from xbmcswift2 import Plugin plugin = Plugin() @plugin.route('/') def main_menu(): vid_url = 'http://goo.gl/Za1tw' items = [ {'label':'Hello World', 'path':vid_url, 'thumbnail':'http://goo.gl/zRbCi', 'is_playable':True, 'context_menu': [ ('Download', actions.background(plugin.. 2015. 4. 2.
XBMC 플러그인 만들기 - 7강: 언어와 설정 불러오기 2강때 language/ 폴더와 settings.xml에 대해서 설명을 했었다. 1. 언어resources/languages/ 폴더 아래 각 언어 디렉토리를 만들고 아래와 같은 strings.xml 을 만든다. 예로 영어라면 English/ 라는 이름으로, 한국어라면 Korean/ 이라는 이름의 폴더를 만든다. 사용자 이름 다른옵션 사용 ... %s 자막 검색 ... 스트링의 id로 번호를 할당하며 plugin.get_string 함수에 이 id를 넘겨주어 해당 스트링을 가져올 수 있다. msg = plugin.get_string(30100) % fileName plugin.log.info(msg)또한 스트링 id는 뒤에 설명하는 settings.xml 에서도 사용된다. 2. 설정resources/ 디렉.. 2015. 4. 2.
XBMC 플러그인 만들기 - 6강: 즉석 비디오 재생 지금까지는 비디오 파일의 주소를 걸어놓고 사용자가 선택을 하면 재생되는 경우였다.그런데 많은 웹사이트들에서 video id에서 실제 주소가 쉽게 변환되는 것이 아니고 한번 이상의 변환이 필요하게 된다. 이럴 때 선택하지 않은 비디오에 대해서도 변환하는 것은 시간낭비가 된다.이럴 때 최종 함수에선 video id를 받아서 곧바로 비디오 재생에 들어가면 유용하다.@plugin.route('/play/') def play_video(video_id): title, video_url = translateVideoId(video_id) plugin.play_video({'label':title, 'path':video_url}) 만약 User-Agent나 Cookie를 지정해야 하면 xbmc에서는 URL에 '|U.. 2015. 4. 2.
XBMC 플러그인 만들기 - 5강: 페이지 만들기 한 화면에 표시할게 많으면 다음 페이지로 넘어가 거기에다 표시되게 하고 싶죠.또 이전 페이지로도 돌아가게 하고 싶구요. # -*- coding: utf-8 -*- from xbmcswift2 import Plugin plugin = Plugin() @plugin.route('/') def main_menu(): return [{'label':'Video', 'path':plugin.url_for('video_menu', page='-')}] @plugin.route('/video/') def video_menu(page): page2 = 1 if page == '-' else int(page) result = parse_site() items = result[page-1] if page2 > 1: ite.. 2015. 4. 2.
XBMC 플러그인 만들기 - 4강: 트리 만들기 이전장에서 가장 간단한 형태를 봤지만, 실제로 동영상만 있는 경우는 드물겁니다. 즉 그룹으로 묶여 있기를 원하죠.플러스, 모름지기 함수라면 argument를 넘겨받아 다용도로 사용도 되어야죠. # -*- coding: utf-8 -*- from xbmcswift2 import Plugin plugin = Plugin() @plugin.route('/') def main_menu(): items = [ {'label':'Video', 'path':plugin.url_for('video_menu')}, {'label':'Image', 'path':plugin.url_for('image_menu', enable="yes")}, ] return items @plugin.route('/video/') def vi.. 2015. 3. 27.
XBMC 플러그인 만들기 - 3강: addon.py 형태 이제 본격적인 프로그래밍에 들어가도록 합시다. 모든 프로그래밍의 1장은 Hello World죠. 그래서 xbmc에서도 Hello World를 만들어봤습니다.# -*- coding: utf-8 -*- from xbmcswift2 import Plugin plugin = Plugin() @plugin.route('/') def main_menu(): items = [ {'label':'Hello World', 'path':'http://goo.gl/Za1tw', 'thumbnail':'http://goo.gl/zRbCi', 'is_playable':True} ] return items if __name__ == "__main__": plugin.run() # vim:sw=4:sts=4:et간단하죠? (이전에.. 2015. 3. 27.
XBMC 플러그인 만들기 - 2강: 추가기능의 구조 v10(Dharma)이전에 SVN repo라는 비공식 플러그인 관리툴이 있었습니다. 그러다 Dharma로 가면서 스크래퍼, 플러그인, 스크립트 등의 모든 사용자 확장을 Addon 이라는 이름으로 묶고 이를 Addon manager라는 메뉴에서 통합관리하게 되었죠. 통합관리이다 보니 구조가 원하는 형태로 정형화되어 있습니다. addon.py addon.xml changelog.txt fanart.jpg icon.png LICENSE.txt /resources settings.xml /language/ /English/ /Korean/ /lib/ /media/addon.xml가장 중요한 것은 addon.xml 입니다. 아래는 Daum tvPot의 addon.xml이 되겠습니다. video Daum Strea.. 2015. 3. 27.