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




ufp 모듈을 설치하려면 설치 문서를 참조하십시오. 소스 코드를 다운 받거나 개발에 참여하려면 다음 페이지를 보십시오: https://github.com/Thestars3/pyufp.
소개¶
ufp 라이브러리 python 버전. 각종, 편리한 함수들의 모음.




특징¶
- 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 문서를 참조하세요.
개발자¶
별님 <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
참조¶
함수들¶
-
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
모듈은 암호화, 복호화에 관련한 작업을 수행합니다.
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와 같습니다.
-
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 이미지 바이너리 데이터
반환 형식:
-
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
모듈¶
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
모듈¶
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]
- pgrep 함수 추가됨. [tb69wn6127]
- pkill 함수 추가됨. [tb69wn6127]
- nohup 함수 추가됨. [tb69wn6127]
- ufp.logging 모듈을 추가함. [tb69wn6127]
- StreamLogger 클래스 추가됨. [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¶
descriptor 모듈에 cached_property를 추가함. [tb69wn6127]
- pyqt4 모듈을 추가함. [tb69wn6127]
- QNetworkCookie 모듈을 추가함. [tb69wn6127]
- toPyCookie 함수 추가함. [tb69wn6127]
- QNetworkCookieJar 모듈을 추가함. [tb69wn6127]
- toPyCookieJar 함수를 추가함. [tb69wn6127]
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]
- copy 함수를 추가. [tb69wn6127]
- deepcopy 함수를 추가. [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¶
- list 모듈을 추가함. [tb69wn6127]
- descriptor 모듈을 추가함. [tb69wn6127]
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¶
- ufp.dict 모듈을 추가함. [tb69wn6127]
- ufp.shell에 pgrep 함수를 추가함. [tb69wn6127]
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¶
- 설치 파일 오류 수정 [tb69wn6127]
v1.0.4¶
- 설치 파일 오류 수정 [tb69wn6127]
v1.0.3¶
- 설치 파일 오류 수정 [tb69wn6127]
v1.0.2¶
- 설치 파일 오류 수정 [tb69wn6127]
v1.0.1¶
- 설치 파일 수정 [tb69wn6127]
- 기존에 터미널을 제어하던 부분에서 ANSIColors-balises을 사용하도록 수정 [tb69wn6127]
- ufp.terminal.color 부분을 호환성 유지를 위한 항목으로 이동 [tb69wn6127]
v1.0.0¶
- pyufp 정식 버전 릴리즈. [tb69wn6127]