pyufp

pyufp는 사용에 편리한 python 함수 및 클래스들의 모음입니다.

Latest Version Supported Python versions Development Status License

ufp 모듈을 설치하려면 설치 문서를 참조하십시오. 소스 코드를 다운 받거나 개발에 참여하려면 다음 페이지를 보십시오: https://github.com/Thestars3/pyufp.

소개

ufp 라이브러리 python 버전. 각종, 편리한 함수들의 모음.

Latest Version Supported Python versions Development Status License

특징

  • PKCS#5 표준 패딩 제거
  • html 문서 규격화시키기
  • html 문서를 텍스트로 바꾸기
  • 그레이 스케일 이미지에 Improved Gray Scale(IGS) 양자화 적용시키기
  • 이미지 색상 깊이 바꾸기
  • 이미지 가장자리에서 빈도 높게 나타나는 색상 추출하기
  • 이미지의 여백 제거하기
  • 탐색 깊이 제한하여 재귀적으로 경로 탐색하기
  • 폴더의 모든 내용물을 옮기기
  • 파일의 최근 수정시각을 지정된 포멧으로된 문자열로 얻기
  • 부모 경로와 자식 경로들을 합치기
  • 필터링된 디렉토리 내 파일 목록 얻기
  • 경로를 url로 바꾸기
  • 운영체제의 파일 경로에서 사용 불가능한 문자 대체시키기
  • 부모 경로 추출
  • 주어진 경로에서 중복되지 않는 유일한 경로 얻기
  • 확장자를 제외한 파일명 추출하기
  • 파일 경로에서 확장자 추출하기
  • pdf파일을 bmp 이미지로 바꾸기
  • 램덤 문자열 만들기
  • 문자열을 쉘 콰우팅시키기
  • 문자열에서 제어 문자 제거하기
  • 파일을 휴지통에 버리기
  • 웹 파일명을 다듬기
  • 자바 스크립트 콰우팅을 콰우팅 해제하기
  • requests 세션에 쿠키 파일 불러오기
  • 기타 등등...

사용 환경

Linux / Unix / MaxOS / POSIX 계열

사용 예

주어진 경로에서 유일한 경로를 생성하기

예제 : http://runnable.com/VQ5dcHQEFNQakHJ3/generate-unique-path-at-filepath-or-dirpath-for-python

>>> import ufp.path
>>> import os
>>> os.listdir('.')
['test.file']
>>> ufp.path.unique('./test.file')
./test (d1).file
>>> f.open('./test (d1).file', 'w').close()
>>> ufp.path.unique('./test.file')
./test (d2).file

pdf 파일을 bmp 변환하여 저장하기

예제 : http://runnable.com/VQ-PD6EuyEYfeJNo/convert-pdf-to-bmp-for-python

>>> import ufp.pdf
>>> with open('page1.pdf') as f:
>>>     pdf = f.read()
>>> for bmp in ufp.pdf.toBmps(pdf, dpi=200):
>>>     break
>>> with open('page1.bmp') as f:
>>>     f.write(bmp)

이미지의 여백 제거하기

예제 : http://runnable.com/VQ5WVo8OIogZ-_hv/trim-image-edge-whitespace-with-fuzz-for-python

>>> import ufp.image
>>> import PIL.Image
>>> im = PIL.Image.open('test.jpg', 'r')
>>> ufp.image.trim(im, fuzz=13.3).save('trim.jpg')

Improved Gray Scale(IGS) 양자화

예제 : http://runnable.com/VQ5o_OpMIyQdA6zE/image-quantize-by-improved-gray-scale-for-python

>>> import ufp.image
>>> import PIL.Image
>>> im = PIL.Image.open('test.jpg', 'r')
>>> im = im.convert('L')
>>> ufp.image.quantizeByImprovedGrayScale(im).save('igs.jpg')

최대 탐색 깊이를 제한하여 탐색

>>> import ufp.path
>>> for root, dirs, files in ufp.path.walk('.', maxDepth=0):
...             print(root, dirs, files)
...
'.', ['ufp'], []

html 문서를 text로 변환

>>> import ufp.html
>>> import requests
>>> html = requests.get('http://www.gnu.org/licenses/').content
>>> ufp.html.toText(html.decode('utf8'))
u"Licenses\\n- GNU Project - Free Software Foundation\\n\\n\\n ...

진행 표시 창 열기

>>> import ufp.gui
>>> import time
>>> a = ufp.gui.PulseProgress('title', 'message')
>>> a.open(); time.sleep(3); a.close()

도움말

다음 문서를 참조 하십시오: http://pyufp.readthedocs.org/index.html.

수정사항

changelog.rst 문서를 참조하세요.

라이센스

GPL v3

개발자

별님 <w7dn1ng75r@gmail.com>

파이썬 환경

오직 2.7 버전대에서만 사용 할 수 있습니다.

설치 방법

설치 문서를 참조하십시오: http://pyufp.readthedocs.org/installation.html

소스 코드

소스 코드는 다음 사이트에 올려져 있습니다: https://github.com/Thestars3/pyufp.

설치

주석

ufp 모듈이 지원하는 파이썬 버전은 2.7입니다.

주석

ufp 모듈이 지원하는 운영체제는 Linux / Unix / MaxOS / POSIX 계열입니다.

설치를 위해 다음 1~3 과정을 수행해주십시오.

1. 외부 의존 패키지 설치

ufp 모듈을 사용하기 위해서는 다음 외부 패키지가 필요합니다. w3m, kate, ghostscript, zenity, python-qt4, python-tidylib.

데비안 계열인 경우 필요 패키지를 설치하기 위해, 다음 명령을 쉘에서 실행시키십시오.

$ sudo apt-get install w3m kate ghostscript zenity python-qt4 python-tidylib

레드헷인 경우 필요 패키지를 설치하기 위해, 다음 명령을 쉘에서 실행시키십시오.

$ sudo yum install w3m kate ghostscript zenity python-qt4 python-tidylib

그외의 경우, 각자의 환경에 알맞는 방법으로 패키지를 설치하십시오.

2. pillow 모듈 설치

ufp 모듈은 pillow 모듈을 사용하고 있습니다.

pillow 모듈을 설치하기 위해 다음 문서를 참조하십시오: http://pillow.readthedocs.org/installation.html

3. ufp 모듈 설치

pip 명령을 통해 설치하려면, 다음 명령을 쉘에서 실행시키십시오.

$ pip install ufp

또는 PyPI 에 올려진 모듈 묶음을 다운받아 압축을 해제한뒤 압축을 해제한 폴더에서 다음 명령을 실행하십시오.

$ python setup.py install

구 버전

구 버전은 PyPI 또는 Github 에서 받을 수 있습니다.

참조

함수들

ufp.cleanSubtitle(content, type=None)

자막 파일을 깨끗히 만듭니다.

다음 문제를 해결해줍니다:

  • 자막 깨짐 현상 해결(대신 mplayer의 기본 인코딩은 utf8이여야 합니다).
  • 자막에 존재하는 html 이스케이프된 문자열을 정상적으로 출력되도록 수정합니다.
  • smi 파일에 sami태그가 빠진 경우 추가시켜 줍니다.

주석

오직, smi, ass 파일만 지원합니다.

조심

변환 결과가 잘못 될 수도 있습니다.

매개 변수:
  • content (unicode, bytes) – 자막 내용.
  • type

    자막 종류.

    u’smi’: 주어진 내용은 smi 파일. u’ass’:주어진 내용은 ass 파일. None: smi, ass파일에 대한 공통 작업만 수행.

반환:

변환된 자막 내용을 유니코드 문자열 타입으로 반환합니다.

반환 형식:

unicode

ufp.trashPut(target)

대상을 휴지통에 버립니다.

trashcli 패키지의 trash-put 명령어에 대한 인터페이스.

매개 변수:taget (unicode) – 지울 대상의 경로 문자열
반환:True. 성공시
반환:False. 문제가 존재 할 시
반환 형식:bool

cipher 모듈

cipher 모듈은 암호화, 복호화에 관련한 작업을 수행합니다.

ufp.cipher.unpadPkcs5(data)

PKCS#5 표준 패딩을 제거한다.

매개 변수:data (bytes) – 입력 데이터
반환:패딩이 제거된 데이터
반환 형식:bytes

html 모듈

ufp.html.clean(html, inputEncoding=u'utf8')

html 문서를 보다 규격화된 xhtml로 변환합니다.

매개 변수:
  • html (unicode, bytes) – html 내용
  • inputEncoding (unicode) – 입력 문자열의 인코딩
반환:

xhtml 문서

반환 형식:

unicode

ufp.html.toText(html, converter=u'pattern.web', linebreaks=10, strip=False, replace=None)

html 문서를 텍스트 문서로 변환합니다.

이 함수는 다음과 같이 사용합니다.

>>> import ufp.html
>>> import requests
>>> html = requests.get('http://www.gnu.org/licenses/').content
>>> ufp.html.toText(html.decode('utf8'))
u"Licenses\n- GNU Project - Free Software Foundation\n\n\n ...
매개 변수:
  • html (unicode) – 원본 html 텍스트
  • converter (unicode) –

    변환에 사용할 변환기

    w3m : w3m 외부 프로그램을 불러와 작업을 하기 때문에 속도가 상당히 느립니다.

    pattern.web : pattern(http://www.clips.ua.ac.be/pattern) 라이브러리를 사용합니다.

  • replace ({unicode:(unicode, unicode)}, None) – 태그를 특정 문자로 치환합니다. 다음과 같은 형식을 따릅니다. {태그 이름: (태그의 앞, 태그의 뒤)}. 예컨데, replace를 {‘h1’:(‘>’, ‘<’)}로 지정하면, “<h1>안녕하세요!<h1>”란 태그는 “>안녕하세요!<”로 치환됩니다. None으로 지정될 경우, 작동하지 않습니다. (pattern.web 변환기 전용)
  • linebreaks (int, None) – 줄바꿈 문자가 이어질 최대 라인 수. ‘\n’가 linebreaks이상 연속되지 않도록 합니다. 그 이상의 ‘\n’은 자동으로 제거됩니다. 만약 None으로 설정될 경우 이 옵션은 비활성됩니다. None 또는 1 이상의 값이어야 합니다.
  • strip (bool) – 문서의 앞 뒤에 존재하는 공백문자를 제거합니다.
예외 ValueError:

지원하지 않는 변환기를 입력 한 경우

반환:

text

반환 형식:

unicode

image 모듈

ufp.image.changeColorDepth(image, colorCount)

이미지의 색 깊이를 감소시킵니다.

이 함수는 원본을 변경시킵니다.

예외 ValueError:

사용 불가능한 모드의 이미지를 인자로 준 경우

매개 변수:
  • image (PIL.Image) – PIL.Image 객체. L, RGB, RGBA 모드의 이미지를 처리 할 수 있습니다.
  • colorCount (int) – 결과물의 색상 수. 주어진 모드가 한 채널에서 가질 수 있는 최대 값을 상한선으로 하여, 목표로 하는 색상의 수를 정하십시오.
반환:

변경된 PIL.Image 이미지 객체

반환 형식:

PIL.Image

ufp.image.mostPopularEdgeColor(image)

이미지의 둘레(left,right,top,bottom)에서 가장 많이 나타나는 색깔이 무엇인지 계산한다.

매개 변수:image (PIL.Image) – PIL 이미지 객체
반환:가장 많은 색상(정수 튜플 (R,G,B))
반환:L 모드 이미지인 경우 가장 많은 색상(정수)를 반환합니다.
ufp.image.quantizeByImprovedGrayScale(image, colorCount=256)

주어진 이미지에 대해 Improved Gray Scale(IGS) 양자화시킵니다.

이 함수는 원본을 변경시킵니다.

다음과 같은 식으로 사용한다.

>>> import ufp.image
>>> import PIL.Image
>>> im = PIL.Image.open('test.jpg', 'r')
>>> im = im.convert('L')
>>> ufp.image.quantizeByImprovedGrayScale(im).save('igs.jpg')
예외 ValueError:

사용 불가능한 모드의 이미지를 인자로 준 경우

매개 변수:
  • image (PIL.Image) – 이미지 객체. 이 이미지는 L 모드여야 합니다.
  • colorCount (int) – 원본의 색상 수. 주어진 이미지의 색상 수를 목표로 하는 색상로 맞추는데 사용 할 수도 있습니다. 이 경우, 주어진 모드가 한 채널에서 가질 수 있는 최대 값을 상한선으로 하여, 목표로 하는 색상의 수를 정하십시오.
반환:

변경된 이미지 객체

반환 형식:

PIL.Image

ufp.image.trim(image, backgroundColor=None, fuzz=0)

이미지 주위에 있는 여백을 제거한다.

이미지에 알파 채널이 있으면, 그것을 사용하여 무엇을 자를지 고른다. 그렇지 않으면, 이미지 둘레에서 가장 많은 색상을 찾으려고 시도한다. 그리고 이 색상을 여백으로 간주한다. (backgroundColor 매개변수로 이 색상을 오버라이드할 수 있다.)

다음과 같은 식으로 사용한다.

>>> import ufp.image
>>> import PIL.Image
>>> im = PIL.Image.open('test.jpg', 'r')
>>> ufp.image.trim(im, fuzz=13.3).save('trim.jpg')

경고

fuzz옵션 사용시, 이미지가 여백과 유사한 색상일 경우 이미지의 경계를 넘어 이미지까지 잘리는 문제가 생길 수 있다.

경고

fuzz옵션 사용시, 여백에 잡음이 존재하는 경우 여백을 넘어 이미지를 자를 수 있습니다.

예외:
  • ValueError – fuzz값이 잘못된 경우
  • ValueError – 주어진 이미지가 처리 불가능한 모드인 경우
매개 변수:
  • image (PIL.Image) – (PIL 이미지 객체) 다듬을 이미지. 알파 채널이 포함된 이미지 또는, RGB, L 형식의 이미지만 처리 할 수 있습니다.
  • backgroundColor – “다듬을 배경”으로 간주될 색상(RGB: 3개의 정수가 담긴 터플). 예컨데, tuple(0,0,255)와 같은 형식으로 주어야 합니다. 이미지가 투명이면, 이 매개변수는 무시된다. 이미지가 투명이 아니고 이 매개변수가 주어지지 않으면, 자동으로 계산된다. 만약, L 모드라면 정수를 줘야 한다.
  • fuzz (int, float) – float 또는 int형(0~99.9). 배경색과 다른 색상을 동일하게 취급하는 정도를 설정합니다.
반환:

PIL.Image 객체.

반환:

변경될 내용이 없는 경우, 원본을 반환합니다.

반환 형식:

PIL.Image

dict 모듈

class ufp.dict.Lazy(dict=None)

Bases: UserDict.UserDict

설정된 사전 값에 대해 접근 할때 초기화되도록 설정 할 수 있는 사전.

늦은 초기화가 생략 된 경우, 해당 키의 값에 대해서는 늦은 초기화를 사용하지 않도록 설정되어 있습니다.

사용 예는 다음과 같습니다.

>>> import ufp.dict
>>> from ufp.terminal.debug import print_ as debug
>>> dict = ufp.dict.Lazy()
>>> def function():
...     debug('inited...')
...     return 10
... 
>>> dict.add('lazyInitValue', function, True)
>>> dict['lazyInitValue']
[DEBUG] inited...
10
>>> dict['lazyInitValue']
10
add(key, value, lazyInit=False)

늦은 초기화 여부를 설정하면서 사전에 등록합니다.

매개 변수:
  • key – 키
  • value – 값
  • lazyInit – 늦은 초기화 설정. True시 늦은 초기화를 사용함.
items()

기존 UserDict.UserDict.items와 같습니다.

setLazyInit(key, lazyInit)

개별 키에 대한 늦은 초기화 여부를 설정합니다.

매개 변수:
  • key – 키
  • lazyInit – 늦은 초기화 설정. True시 늦은 초기화를 사용함.
values()

기존 UserDict.UserDict.values와 같습니다.

ufp.dict.setdefault(dict, key, default, empty=None)

주어진 dict에 key가 존재하지 않으면, default를 설정합니다. 이때, key가 존재하더라도 empty와 같다면 default를 설정합니다.

사전 객체의 모든 요소와 empty값은 __eq__ 메소드가 작성되어 있어야 합니다. None은 예외.

매개 변수:
  • dict (dict) – 사전
  • key – 키
  • default – 기본값
  • empty – 이미 설정된 값이 empty와 같다면 default값을 설정함.

path 모듈

ufp.path.dirname(path)

주어진 경로의 부모 경로를 추출해냅니다.

만약 ‘abc’가 주어졌다면, 반환값은 ‘.’입니다.

주석

os.path.dirname(‘asd’) -> ‘’이 되는 문제를 해결하기 위해 만들어졌습니다.

매개 변수:path (unicode) – 경로 문자열.
반환:부모 경로
반환 형식:unicode
ufp.path.extension(fileName)

주어진 파일명의 확장자를 추출합니다.

매개 변수:fileName (unicode) – 주어지는 값은 유니코드 문자열이여야 함.
반환:‘../asd/.qwe’가 인자로 주어진 다면 반환값은 (빈 값) 입니다.
반환:만약 확장자가 없다면, (빈 값)을 리턴합니다.
반환 형식:unicode
ufp.path.filename(filePath)

파일 경로로 부터 확장자를 제외한 파일명을 추출해냅니다.

매개 변수:filePath (unicode) –

주어지는 값은 유니코드 문자열이여야 함.

예를 들어, ‘../asd/.qwe.tar.bz2’가 인자로 주어진 다면 반환값은 ‘.qwe.tar’ 입니다.

반환:파일 이름
반환 형식:unicode
ufp.path.listdir(path, **options)

지정된 폴더에서 pattern에 해당하는 파일 및 폴더의 목록을 가져옵니다.

매개 변수:
  • path (unicode) – 목록을 가져올 폴더 경로
  • pattern

    필터 패턴(대소문자를 구분하지 않습니다)

    string : 패턴 문자열

    [string, ...]: 패턴 문자열 리스트

    None: 필터링 하지 않음

  • patternReverse (bool) –

    True : 필터에 매칭되지 않는 대상만 얻습니다.

    False : 필터에 매칭되는 대상만 얻습니다.

  • fullpath (bool) –

    반환시 주어진 경로를 포함한 경로를 반환합니다.

    True : [path + filename, ...]

    False : [filename, ...]

  • sortKey (function) –

    정렬키 함수

    해당 함수에는 전체 경로가 전달 됩니다.

반환:

필터링된 폴더 내용

반환 형식:

list(unicode, ...)

ufp.path.mergeDir(dirPaths, destPath)

dirPaths에 존재하는 모든 파일을 destPath로 옮긴 뒤, dirPath를 삭제합니다.

만약 중복 파일이 존재한다면 자동으로 중복 회피한 이름을 새 이름으로 지정하여 옮깁니다. 중복 회피 대상은 각 디렉토리 바로 아래의 파일들입니다.

매개 변수:
  • dirPaths (unicode, list(unicode, ...), tuple(unicode, ...)) – 이동 할 대상 파일들이 담긴 디렉토리 경로, 또는 디렉토리 경로 목록.
  • destPath (unicode) – 파일들이 옮겨져갈 위치
ufp.path.moveAllContent(dirPath, destPath)

dirPath에 존재하는 모든 파일을 destPath로 옮깁니다.

만약 중복 파일이 존재한다면 자동으로 중복 회피한 이름을 새 이름으로 지정하여 옮깁니다. 중복 회피 대상은 각 디렉토리 바로 아래의 파일들입니다.

매개 변수:
  • dirPath (unicode) – 이동 할 대상 파일들이 담긴 폴더
  • destPath (unicode) – 파일들이 옮겨져갈 위치
ufp.path.mtime(path, format)

path에 해당하는 파일의 최근 수정 시각을 지정된 format형식으로 작성하여 반환합니다.

매개 변수:
  • path (unicode) – 경로 문자열
  • format (unicode) – 형식 문자열(datetime strftime에서 지원하는 형식)
반환:

path에 존재하는 파일의 최근 수정 시각의 format에 지정된 형식

반환 형식:

unicode

ufp.path.pjoin(parentPath, filenames)

parentPath를 각 filenames의 아이템과 결합합니다.

매개 변수:
  • parentPath (unicode) – 부모 경로
  • filenames (list(unicode, ...)) – 파일명 리스트.
반환:

결합된 리스트. [parentPath/filename, parentPath/filename, ...]

반환 형식:

list(unicode, ...)

ufp.path.remove(path, force=False)

주어진 경로에 존재하는 대상을 삭제합니다.

심볼릭 링크는 링크를 제거합니다. 폴더의 경우 재귀적으로 폴더 내용을 삭제한뒤 폴더를 삭제합니다.

매개 변수:
  • path (unicode) – 삭제 대상의 경로
  • force (bool) –

    오류를 무시할지 여부.

    True : 오류를 무시함.

    False : Exception이 발생하면, 그대로 던짐.

ufp.path.remove_all_content(dir, force=False)

dir에 존재하는 모든 요소를 삭제합니다.

매개 변수:
  • dir (unicode) – 삭제 할 대상 파일들이 담긴 폴더
  • force (bool) –

    오류를 무시할지 여부.

    True : 오류를 무시함.

    False : Exception이 발생하면, 그대로 던짐.

ufp.path.replaceSpiecalChar(string, **options)

운영체제의 경로에서 사용 불가능한 문자열을 대체문자로 치환합니다.

윈도우 및 유닉스 계열 운영체제에서 파일에 포함되면 문제가 되는 특수문자를 대체문자로 치환합니다. 경로 구분자를 대체 문자로 치환합니다.

주석

윈도우에서 파일명으로 사용 할 수 없는 문자들(파일 이름에 다음 문자를 사용할 수 없습니다):

\ / : * ? ” < > |

주석

리눅스에서 파일명으로 사용 할 수 없는 문자들(파일 이름에 다음 문자를 사용할 수 없습니다):

/

매개 변수:
  • string – 치환 될 문자열
  • **options

    type: u’windows’, u’unix’. 윈도우의 경로 구분 문자는 리눅스에서 표시되는 모양이 다릅니다. 지정된 OS에서 보여지는 문자 모양과 유사한 대체문자로 치환하도록 지정합니다. 기본값은 unix입니다.

    keep_path_characters(bool): 경로 구분자를 치환하지 않습니다. 이 설정은 type 설정에 의존합니다. 기본 값은 False입니다.

Tpye string:

unicode

반환 형식:

ufp.path.toUrl(path)

path를 file:///형식으로된 주소로 되돌려줍니다.

매개 변수:path (unicode) –

경로 문자열.

ex) ../home/ufp

반환:file:///형식으로된 주소
반환 형식:unicode
ufp.path.unique(targetPath, spliteExt=True)

해당 경로에서 유일한 경로를 만들어 냅니다.

대소문자를 구분하지 않습니다. 만약 ‘a/b/c’를 인자로 준다면, `a/b/c d(1)`식으로 충복을 회피처리한 결과를 반환합니다.

다음과 같은 식으로 사용합니다.

>>> import ufp.path
>>> import os
>>> os.listdir('.')
['test.file']
>>> ufp.path.unique('./test.file')
./test (d1).file
>>> f.open('./test (d1).file', 'w').close()
>>> ufp.path.unique('./test.file')
./test (d2).file
매개 변수:targetPath (unicode) – 주어지는 값은 유니코드 문자열이여야 함.
반환:만약, 주어진 경로가 충돌하지 않는다면 주어진 경로를 그대로 반환합니다.
반환:만약 주어진 경로의 부모 경로가 존재하지 않는다면, 주어진 문자열 그대로 반환합니다.
반환:유일한 경로.
ufp.path.walk(top, maxDepth=None, onerror=None, followlinks=False)

재귀적으로 경로 탐색하기

‘.’를 인자로 주었다면, ‘./a’, ‘./b’ 순으로 점점 더 깊게 탐색합니다.

이 함수는 다음과 같은 식으로 사용한다.

>>> import ufp.path
>>> for root, dirs, files in ufp.path.walk('.', maxDepth=0):
...             print(root, dirs, files)
...             
'.', ['ufp'], []
매개 변수:
  • top (unicode) – 탐색 대상 경로
  • onerror (function) – 오류가 발생하면, 주어진 주소의 함수를 호출하여 오류 인자를 넘겨줍니다.
  • followlinks (bool) – 심볼릭 링크된 경로를 포함하여 탐색합니다.
  • maxDepth (int) –

    탐색 할 최대 깊이. 0이상의 정수여야 함.

    ex) 0 : 지정된 폴더만.

Yield:

현재 탐색 중인 위치(unicode), 폴더 이름([unicode, ...]), 파일 이름([unicode, ...])

pdf 모듈

ufp.pdf.toBmp(pdf, format=u'bmp32b', dpi=200)

pdf 파일을 bmp로 바꾸어 저장합니다.

다음과 같은 식으로 사용합니다.

import pyPdf
from io import BytesIO
import ufp.pdf

#PDF 파일을 준비
buffer = file(srcPath, 'rb')
pdf = pyPdf.PdfFileReader(buffer)

#각 페이지 마다
for pageNumber in xrange(pdf.getNumPages()):
        #현재 페이지의 pdf 데이터를 추출
        page = pdf.getPage(pageNumber)
        pdfFileWriter = pyPdf.PdfFileWriter()
        pdfFileWriter.addPage(page)
        with BytesIO() as outputStream:
                pdfFileWriter.write(outputStream)
                pageBinary = outputStream.getvalue()
                pass
        
        #PDF를 BMP(24-bit RGB Color)로 변환
        imageBinary = ufp.pdf.toBmp(pageBinary, format='bmp16m', dpi=200)
        
        #저장
        with open('{0}.bmp'.format(pageNumber), 'w') as f:
                f.write(imageBinary)
        pass
매개 변수:
  • pdf (bytes) – pdf 바이너리 데이터. 오직 1 페이지만 존재하는 pdf 데이터여야 합니다.
  • format (unicode) –

    출력 포멧.

    bmp16m: 24-bit RGB Color

    bmpmono: Black-and-White Color

    bmpgray: Grayscale Color

    bmpsep1:

    bmpsep8:

    bmp16: 4-bit Color

    bmp256: 8-bit Color

    bmp32b: 32-bit RGBA Color

  • dpi (int) – DPI. 기본값은 200DPI입니다. 양의 정수만을 취합니다.
예외 Exception:

pdf 변환에 문제가 발생했을때.

반환:

BMP 이미지 바이너리 데이터

반환 형식:

bytes

ufp.pdf.toBmps(pdf, format=u'bmp16m', dpi=200)

pdf 파일을 bmp로 바꾸어 저장합니다.

각 페이지의 bmp는 제너레이터 형식으로 각각 반환됩니다. 예를 들어 다음과 같이 작동합니다.

import ufp.pdf

with open('test.pdf', 'r') as f:
        pdf = f.read()

buffer = ufp.pdf.toBmps(pdf, format='bmp16m')
for page, bmp in enumerate(buffer, start=1):
        with open('{0}.bmp'.format(page), 'w') as f:
                f.write(bmp)
매개 변수:
  • pdf (bytes) – pdf 바이너리 데이터. 여러 페이지가 포함된 파일도 허용합니다.
  • format (unicode) –

    출력 포멧.

    bmp16m: 24-bit RGB Color

    bmpmono: Black-and-White Color

    bmpgray: Grayscale Color

    bmpsep1:

    bmpsep8:

    bmp16: 4-bit Color

    bmp256: 8-bit Color

    bmp32b: 32-bit RGBA Color

  • dpi (int) – DPI. 기본값은 200DPI입니다. 양의 정수만을 취합니다.
예외 Exception:

pdf 변환에 문제가 발생했을때.

Yield:

BMP 이미지 바이너리 데이터(bytes)

math 모듈

ufp.math.urshift(val, n)

부호 없이 식을 비트 단위로 오른쪽으로 이동합니다.

자바스크립트의 >>> 연산자와 같은 역할을 합니다. 예를 들어 ‘(-1000) >>> 3’는 ‘ufp.math.rshift(-1000, 3)’와 같습니다.

매개 변수:
  • val – 식
  • n – 비트 수
반환:

부호 없이 식을 비트 단위로 오른쪽으로 이동한 결과 값.

list 모듈

ufp.list.chunks(list, step)

list를 step 단위로 묶어 yield합니다.

예를 들어, 다음과 같이 작동합니다.

>>> import ufp.list
>>> for i in ufp.list.chunks(range(20), 5):
...     print(i)
...
[0, 1, 2, 3, 4]
[5, 6, 7, 8, 9]
[10, 11, 12, 13, 14]
[15, 16, 17, 18, 19]
매개 변수:
  • list (list) – 리스트
  • step (int) – 단위
Yield:

각 step단위로 묶인 리스트. [...]

ufp.list.preallocate(size, value=None)

size 만큼의 길이를 가진 list를 반환합니다. 리스트의 내용은 value로 채워집니다.

매개 변수:
  • size (int) – 할당 할 크기.
  • value – 초기화 할 값.
반환:

size만큼 할당 된 list.

repr 모듈

ufp.repr.make_object(type_name, values=[], orderd_items=[], items={}, **kwargs)

객체 repr 문자열을 생성합니다.

매개 변수:
  • type_name (unicode, instance) – 형식명. instance를 줄 경우, 해당 오브젝트의 클래스명을 사용합니다.
  • values ([value, ...]) – 값들. values, args순서로 배치됩니다.
  • items ({key:value, ...}) – 값들. orderd_items, items, kwargs순서로 배치됩니다.
  • orderd_items ([(key,value), ...]) – 값들. 전달된 순서대로 배치합니다.
  • **kwargs

    값들.

    형식과 값은 items의 각 요소와 같습니다.

반환:

u’{type_name}({value}, ..., {key}={value}, ...)’

반환 형식:

unicode

ufp.repr.make_type(type_name, class_name)

형식 repr 문자열을 생성합니다.

매개 변수:
  • type_name (unicode) – 형식명.
  • class_name (unicode, instance) – 클래스 명.
반환:

u”<{type_name} ‘{class_name}’>”

반환 형식:

unicode

logging 모듈

class ufp.logging.StreamLogger(level, logger=None)

Bases: io.IOBase

주어진 로깅 객체에 파일 처럼 쓸수 있는 객체를 생성합니다.

예컨데, 다음과 같이 활용 할 수 있습니다.

>>> import ufp.logging
>>> import subprocess
>>> import logging
>>> logging.setLevel(logging.DEBUG)
>>> with ufp.logging.StreamLogger(logging.INFO) as out:
...     with ufp.logging.StreamLogger(logging.ERROR) as err:
...             subprocess.call(['ls', '-1'], stdout=out, stderr=err)
... 
...     
INFO:root:test (d1).file
INFO:root:test (d2).file
INFO:root:test.file
0
매개 변수:
  • logger (logging.Logger, None) – 로깅 객체. 생략시 전역 로깅 객체를 사용합니다.
  • level (int) – 로그 작성 레벨
close()

스트림을 닫습니다.

fileno()

이 스트림의 fileno를 반환합니다.

반환:이 스트림의 파일 디스크립터
반환 형식:int
write(data)

스트림에 메세지를 작성합니다.

매개 변수:data – 데이터.

process 모듈

ufp.process.nohup(args, stdin=None, stdout=None, stderr=None)

hangup 시그널은 무시하고 지정한 명령을 실행합니다.

Availability:

Unix.

매개 변수:
  • args ([unicode, ...]) – 명령행 인자 목록.
  • stdin – 표준입력. 만약 지정하지 않으면 /dev/null로 재지향됩니다.
  • stdout – stdin과 동일.
  • stderr – stderr과 동일.
반환:

서브 프로세서 객체.

반환 형식:

subprocess.Popen

ufp.process.pgrep(pattern, only_match_name=False)

pattern 형식에 매칭되는 프로세서를 찾습니다.

Availability:

Unix.

매개 변수:
  • pattern (unicode, True) – 패턴. True를 주면 전체 프로세서를 검색.
  • only_match_name (bool) – Only match processes whose name exactly match the pattern.
반환:

프로세스 아이디 목록.

반환 형식:

[int, ...]

ufp.process.pkill(pattern)

pattern 형식에 매칭되는 프로세서를 종료시킵니다.

Availability:Unix.
매개 변수:pattern (unicode) – 패턴.

pyqt4 모듈

QNetworkCookie 모듈

ufp.pyqt4.QNetworkCookie.toPyCookie(QtCookie)

qt 쿠키를 python 쿠키로 바꿉니다.

매개 변수:QtCookie (PyQt4.QtNetwork.QNetworkCookie) – qt 쿠키.
반환:python 쿠키.
반환 형식:cookielib.Cookie

QNetworkCookieJar 모듈

ufp.pyqt4.QNetworkCookieJar.toPyCookieJar(QtCookieJar)

qt 쿠키 묶음을 python 쿠키 묶음으로 바꿉니다.

매개 변수:QtCookieJar (PyQt4.QtNetwork.QNetworkCookieJar) – qt 쿠키 묶음.
반환:python 쿠키 묶음.
반환 형식:cookielib.CookieJar

descriptor 모듈

ufp.descriptor.classproperty(function)

class property를 만듭니다.

setter를 사용하기 위해서는 메타 클래스를 ufp.descriptor.ClassPropertyMetaClass 로 지정해야 합니다.

사용 예는 다음과 같습니다.

>>> import ufp.descriptor
>>> class Test(object):
...     __metaclass__ = ufp.descriptor.ClassPropertyMetaClass
...     _vlaue = 10
...     
...     @ufp.descriptor.classproperty
...     def value(self):
...             return self._vlaue
...             
...     @value.setter
...     def value(self, v):
...             self._vlaue = v
... 
>>> Test.value
10
>>> Test.value = 100
>>> Test.value
100
매개 변수:function (function) – 함수
반환:class property
반환 형식:ClassProperty
class ufp.descriptor.CachedProperty(method)

한번 실행한 결과를 기억하는 속성 장식자.

setter를 설정 할 경우, 설정 하려는 값을 반환해줘야 합니다. 반환하지 않을 경우, 설정된 값은 None이 됩니다.

deleter를 설정 할 경우, 메소드가 수행 된 이후 저장된 값이 삭제됩니다.

>>> class Test(object):
...     @CachedProperty
...     def value(self):
...             print('Calculating self.value')
...             return 10
...     
>>> test = Test()
>>> print(test.value)
Calculating self.value
10
>>> print(test.value) 
10
>>> test.value = 100
>>> test.value
100
>>> del test.value
>>> test.value
Calculating self.value
10
매개 변수:method (function) – 메소드.

bs4 모듈

ufp.bs4.copy(element)

beautifulsoup4 객체의 요소를 복제합니다.

오직 해당 요소의 정보만 복사합니다. 자식들에 대한 정보는 원본과 공유됩니다.

매개 변수:element (bs4.Tag, bs4.NavigableString, bs4.Comment) – 복제 할 원소.
반환:복제된 원소.
ufp.bs4.deepcopy(element)

beautifulsoup4 객체의 요소를 재귀적으로 복제합니다.

요소가 가진 정보 및 자식의 모든 정보를 재귀적으로 복제합니다.

이 함수를 통하여, beautifulsoup4 4.0.2에서 append 함수 사용시 발생하는 DOM 깨짐현상(기존에 존재하던 태그에 접근 불가능해지거나, 각 메소드들 별로 원래 정상적으로 접근하게될 결과의 일부분만 얻게 되는 현상)을 피할 수 있습니다.

매개 변수:element (bs4.Tag, bs4.NavigableString, bs4.Comment) – 복제 할 원소.
반환:복제된 원소.

random 모듈

ufp.random.bytes(size)

size byte만큼의 램덤 바이트 데이터를 만듭니다.

매개 변수:size (int) – 생성할 램덤 바이트 크기(단위 byte).
반환:램덤 바이트 데이터.
반환 형식:bytes
ufp.random.string(length, chars='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789')

지정된 길이 만큼의 램덤 문자열을 되돌려줍니다.

매개 변수:
  • length (int) – 문자열의 길이
  • chars (str, unicode, list) –

    문자 집합

    [a, ..., z, A, ..., Z, 0, ..., 9] (기본값)

반환:

램덤 문자열

반환 형식:

unicode

shell 모듈

ufp.shell.pgrep(pattern, extraArgs=[])

pattern에 해당하는 이름을 가진 프로세스 목록을 반환합니다.

매개 변수:
  • pattern (unicode) – 프로세서 이름의 패턴
  • extraArgs (list(unicode, ...)) – 추가 옵션
반환:

만약 pgrep 프로세서가 오류가 존재함을 알린(0과 1이 아닌 종료코드를 반환)다면 그 종료 코드를 반환합니다.

반환:

만약 찾지 못한다면 빈 list를 반환합니다.

반환:

찾는다면, [(id, name), ...]의 리스트를 반환합니다.

ufp.shell.quote(string)

shell에서 주어진 문자열이 해석되지 않도록 콰우팅합니다.

매개 변수:string (unicode) – 문자열
반환:콰우팅 된 문자열
반환 형식:unicode

string 모듈

ufp.string.removeControlChar(string)

제어문자를 제거합니다.

매개 변수:string (unicode) – 문자열
반환:제어 문자가 제거된 문자열
반환 형식:unicode

web 모듈

ufp.web.dequoteJsStr(jsStr)

자바 스크립트를 위해 콰우팅된 문자열을 콰우팅 해제시킵니다.

매개 변수:jsStr (unicode) – 콰우팅된 자바 스크립트 문자열
반환:디콰우팅 된 문자열.

ex) abc’asd’ -> abc’asd’

반환 형식:unicode
ufp.web.loadNetscapeCookie(session, cookiePath)

Netscape 타입의 쿠키를 가져와서 requests session에 설정합니다.

매개 변수:
  • session (requests.sessions.Session) – requests 세션 객체
  • cookiePath (unicode) – 쿠키 파일 경로 문자열
ufp.web.trimFilename(filename, from_encoding=False, consider_extension=False)

웹에서 다운받은 파일의 이름을 손질함.

다음 작업을 수행합니다:

  • url coding 풀기
  • 사용불가능한 문자를 대체문자로 치환
  • 웹에서의 공백치환을 감지하고 경우에 따라 해제
  • 파일 이름을 다듬기
  • UHC로 변환가능한 인코딩은 변환

조심

인코딩 변환이 잘못될수도 있습니다.

매개 변수:
  • filename (unicode, bytes) – 파일명 유니코드 문자열
  • from_encoding

    입력 인코딩.

    ‘auto’ : 자동으로 인코딩을 파악합니다.

    False : 인코딩을 변환하지 않습니다.

    기타(‘utf8’, ‘uhc’, ...)

  • consider_extension (bool) –

    확장자 고려 여부

    True: 확장자를 고려하여 작업합니다.

    False: 확장자를 고려하지 않습니다.

반환:

변환된 문자열.

반환:

결과물이 공백이 될 경우 공백 대신 u’Unknown’이 반환됩니다.

반환 형식:

unicode

terminal 모듈

함수들

ufp.terminal.feed(*objects)

기존 줄을 지우고, 입력한 메시지를 화면에 씁니다.

매개 변수:objects (object) – 화면에 출력할 오브젝트
ufp.terminal.pause()

사용자의 입력을 대기합니다.

엔터를 눌러야 입력 대기가 끝납니다.

debug 모듈

ufp.terminal.debug.print_(*objects, **kwargs)

디버깅 메시지를 터미널에 출력합니다.

빨간색으로 강조된 ‘[디버그]’ 문자열 뒤에 주어진 objs가 출력됩니다.

매개 변수:
  • objects (object) – 출력할 오브젝트들
  • kwargs – 옵션(__builtin__.print 함수의 인자와 같습니다)

gui 모듈

class ufp.gui.Notepad

Bases: object

close()

메모창을 닫습니다.

open()

메모창을 엽니다.

classmethod show(content)

주어진 내용을 보여줍니다.

매개 변수:content – 보여줄 내용. write() 의 내용과 같습니다.
반환:객체를 반환합니다.
반환 형식:Notepad
write(content)

메모에 내용을 씁니다.

매개 변수:content – 쓸 내용. list의 경우 각 항목을 줄 단위로 분할하여 기록합니다. list내에 존재하는 unicode는 그대로 기록하고, 그 외는 pprint.pformat함수를 호출하여 텍스트로 바꾸어 기록합니다. 그 외 요소는 모두 pprint.pformat함수를 호출하여 기록합니다.
class ufp.gui.PulseProgress(title, message)

Bases: QObject

진행 표시줄이 끝없이 움직이는 진행 표시창을 띄웁니다.

사용 예제는 다음과 같습니다.

>>> import ufp.gui
>>> import time
>>> a = ufp.gui.PulseProgress('title', 'message')
>>> a.open(); time.sleep(3); a.close()
__init__(title, message)

진행 표시창을 초기화합니다.

매개 변수:
  • title (unicode) – 제목
  • message (unicode) – 메시지
close
open

변경사항

v1.14

  • ufp.path 모듈에 remove_all_content 함수를 추가. [tb69wn6127]

  • ufp.path.listdir 함수에서 pattern을 string으로 지정할시 발생하던 ‘sre_constants.error: bogus escape (end of line)’ 오류 수정. [tb69wn6127]

  • ufp.path.remove 함수를 통해 심볼릭 링크가 있는 경로를 지우려 할 경우 발생하던 ‘OSError: Cannot call rmtree on a symbolic link’ 오류를 수정. [tb69wn6127]

  • ufp.path.mtime 함수에서 발생하던 “AttributeError: ‘module’ object has no attribute ‘fromtimestamp’” 오류 수정. [tb69wn6127]

  • ufp.process 모듈을 추가함. [tb69wn6127]
  • ufp.logging 모듈을 추가함. [tb69wn6127]

v1.13.1

  • ufp.repr 모듈의 make_object 함수에서 항상 형식명이 str로 설정되던 버그 수정. [tb69wn6127]

v1.13

  • descriptor 모듈의 CachedProperty 클래스에 is_seted 메소드를 추가함. [tb69wn6127]

  • repr 모듈을 추가. [tb69wn6127]
    • ufp.make_repr 함수를 repr 모듈에 make_object라는 이름으로 이동. [tb69wn6127]
    • make_type 함수를 추가. [tb69wn6127]

v1.12

v1.11

  • ufp.html 모듈의 toText 함수에 replace 옵션을 추가함. [tb69wn6127]

v1.10.1

  • ufp 모듈의 make_repr 함수에서 발생하던 “ValueError: need more than 1 value to unpack” 오류를 수정. [tb69wn6127]
  • ufp 모듈의 make_repr 함수의 *args 인자가 제거됨. [tb69wn6127]

v1.10

  • ufp 모듈에 make_repr 함수가 추가됨. [tb69wn6127]
  • ufp.descriptor 모듈의 classproperty 함수에서 발생하던 “UnboundLocalError: local variable ‘obj’ referenced before assignment” 오류 수정. [tb69wn6127]

v1.9.1

  • ufp.html.toText 함수에서 converter를 w3m으로 사용시 발생하던 “AttributeError: ‘str’ object has no attribute ‘deocde’”오류 수정. [tb69wn6127]

v1.9

  • ufp.random 모듈에 bytes함수를 추가. [tb69wn6127]

  • ufp.web.trimFilename 함수에 유니코드 문자열을 전달 할시 발생하던 UnicodeDecodeError 오류 수정. [tb69wn6127]

  • ufp.bs4 모듈을 추가. [tb69wn6127]

v1.8.1

  • ufp.web 모듈의 trimFilename 함수의 **option인자를 그대로 노출 하도록 수정. [tb69wn6127]
  • ufp.web 모듈의 trimFilename 함수 사용시, 전달되는 filename 인자에 퍼센트 인코딩된 문자열이 존재하는 경우 정상적으로 디콰우팅하지 못하던 점 버그 수정. [tb69wn6127]
  • ufp.web 모듈의 trimFilename 함수에서 filename 인자로 전달되는 값의 타입에 대해 보다 명확하게 처리하도록 개선. [tb69wn6127]

v1.8

  • ufp.math 모듈 추가함. [tb69wn6127]
  • ufp.math 모듈에 rshift함수 추가함. [tb69wn6127]
  • ufp.list 모듈에 preallocate 함수 추가함. [tb69wn6127]

v1.7.1

  • ufp 모듈의 cleanSubtitle 함수에 type 매개변수를 추가. [tb69wn6127]
  • smi 파일에 sami태그가 빠진 경우 추가시켜 주도록 함. [tb69wn6127]

v1.7.0

v1.6.1

  • ufp.path 모듈의 mergeDir, moveAllContent 함수 사용시 중복 회피 처리되지 않던 점 수정. [tb69wn6127]

v1.6.0

  • ufp.path 모듈의 listdir 함수에서 발생하던 “UnboundLocalError: local variable ‘pattern’ referenced before assignment” 오류 수정. [tb69wn6127]
  • ufp.path 모듈의 moveAllContent 함수 사용시, 이름이 충돌하는 파일은 자동으로 중복 회피된 새 이름으로 옮기도록 함. [tb69wn6127]
  • ufp.path 모듈에 mergeDir 함수를 추가함. [tb69wn6127]

v1.5.1

  • tempfile.mkstemp로 생성한 파일 디스크립터가 닫기지 않았던 버그 수정. [tb69wn6127]
  • ‘UnicodeEncodeError: ‘ascii’ codec can’t encode character’ 버그 수정. [tb69wn6127]
  • ufp.html.toText 함수에서 converter 옵션을 ‘w3m’으로 할 경우, 반환되는 텍스트가 bytes이던 점 수정. [tb69wn6127]

v1.5.0

  • ufp.dict 모듈에 Lazy 클래스를 추가함. [tb69wn6127]
  • ufp.terminal.debug 모듈의 print_ 함수에서 ‘[디버그]’라 출력되는 문구를 ‘[DEBUG]’문구로 수정. [tb69wn6127]

v1.4.0

v1.3.3

  • ufp.html 모듈의 toText 함수에 linebreaks, strip 옵션을 추가함. [tb69wn6127]
  • ufp.html 모듈의 toText 함수의 linebreaks 옵션이 None일 경우, pattern.web 변환기의 경우에도 작동하지 않도록 수정. [tb69wn6127]
  • ufp.html 모듈의 toText 함수에서 converter가 pattern.web으로 지정되더라도 strip옵션이 False면 앞 뒤 공백을 제거하지 않도록 수정. [tb69wn6127]

v1.3.2

  • ufp.terminal.debug 모듈의 print 함수에서 발생하던 ‘SyntaxError: invalid syntax’ 수정. [tb69wn6127]
  • ufp.terminal.debug 모듈의 print 함수의 이름을 print_로 변경. [tb69wn6127]
  • ufp.terminal.debug 모듈의 print 함수에 __builtin__.print 함수의 kwargs를 사용 할 수 있도록 수정. [tb69wn6127]

v1.3.1

  • ufp.gui 모듈의 PulseProgress, Notepad클래스와 ufp.pdf 모듈의 toBmps, toBmp 함수에서 표준에러로 메시지를 출력하지 않도록 수정. [tb69wn6127]

v1.3.0

  • ufp.web 모듈의 trimFilename 함수에서 인코딩 변환이 모두 utf8로 이뤄지던점 수정. [tb69wn6127]
  • ufp.pdf 모듈에 toBmps 함수를 추가함. [tb69wn6127]

v1.2.0

  • ufp.path 모듈에 remove 함수를 추가함. [tb69wn6127]

v1.1.5

  • ufp.web 모듈의 trimFilename 함수에서 발생하던 “AttributeError: ‘module’ object has no attribute” 오류 수정. [tb69wn6127]
  • ufp.web 모듈의 trimFilename 함수에서 파일 경로에 사용불가능한 문자 치환이 이뤄지지 않던 점 수정. [tb69wn6127]
  • ufp.html 모듈의 clean 함수에서 발생하던 “ValueError: (tidylib) Config: unknown option: s” 오류 수정. [tb69wn6127]
  • ufp.pdf 모듈의 toBmp 함수에서 발생하던 “NameError: global name ‘inData’ is not defined” 오류 수정. [tb69wn6127]
  • ufp.pdf 모듈의 toBmp 함수에서 변환에 문제가 생겼을시 Exception을 raise하도록 함. [tb69wn6127]

v1.1.4

  • ufp.gui.Notepad class의 write 함수의 입력 허용 타입을 늘렸습니다. unicode외의 타입도 입력 할 수 있습니다. [tb69wn6127]

v1.1.3

  • image 모듈의 mostPopularEdgeColor 함수에서 L 모드의 이미지를 처리할 때 잘못된 색상값을 추출하던 점 수정 [tb69wn6127]
  • image 모듈의 changeColorDepth 함수의 처리 속도를 향상 [tb69wn6127]
  • image 모듈의 quantizeByImprovedGrayScale 힘수의 처리 속도를 향상. [tb69wn6127]
  • image 모듈의 quantizeByImprovedGrayScale 힘수의 버그를 수정. [tb69wn6127]
  • image 모듈의 quantizeByImprovedGrayScale 힘수에 사용 불가능한 모드의 이미지를 인자로 줄 경우 발생하던 예외 메시지를 수정. [tb69wn6127]
  • image 모듈의 quantizeByImprovedGrayScale, changeColorDepth 함수가 원본을 변경하게 됨. [tb69wn6127]
  • ufp 모듈의 cleanSubtitle 함수에서 발생하던 디코딩 에러 수정. [tb69wn6127]

v1.1.2

  • ufp.image 모듈의 mostPopularEdgeColor, trim 함수에서 PIL.Image L 모드의 이미지를 처리 할 수 있도록 개선 [tb69wn6127]
  • image 모듈의 RGB_MIN_VALUE, RGB_MAX_VALUE, GRAYSCALE_MIN_VALUE, GRAYSCALE_MAX_VALUE 상수를 앞으로 사용하지 않을 것임. 이 변수들을 호환성 유지 부로 이동시킴. [tb69wn6127]

v1.1.1

  • ufp.gui.Notepad 사용시, 창이 무한히 대기하는 현상 수정. [tb69wn6127]
  • ufp.gui 모듈의 PulseProgress, Notepad 사용시 터미널에 불필요한 출력이 발생하지 않도록 수정. [tb69wn6127]

v1.1.0

  • 자막 파일을 깨끗하게 정리하는 함수를 추가 [tb69wn6127]

v1.0.5

v1.0.4

v1.0.3

v1.0.2

v1.0.1

  • 설치 파일 수정 [tb69wn6127]
  • 기존에 터미널을 제어하던 부분에서 ANSIColors-balises을 사용하도록 수정 [tb69wn6127]
  • ufp.terminal.color 부분을 호환성 유지를 위한 항목으로 이동 [tb69wn6127]

v1.0.0

인덱스 및 테이블