플러그인용 API 문서

강력한 플러그인을 만들기 위해 하위 클래스로 만들 수 있는 여러 추상 기본 클래스를 정의합니다. 유용한 클래스는 다음과 같습니다:

Plugin

class calibre.customize.Plugin(plugin_path)[소스]

calibre 플러그인입니다. 유용한 멤버는 다음과 같습니다:

  • self.installation_type: 플러그인이 설치된 방식을 저장합니다.

  • self.plugin_path: 이 플러그인을 포함하는 ZIP 파일의 경로를

    저장하며, 내장 플러그인인 경우에는 None입니다.

  • self.site_customization: 사용자가 입력한 사용자 지정 문자열을

    저장합니다.

하위 클래스에서 재정의해야 하는 메서드:

유용한 메서드:

supported_platforms = []

이 플러그인이 동작하는 플랫폼 목록입니다. 예: ['windows', 'osx', 'linux']

name = 'Trivial Plugin'

이 플러그인의 이름입니다. 작동하게 하려면 Trivial Plugin 이외의 값으로 설정해야 합니다.

version = (1, 0, 0)

이 플러그인의 버전입니다. 3-튜플(메이저, 마이너, 리비전) 형식입니다.

description = '아무것도 반응하지 않음'

이 플러그인이 하는 일을 설명하는 짧은 문자열입니다.

author = '알 없음'

이 플러그인의 작성자입니다.

priority = 1

하나의 파일 형식에 대해 둘 이상의 플러그인이 존재하면, 우선순위가 높은 것부터 순서대로 실행됩니다. 우선순위가 높은 플러그인이 먼저 실행됩니다. 가능한 가장 높은 우선순위는 sys.maxsize 입니다. 기본 우선순위는 1입니다.

minimum_calibre_version = (0, 4, 118)

이 플러그인이 필요로 하는 calibre의 최소 버전입니다.

installation_type = None

이 플러그인이 설치된 방식입니다.

can_be_disabled = True

False이면 사용자가 이 플러그인을 비활성화할 수 없습니다. 신중하게 사용하십시오.

type = '기초'

이 플러그인의 유형입니다. GUI에서 플러그인을 분류하는 데 사용됩니다.

initialize()[소스]

calibre 플러그인이 초기화될 때 한 번 호출됩니다. 새 플러그인이 추가될 때마다 플러그인은 다시 초기화됩니다. 또한 책 추가와 같은 작업자 프로세스에서 플러그인이 실행되는 경우, 새로운 작업자 프로세스마다 플러그인이 초기화된다는 점에 유의하십시오.

여기에서 플러그인별 초기화를 수행하십시오. 예를 들어 플러그인 ZIP 파일에서 리소스를 추출할 수 있습니다. ZIP 파일의 경로는 self.plugin_path 에서 사용할 수 있습니다.

이 시점에는 self.site_customization사용할 수 없습니다.

config_widget()[소스]

단순한 문자열 기반 기본 사용자 지정에 의존하는 대신, 사용자 지정 설정 대화상자를 사용하려면 플러그인에서 이 메서드와 save_settings() 를 구현하십시오.

이 메서드를 구현하는 경우 QWidget를 반환해야 합니다. 위젯에는 인수를 받지 않는 선택적 validate() 메서드가 있을 수 있으며, 사용자가 확인을 클릭한 직후 호출됩니다. 메서드가 True를 반환하는 경우에만 변경 사항이 적용됩니다.

어떤 이유로 지금 이 시점에 설정을 수행할 수 없다면 두 개의 문자열로 이루어진 튜플 (message, details)을 반환하십시오. 이 값은 사용자에게 경고 대화상자로 표시되며, 작업은 중단됩니다.

save_settings(config_widget)[소스]

config_widget로 사용자가 지정한 설정을 저장합니다.

매개변수:

config_widgetconfig_widget() 가 반환한 위젯입니다.

do_user_config(parent=None)[소스]

이 메서드는 이 플러그인의 설정 대화상자를 표시합니다. 사용자가 확인을 클릭하면 True, 그렇지 않으면 False를 반환합니다. 변경 사항은 자동으로 적용됩니다.

load_resources(names)[소스]

이 플러그인이 ZIP 파일(사용자 추가 플러그인)로 제공되는 경우, 이 메서드를 사용해 ZIP 파일에서 리소스를 불러올 수 있습니다.

예를 들어 이미지를 불러오려면:

pixmap = QPixmap()
pixmap.loadFromData(self.load_resources(['images/icon.png'])['images/icon.png'])
icon = QIcon(pixmap)
매개변수:

names – / 를 구분자로 사용한 ZIP 파일 내부 리소스 경로 목록

반환:

{name: file_contents} 형태의 사전입니다. ZIP 파일에서 찾지 못한 이름은 사전에 포함되지 않습니다.

customization_help(gui=False)[소스]

이 플러그인을 사용자 지정하는 방법에 대한 도움말 문자열을 반환합니다. 기본적으로는 NotImplementedError 를 발생시키며, 이는 플러그인에 사용자 지정이 필요 없음을 의미합니다.

하위 클래스에서 이 메서드를 재구현하면, 사용자는 이 플러그인의 사용자 지정을 위한 문자열을 입력하라는 요청을 받습니다. 사용자 지정 문자열은 self.site_customization 에서 사용할 수 있습니다.

사이트 사용자 지정은 무엇이든 될 수 있습니다. 예를 들어 사용자의 컴퓨터에 있는 필요한 바이너리의 경로일 수 있습니다.

매개변수:

gui – True이면 HTML 도움말을 반환하고, 그렇지 않으면 일반 텍스트 도움말을 반환합니다.

temporary_file(suffix)[소스]

파일 시스템상의 임시 파일인 파일 유사 객체를 반환합니다. 이 파일은 닫은 뒤에도 계속 사용 가능하며, 인터프리터가 종료될 때만 제거됩니다. 생성된 임시 파일의 전체 경로에 접근하려면 반환된 객체의 name 멤버를 사용하십시오.

매개변수:

suffix – 임시 파일에 붙을 접미사입니다.

cli_main(args)[소스]

이 메서드는 플러그인 명령줄 인터페이스의 기본 진입점입니다. 사용자가 calibre-debug -r “Plugin Name” 을 실행할 때 호출됩니다. 전달된 모든 인수는 args 변수에 들어 있습니다.

FileTypePlugin

class calibre.customize.FileTypePlugin(plugin_path)[소스]

기반 클래스: Plugin

특정 파일 형식 집합과 연관된 플러그인입니다.

file_types = {}

이 플러그인을 실행해야 하는 파일 형식 집합입니다. 모든 파일 형식에 대해 실행하려면 ‘*’를 사용하십시오. 예: {'lit', 'mobi', 'prc'}

on_import = False

True이면 책이 데이터베이스에 추가될 때 이 플러그인이 실행됩니다.

on_postimport = False

True이면 책이 데이터베이스에 추가된 뒤 이 플러그인이 실행됩니다. 이 경우 플러그인의 postimport 및 postadd 메서드가 호출됩니다.

on_postconvert = False

True이면 책이 변환된 뒤 이 플러그인이 실행됩니다. 이 경우 플러그인의 postconvert 메서드가 호출됩니다.

on_postdelete = False

True이면 데이터베이스에서 책 파일이 삭제된 뒤 이 플러그인이 실행됩니다. 이 경우 플러그인의 postdelete 메서드가 호출됩니다.

on_preprocess = False

True이면 변환 직전에 이 플러그인이 실행됩니다.

on_postprocess = False

True이면 변환 출력 플러그인이 생성한 최종 파일에 대해 변환 후 이 플러그인이 실행됩니다.

type = '파일 유형'

이 플러그인의 유형입니다. GUI에서 플러그인을 분류하는 데 사용됩니다.

run(path_to_ebook)[소스]

플러그인을 실행합니다. 하위 클래스에서 구현해야 합니다. 전자책에 필요한 수정 작업을 수행한 뒤 수정된 전자책의 절대 경로를 반환해야 합니다. 수정이 필요 없다면 원본 전자책의 경로를 반환해야 합니다. 오류가 발생하면 Exception을 일으켜야 합니다. 기본 구현은 원본 전자책의 경로를 그대로 반환합니다. 파일 형식 플러그인이 실행되기 전 원본 파일의 경로는 self.original_path_to_file 에서 사용할 수 있습니다.

수정된 전자책 파일은 temporary_file() 메서드로 만들어야 합니다.

매개변수:

path_to_ebook – 전자책의 절대 경로입니다.

반환:

수정된 전자책의 절대 경로입니다.

postimport(book_id, book_format, db)[소스]

가져오기 후, 즉 책 파일이 데이터베이스에 추가된 뒤 호출됩니다. 이는 책 레코드가 처음 생성될 때 호출되는 postadd() 와는 다릅니다. 이 메서드는 책 레코드에 새 파일이 추가될 때마다 호출됩니다. 새로 추가된 파일의 내용을 바탕으로 책 레코드를 수정하는 데 유용합니다.

매개변수:
  • book_id – 추가된 책의 데이터베이스 id입니다.

  • book_format – 추가된 책의 파일 형식입니다.

  • db – 라이브러리 데이터베이스입니다.

postconvert(book_id, book_format, db)[소스]

변환 후, 즉 변환 결과 책 파일이 데이터베이스에 추가된 뒤 호출됩니다. 책 추가 후가 아니라 변환 후에만 실행됩니다. 새로 추가된 파일의 내용을 바탕으로 책 레코드를 수정하는 데 유용합니다.

매개변수:
  • book_id – 추가된 책의 데이터베이스 id입니다.

  • book_format – 추가된 책의 파일 형식입니다.

  • db – 라이브러리 데이터베이스입니다.

postdelete(book_id, book_format, db)[소스]

삭제 후, 즉 책 파일이 데이터베이스에서 삭제된 뒤 호출됩니다. 책 레코드가 삭제될 때는 실행되지 않고, 책에서 하나 이상의 형식이 삭제될 때만 실행됩니다. 삭제된 파일 형식을 바탕으로 책 레코드를 수정하는 데 유용합니다.

매개변수:
  • book_id – 추가된 책의 데이터베이스 id입니다.

  • book_format – 추가된 책의 파일 형식입니다.

  • db – 라이브러리 데이터베이스입니다.

postadd(book_id, fmt_map, db)[소스]

추가 후, 즉 책이 DB에 추가된 뒤 호출됩니다. 이는 단일 책 파일이 책에 추가된 뒤 호출되는 postimport() 와는 다릅니다. postadd() 는 하나 이상의 책 파일을 포함할 수 있는 전체 책 레코드가 처음 생성될 때만 호출됩니다. 책이 calibre에 처음 추가될 때 데이터베이스의 책 레코드를 수정하고 싶다면 유용합니다.

매개변수:
  • book_id – 추가된 책의 데이터베이스 id입니다.

  • fmt_map – 파일 형식에서 추가된 경로로의 매핑입니다. 경우에 따라 파일이 스트림으로 추가되기도 하므로, 실제로 존재하는 파일을 가리킬 수도 있고 아닐 수도 있습니다. 이 경우 더미 값이나 존재하지 않는 경로일 수 있습니다.

  • db – 라이브러리 데이터베이스

메타데이터 플러그인

class calibre.customize.MetadataReaderPlugin(*args, **kwargs)[소스]

기반 클래스: Plugin

여러 파일 형식에서 메타데이터를 읽는 기능을 구현하는 플러그인입니다.

file_types = {}

이 플러그인을 실행해야 하는 파일 형식 집합입니다. 예: set(['lit', 'mobi', 'prc'])

supported_platforms = ['windows', 'osx', 'linux']

이 플러그인이 동작하는 플랫폼 목록입니다. 예: ['windows', 'osx', 'linux']

version = (9, 7, 0)

이 플러그인의 버전입니다. 3-튜플(메이저, 마이너, 리비전) 형식입니다.

author = 'Kovid Goyal'

이 플러그인의 작성자입니다.

type = '메타데이터 읽기도구'

이 플러그인의 유형입니다. GUI에서 플러그인을 분류하는 데 사용됩니다.

get_metadata(stream, type)[소스]

stream(읽기를 지원하는 파일 유사 객체)으로 표현된 파일의 메타데이터를 반환합니다. 입력 데이터에 오류가 있으면 예외를 발생시킵니다.

매개변수:

type – 파일 형식입니다. file_types 의 항목 가운데 하나임이 보장됩니다.

반환:

calibre.ebooks.metadata.book.Metadata 객체입니다.

class calibre.customize.MetadataWriterPlugin(*args, **kwargs)[소스]

기반 클래스: Plugin

여러 파일 형식에서 메타데이터를 읽는 기능을 구현하는 플러그인입니다.

file_types = {}

이 플러그인을 실행해야 하는 파일 형식 집합입니다. 예: set(['lit', 'mobi', 'prc'])

supported_platforms = ['windows', 'osx', 'linux']

이 플러그인이 동작하는 플랫폼 목록입니다. 예: ['windows', 'osx', 'linux']

version = (9, 7, 0)

이 플러그인의 버전입니다. 3-튜플(메이저, 마이너, 리비전) 형식입니다.

author = 'Kovid Goyal'

이 플러그인의 작성자입니다.

type = '메타데이터 쓰기도구'

이 플러그인의 유형입니다. GUI에서 플러그인을 분류하는 데 사용됩니다.

set_metadata(stream, mi, type)[소스]

stream(읽기를 지원하는 파일 유사 객체)으로 표현된 파일의 메타데이터를 설정합니다. 입력 데이터에 오류가 있으면 예외를 발생시킵니다.

매개변수:
  • type – 파일 형식입니다. file_types 의 항목 가운데 하나임이 보장됩니다.

  • micalibre.ebooks.metadata.book.Metadata 객체입니다.

카탈로그 플러그인

class calibre.customize.CatalogPlugin(plugin_path)[소스]

기반 클래스: Plugin

범주 생성도구를 구현하는 플러그인입니다.

file_types = {}

이 플러그인이 실행되어야 하는 출력 파일 형식입니다. 예: ‘epub’ 또는 ‘xml’

type = '범주 생성도구'

이 플러그인의 유형입니다. GUI에서 플러그인을 분류하는 데 사용됩니다.

cli_options = []

이 플러그인 전용 CLI 파서 옵션으로, namedtuple Option 으로 선언합니다:

from collections import namedtuple Option = namedtuple(‘Option’, ‘option, default, dest, help’) cli_options = [Option(’–catalog-title’, default = ‘My Catalog’, dest = ‘catalog_title’, help = (_(‘Title of generated catalog. nDefault:’) + “ ‘” + ‘%default’ + “’”))] cli_options 는 calibre.db.cli.cmd_catalog:option_parser() 에서 파싱됩니다.

initialize()[소스]

플러그인이 내장 플러그인이 아니라면, 플러그인의 .ui 및 .py 파일을 ZIP 파일에서 $TMPDIR로 복사합니다. 탭은 동적으로 생성되어 calibre.gui2.dialogs.catalog.py:Catalog 의 카탈로그 옵션 대화상자에 추가됩니다.

run(path_to_output, opts, db, ids, notification=None)[소스]

플러그인을 실행합니다. 하위 클래스에서 구현해야 합니다. file_types 에 지정된 형식으로 카탈로그를 생성하고, 생성된 카탈로그 파일의 절대 경로를 반환해야 합니다. 오류가 발생하면 Exception을 일으켜야 합니다.

생성된 카탈로그 파일은 temporary_file() 메서드로 만들어야 합니다.

매개변수:
  • path_to_output – 생성된 카탈로그 파일의 절대 경로입니다.

  • opts – 키워드 인수 사전입니다.

  • db – LibraryDatabase2 객체입니다.

메타데이터 다운로드 플러그인

class calibre.ebooks.metadata.sources.base.Source(*args, **kwargs)[소스]

기반 클래스: Plugin

type = '메타데이터 출처'

이 플러그인의 유형입니다. GUI에서 플러그인을 분류하는 데 사용됩니다.

author = 'Kovid Goyal'

이 플러그인의 작성자입니다.

supported_platforms = ['windows', 'osx', 'linux']

이 플러그인이 동작하는 플랫폼 목록입니다. 예: ['windows', 'osx', 'linux']

capabilities = frozenset({})

이 플러그인이 지원하는 기능 집합입니다. 유용한 기능에는 ‘identify’, ‘cover’ 가 있습니다.

touched_fields = frozenset({})

식별 단계 동안 이 플러그인이 잠재적으로 내려받을 수 있는 메타데이터 필드 목록입니다.

has_html_comments = False

플러그인이 HTML 형식의 설명을 반환한다면 True로 설정하십시오.

supports_gzip_transfer_encoding = False

이를 True로 설정하면 브라우저 객체가 gzip 전송 인코딩을 지원한다고 표시합니다. 이렇게 하면 다운로드가 빨라질 수 있지만, 먼저 소스가 gzip 전송 인코딩을 올바르게 지원하는지 확인하십시오.

ignore_ssl_errors = False

이 소스에 연결할 때 HTTPS 인증서 오류를 무시하려면 True로 설정하십시오.

cached_cover_url_is_reliable = True

캐시된 표지 URL은 때때로 신뢰할 수 없습니다(예: 다운로드가 실패하거나 반환된 이미지가 잘못되었을 수 있음). 이 소스에서 그런 경우가 자주 발생한다면 False로 설정하십시오.

options = ()

Option 객체 목록입니다. 이 플러그인의 설정 위젯을 자동으로 구성하는 데 사용됩니다.

config_help_message = None

이 플러그인의 설정 위젯 상단에 표시되는 문자열입니다.

can_get_multiple_covers = False

True이면 이 소스는 주어진 질의에 대해 여러 표지를 반환할 수 있습니다.

auto_trim_covers = False

True로 설정하면 이 플러그인으로 다운로드한 표지는 자동으로 다듬어집니다.

prefer_results_with_isbn = True

True로 설정되어 있고, 이 소스가 어떤 질의에 대해 여러 결과를 반환하는데 일부에는 ISBN이 있고 일부에는 ISBN이 없다면, ISBN이 없는 결과는 무시됩니다.

is_configured()[소스]

플러그인을 사용하기 전에 설정이 필요하다면 False를 반환하십시오. 예를 들어 사용자 이름/비밀번호/API 키가 필요할 수 있습니다.

customization_help()[소스]

이 플러그인을 사용자 지정하는 방법에 대한 도움말 문자열을 반환합니다. 기본적으로는 NotImplementedError 를 발생시키며, 이는 플러그인에 사용자 지정이 필요 없음을 의미합니다.

하위 클래스에서 이 메서드를 재구현하면, 사용자는 이 플러그인의 사용자 지정을 위한 문자열을 입력하라는 요청을 받습니다. 사용자 지정 문자열은 self.site_customization 에서 사용할 수 있습니다.

사이트 사용자 지정은 무엇이든 될 수 있습니다. 예를 들어 사용자의 컴퓨터에 있는 필요한 바이너리의 경로일 수 있습니다.

매개변수:

gui – True이면 HTML 도움말을 반환하고, 그렇지 않으면 일반 텍스트 도움말을 반환합니다.

config_widget()[소스]

단순한 문자열 기반 기본 사용자 지정에 의존하는 대신, 사용자 지정 설정 대화상자를 사용하려면 플러그인에서 이 메서드와 save_settings() 를 구현하십시오.

이 메서드를 구현하는 경우 QWidget를 반환해야 합니다. 위젯에는 인수를 받지 않는 선택적 validate() 메서드가 있을 수 있으며, 사용자가 확인을 클릭한 직후 호출됩니다. 메서드가 True를 반환하는 경우에만 변경 사항이 적용됩니다.

어떤 이유로 지금 이 시점에 설정을 수행할 수 없다면 두 개의 문자열로 이루어진 튜플 (message, details)을 반환하십시오. 이 값은 사용자에게 경고 대화상자로 표시되며, 작업은 중단됩니다.

save_settings(config_widget)[소스]

config_widget로 사용자가 지정한 설정을 저장합니다.

매개변수:

config_widgetconfig_widget() 가 반환한 위젯입니다.

get_author_tokens(authors, only_first_author=True)[소스]

저자 목록을 가져오고 AND 검색어에 유용한 토큰 목록을 반환합니다. 이 함수는 쉼표가 저자 이름에 있으면 이름이 성에 있고 다른 이름 형식이라고 가정하여 이름 중간 이름 성 순서로 토큰을 반환하려고 합니다.

get_title_tokens(title, strip_joiners=True, strip_subtitle=False)[소스]

제목을 가져와 AND 검색어에 유용한 토큰 목록을 반환합니다. 접속사(선택 사항) 및 구두점은 제외됩니다.

split_jobs(jobs, num)[소스]

작업 목록을 가능한 한 고르게, 최대 num 개의 그룹으로 나눕니다.

test_fields(mi)[소스]

mi 객체에서 null 인 self.touched_fields 의 첫 번째 필드를 반환합니다.

clean_downloaded_metadata(mi)[소스]

Metadata 객체를 result_queue 에 넣기 전에 메타데이터를 정규화하려면 플러그인의 identify 메서드에서 이 메서드를 호출하십시오. 물론 메타데이터 소스에 맞는 사용자 정의 알고리즘을 사용해도 됩니다.

get_book_url(identifiers)[소스]

3-튜플 또는 None을 반환합니다. 3-튜플의 형식은 (identifier_type, identifier_value, URL) 입니다. URL은 이 소스에서 identifiers 로 식별된 책의 URL입니다. identifier_type 과 identifier_value 는 URL에 해당하는 식별자를 지정합니다. 이 URL은 사람이 브라우저로 열어볼 수 있어야 합니다. 사용자가 이 소스의 책 페이지를 쉽게 방문할 수 있는 클릭 가능한 링크를 제공하기 위한 것입니다. URL을 찾지 못하면 None을 반환하십시오. 이 메서드는 빠르고 일관되어야 하므로, 식별자로부터 알려진 규칙에 따라 URL을 구성할 수 있을 때만 구현하십시오.

get_book_url_name(idtype, idval, url)[소스]

get_book_url() 의 반환값에서 사람이 읽기 쉬운 이름을 반환합니다.

get_book_urls(identifiers)[소스]

이 책에 대해 여러 URL을 반환하고 싶다면 이 메서드를 재정의하십시오. 3-튜플 목록을 반환하십시오. 기본적으로 이 메서드는 단순히 get_book_url() 을 호출합니다.

get_cached_cover_url(identifiers)[소스]

identifiers 사전으로 식별된 책의 캐시된 표지 URL을 반환합니다. 해당 URL이 없으면 None을 반환합니다.

이 메서드는 검증된 URL만 반환해야 한다는 점에 유의하십시오. 즉 일반 표지 이미지나 not found 오류를 일으킬 수 있는 URL은 반환해서는 안 됩니다.

id_from_url(url)[소스]

URL을 해석하여 (identifier_type, identifier_value) 형식의 튜플을 반환합니다. URL이 메타데이터 소스의 패턴과 맞지 않으면 None을 반환합니다.

identify_results_keygen(title=None, authors=None, identifiers={})[소스]

검색 쿼리(제목, 저자, 식별자)에 따라 메타데이터 객체를 관련성에 따라 정렬할 수 있는 키를 생성하는 데 사용되는 함수를 반환합니다.

이 키들은 identify() 호출 결과를 정렬하는 데 사용됩니다.

기본 알고리즘에 대한 자세한 내용은 InternalMetadataCompareKeyGen 을 참조하십시오. 기본 알고리즘이 적합하지 않다면 플러그인에서 이 함수를 재구현하십시오.

identify(log, result_queue, abort, title=None, authors=None, identifiers={}, timeout=30)[소스]

제목/저자/ISBN 등을 사용해 책을 식별합니다.

식별자(identifier)가 지정되었는데 일치 항목을 찾지 못했고, 이 메타데이터 소스가 관련 식별자를 모두 저장하지 않는 경우(예: 책의 모든 ISBN), 제목과 저자만으로 다시 시도해야 합니다(둘이 지정되어 있다면).

이 메타데이터 소스가 표지도 제공한다면, 동일한 ISBN/특수 식별자로 get covers API 를 다시 호출할 때 표지 URL을 다시 가져올 필요가 없도록 표지 URL을 캐시에 저장해야 합니다. 이를 위해 캐시 API 를 사용하십시오.

이 메서드가 result_queue 에 넣는 모든 Metadata 객체에는 source_relevance 속성이 있어야 하며, 이는 이 질의에 대해 메타데이터 소스가 결과를 반환한 순서를 나타내는 정수입니다. 이 정수는 compare_identify_results() 에서 사용됩니다. 순서가 중요하지 않다면 모든 결과에 대해 0으로 설정하십시오.

Metadata 객체를 result_queue 에 넣기 전에 표지/ISBN 매핑 정보가 모두 캐시되었는지 확인하십시오.

매개변수:
  • log – 로그 객체입니다. 디버깅 정보/오류를 출력하는 데 사용하십시오.

  • result_queue – 결과 Queue 입니다. 결과를 여기에 넣어야 합니다. 각 결과는 Metadata 객체입니다.

  • abort – abort.is_set() 가 True를 반환하면 추가 처리를 중단하고 가능한 한 빨리 반환하십시오.

  • title – 책 제목이며, None일 수 있습니다.

  • authors – 책 저자 목록이며, None일 수 있습니다.

  • identifiers – 기타 식별자 사전으로, 가장 흔한 예는 {‘isbn’:’1234…’} 입니다.

  • timeout – 초 단위 시간 제한입니다. 어떤 네트워크 요청도 timeout 보다 오래 멈춰 있어서는 안 됩니다.

반환:

오류가 없으면 None, 그렇지 않으면 사용자에게 표시하기에 적합한 오류의 유니코드 표현입니다.

download_cover(log, result_queue, abort, title=None, authors=None, identifiers={}, timeout=30, get_best_cover=False)[소스]

표지를 다운로드하여 result_queue 에 넣습니다. 매개변수의 의미는 모두 identify() 와 같습니다. (self, cover_data) 를 result_queue 에 넣으십시오.

가능하면 효율을 위해 이 메서드는 캐시된 표지 URL을 사용해야 합니다. 캐시 데이터가 없을 때는 대부분의 플러그인이 단순히 identify 를 호출하고 그 결과를 사용합니다.

get_best_cover 매개변수가 True이고 이 플러그인이 여러 표지를 가져올 수 있다면, “가장 좋은” 표지만 가져와야 합니다.

class calibre.ebooks.metadata.sources.base.InternalMetadataCompareKeyGen(mi, source_plugin, title, authors, identifiers)[소스]

주어진 검색어에서 메타데이터 객체의 관련성을 비교하기 위한 정렬 키를 생성합니다. 이것은 다른 소스가 아닌 동일한 메타데이터 소스의 결과를 비교하는 데만 사용됩니다.

정렬 키는 오름차순 정렬이 관련성 내림차순 정렬이 되도록 보장합니다.

알고리즘은 다음과 같습니다:

  • 질의와 동일한 식별자가 하나 이상 있는 결과를 우선합니다.

  • 캐시된 표지 URL이 있는 결과를 우선합니다.

  • 사용 가능한 필드가 모두 채워진 결과를 우선합니다.

  • 현재 사용자 인터페이스 언어와 같은 언어를 가진 결과를 우선합니다.

  • 질의와 제목이 정확히 일치하는 결과를 우선합니다.

  • 설명이 더 긴 결과를 우선합니다(10% 이상 더 긴 경우).

  • 메타데이터 소스의 검색이 보고한 결과의 관련성을 사용합니다.

    엔진

변환 플러그인

class calibre.customize.conversion.InputFormatPlugin(*args)[소스]

기반 클래스: Plugin

InputFormatPlugins 는 문서를 HTML+OPF+CSS+기타 형식으로 변환하는 역할을 합니다. 변환 결과는 반드시 UTF-8 로 인코딩되어야 합니다. 주요 동작은 convert() 에서 이루어집니다.

type = '변환 입력'

이 플러그인의 유형입니다. GUI에서 플러그인을 분류하는 데 사용됩니다.

supported_platforms = ['windows', 'osx', 'linux']

이 플러그인이 동작하는 플랫폼 목록입니다. 예: ['windows', 'osx', 'linux']

file_types = {}

이 플러그인을 실행해야 하는 파일 형식 집합입니다. 예: set(['azw', 'mobi', 'prc'])

is_image_collection = False

True이면 이 입력 플러그인은 HTML 파일마다 하나씩 이미지를 모은 컬렉션을 생성합니다. 입력 파일이 이미지 컬렉션일 수도 있고 아닐 수도 있다면 convert 메서드에서 동적으로 설정할 수 있습니다. 이를 True로 설정했다면 이미지 목록을 반환하는 get_images() 메서드를 구현해야 합니다.

core_usage = 1

이 플러그인이 사용하는 CPU 코어 수입니다. 값이 -1이면 사용 가능한 모든 코어를 사용합니다.

for_viewer = False

True로 설정하면 입력 플러그인이 출력 결과를 보기용으로 적합하게 만들기 위해 특별 처리를 수행합니다.

output_encoding = 'utf-8'

이 입력 플러그인이 파일을 생성할 때 사용하는 인코딩입니다. None이면 인코딩이 정의되지 않았으므로 각각 개별적으로 감지해야 합니다.

common_options = {<calibre.customize.conversion.OptionRecommendation object>}

모든 입력 형식 플러그인이 공유하는 옵션입니다. 하위 클래스에서 재정의하지 마십시오. 대신 options 를 사용하십시오. 모든 옵션은 OptionRecommendation 의 인스턴스여야 합니다.

options = {}

이 플러그인의 동작을 사용자 지정하는 옵션입니다. 모든 옵션은 OptionRecommendation 의 인스턴스여야 합니다.

recommendations = {}

(option_name, recommended_value, recommendation_level) 형식의 3-튜플 집합입니다.

get_images()[소스]

이 입력 플러그인이 이미지 컬렉션을 나타내는 경우, 이미지의 절대 경로 목록을 반환합니다. 이미지 목록의 순서는 spine 및 TOC 와 동일합니다.

convert(stream, options, file_ext, log, accelerators)[소스]

이 메서드는 하위 클래스에서 구현해야 합니다. 생성된 OPF 파일의 경로나 OEBBook 인스턴스를 반환해야 합니다. 모든 출력은 현재 폴더 안에 있어야 합니다. 이 플러그인이 현재 폴더 밖에 파일을 만든다면, 이 메서드가 반환되기 전에 해당 파일을 삭제하거나 삭제 대상으로 표시해야 합니다.

매개변수:
  • stream – 입력 파일을 담고 있는 파일 유사 객체입니다.

  • options – 변환 과정을 사용자 지정하는 옵션입니다. 이 플러그인이 선언한 모든 옵션에 대응하는 속성을 가진다는 것이 보장됩니다. 또한 0 이상의 정수 값을 가지는 verbose 속성도 있습니다. 숫자가 클수록 더 자세한 출력을 의미합니다. 또 하나 유용한 속성은 calibre.customize.profiles.InputProfile 의 인스턴스인 input_profile 입니다.

  • file_ext – 입력 파일의 확장자(. 제외)입니다. 이 플러그인이 지원하는 file_types 중 하나임이 보장됩니다.

  • logcalibre.utils.logging.Log 객체입니다. 모든 출력은 이 객체를 사용해야 합니다.

  • accelerators – 입력 플러그인이 쉽게 얻을 수 있어 변환의 다음 단계들을 빠르게 할 수 있는 여러 정보의 사전입니다.

postprocess_book(oeb, opts, log)[소스]

입력 플러그인이 책이 파싱된 뒤 후처리를 수행할 수 있도록 호출됩니다.

specialize(oeb, opts, log, output_fmt)[소스]

특정 출력 형식에 맞게 파싱된 책을 입력 플러그인이 특화할 수 있도록 호출됩니다. postprocess_book 이후, 파싱된 책에 어떤 변환도 수행되기 전에 호출됩니다.

gui_configuration_widget(parent, get_option_by_name, get_option_help, db, book_id=None)[소스]

calibre GUI 에서 이 플러그인을 설정하는 데 사용할 위젯을 만들기 위해 호출됩니다. 위젯은 PluginWidget 클래스의 인스턴스여야 합니다. 예시는 내장 입력 플러그인을 참조하십시오.

class calibre.customize.conversion.OutputFormatPlugin(*args)[소스]

기반 클래스: Plugin

OutputFormatPlugins 는 OEB 문서(OPF+HTML)를 출력 전자책으로 변환하는 역할을 합니다.

OEB 문서는 UTF-8 로 인코딩되어 있다고 가정할 수 있습니다. 주요 동작은 convert() 에서 이루어집니다.

type = '변환 출력'

이 플러그인의 유형입니다. GUI에서 플러그인을 분류하는 데 사용됩니다.

supported_platforms = ['windows', 'osx', 'linux']

이 플러그인이 동작하는 플랫폼 목록입니다. 예: ['windows', 'osx', 'linux']

file_type = None

이 플러그인이 출력하는 파일 형식(앞에 마침표가 없는 확장자)입니다.

common_options = {<calibre.customize.conversion.OptionRecommendation object>}

모든 입력 형식 플러그인이 공유하는 옵션입니다. 하위 클래스에서 재정의하지 마십시오. 대신 options 를 사용하십시오. 모든 옵션은 OptionRecommendation 의 인스턴스여야 합니다.

options = {}

이 플러그인의 동작을 사용자 지정하는 옵션입니다. 모든 옵션은 OptionRecommendation 의 인스턴스여야 합니다.

recommendations = {}

(option_name, recommended_value, recommendation_level) 형식의 3-튜플 집합입니다.

property description

str(object=’’) -> str str(bytes_or_buffer[, encoding[, errors]]) -> str

주어진 객체로부터 새 문자열 객체를 만듭니다. encoding 또는 errors 가 지정된 경우, 객체는 지정한 인코딩과 오류 처리기로 디코드할 수 있는 데이터 버퍼를 제공해야 합니다. 그렇지 않으면 object.__str__() 의 결과(정의되어 있다면) 또는 repr(object) 를 반환합니다. encoding 의 기본값은 ‘utf-8’ 이고, errors 의 기본값은 ‘strict’ 입니다.

convert(oeb_book, output, input_plugin, opts, log)[소스]

oeb_book`( :class:`calibre.ebooks.oeb.OEBBook 인스턴스)의 내용을 output 으로 지정한 파일에 렌더링합니다.

매개변수:
  • output – 파일 유사 객체이거나 문자열입니다. 문자열이면 존재할 수도 있고 아닐 수도 있는 폴더의 경로입니다. 출력 플러그인은 그 폴더에 결과를 써야 합니다. 파일 유사 객체라면 출력 플러그인은 그 파일에 결과를 써야 합니다.

  • input_plugin – 변환 파이프라인의 시작에서 사용된 입력 플러그인입니다.

  • opts – 변환 옵션입니다. 이 플러그인의 OptionRecommendations 에 대응하는 속성을 가진다는 것이 보장됩니다.

  • log – 로거입니다. 디버그/정보 메시지 등을 여기에 출력하십시오.

specialize_options(log, opts, input_fmt)[소스]

변환 파이프라인이 사용하는 변환 옵션 값을 바꾸는 데 사용할 수 있습니다.

specialize_css_for_output(log, opts, item, stylizer)[소스]

CSS 평탄화 과정에서 CSS 를 변경하는 데 사용할 수 있습니다.

매개변수:
  • item – 처리 중인 항목(HTML 파일)

  • stylizer – item 의 평탄화된 스타일을 담고 있는 Stylizer 객체입니다. stylizer.style(element) 로 임의의 요소에 대한 스타일을 얻을 수 있습니다.

gui_configuration_widget(parent, get_option_by_name, get_option_help, db, book_id=None)[소스]

calibre GUI 에서 이 플러그인을 설정하는 데 사용할 위젯을 만들기 위해 호출됩니다. 위젯은 PluginWidget 클래스의 인스턴스여야 합니다. 예시는 내장 출력 플러그인을 참조하십시오.

장치 드라이버

모든 장치 드라이버의 기본 클래스는 DevicePlugin 입니다. 그러나 장치가 운영 체제에 USBMS 드라이브로 노출된다면, 이러한 종류의 장치를 지원하는 데 필요한 모든 논리를 구현한 USBMS 클래스를 대신 사용해야 합니다.

class calibre.devices.interface.DevicePlugin(plugin_path)[소스]

기반 클래스: Plugin

전자책 리더기와 통신하는 백엔드가 구현해야 할 인터페이스를 정의합니다.

type = '장치 인터페이스'

이 플러그인의 유형입니다. GUI에서 플러그인을 분류하는 데 사용됩니다.

FORMATS = ['lrf', 'rtf', 'pdf', 'txt']

지원하는 형식의 정렬된 목록

VENDOR_ID = 0

VENDOR_ID 는 정수, 정수 목록 또는 사전이 될 수 있습니다. 사전인 경우에는 다음 형식의 사전들의 사전이어야 합니다:

{
 integer_vendor_id : { product_id : [list of BCDs], ... },
 ...
}
PRODUCT_ID = 0

정수 또는 정수 목록

BCD = None

BCD 는 BCD를 기준으로 장치를 구분하지 않으려면 None 일 수 있고, 이 드라이버가 지원하는 모든 장치의 BCD 번호 목록일 수도 있습니다.

THUMBNAIL_HEIGHT = 68

장치의 썸네일 높이

THUMBNAIL_COMPRESSION_QUALITY = 75

썸네일의 압축 품질입니다. 100에 가깝게 설정할수록 압축 아티팩트가 줄어 더 나은 품질의 썸네일을 얻을 수 있습니다. 물론 썸네일 크기도 커집니다.

WANTS_UPDATED_THUMBNAILS = False

sync_booklists 중 표지 썸네일 업데이트를 장치가 지원한다면 True로 설정하십시오. True로 설정하면 book matching 중 device.py 가 표지 썸네일을 새로 고치도록 요청합니다.

CAN_SET_METADATA = ['title', 'authors', 'collections']

책의 메타데이터를 GUI를 통해 설정할 수 있는지 여부입니다.

CAN_DO_DEVICE_DB_PLUGBOARD = False

장치가 device_db 메타데이터 plugboard 를 처리할 수 있는지 여부입니다.

path_sep = '/'

장치의 책 경로에 사용하는 경로 구분자입니다.

icon = 'reader.png'

이 장치의 아이콘입니다.

UserAnnotation

:py:class:`~calibre.devices.interface.Annotation`의 별칭

OPEN_FEEDBACK_MESSAGE = None

None이 아니면 GUI가 상태 표시줄에 메시지로 표시합니다. 여는 데 시간이 오래 걸릴 때 유용합니다.

VIRTUAL_BOOK_EXTENSIONS = frozenset({})

장치에서 “가상 책” 으로 취급되어 보기/저장/라이브러리 추가가 불가능한 확장자 집합입니다. 예: frozenset(['kobo'])

VIRTUAL_BOOK_EXTENSION_MESSAGE = None

가상 책 확장자에 대해 사용자에게 표시할 메시지입니다.

NUKE_COMMENTS = None

장치로 보낸 책 사본의 설명을 제거할지 여부입니다. None이 아니라면, 설명을 대체할 짧은 문자열이어야 합니다.

MANAGES_DEVICE_PRESENCE = False

True이면 이 드라이버가 장치 감지, 꺼내기 등을 완전히 관리한다는 뜻입니다. 이를 True로 설정했다면 detect_managed_devices 와 debug_managed_device_detection 메서드를 반드시 구현해야 합니다. 이 값이 true 인 드라이버는 장치 감지, 장치 블랙리스트, 꺼낸 장치 목록 등을 관리할 책임이 있습니다. calibre 는 주기적으로 detect_managed_devices() 메서드를 호출하며, 감지된 장치를 반환하면 open() 을 호출합니다. 이전 open() 호출이 실패했더라도 장치가 반환될 때마다 open() 이 호출되므로, 드라이버는 실패한 장치의 자체 블랙리스트를 유지해야 합니다. 마찬가지로 꺼낼 때 calibre 는 eject() 를 호출하고, 다음 detect_managed_devices() 호출이 None을 반환한다고 가정하면 post_yank_cleanup() 을 호출합니다.

SLOW_DRIVEINFO = False

True로 설정하면 calibre 는 책 목록이 로드된 뒤 driveinfo 를 얻기 위해 get_driveinfo() 메서드를 호출합니다.

ASK_TO_ALLOW_CONNECT = False

True로 설정하면, 장치가 처음 감지되었을 때 calibre 가 사용자가 calibre 로 이 장치를 관리할지 물어봅니다. 이를 True로 설정했다면 get_device_uid(), ignore_connected_device(), get_user_blacklisted_devices(), set_user_blacklisted_devices() 를 구현해야 합니다.

user_feedback_after_callback = None

어떤 콜백이 실행된 뒤(현재는 upload_books 만) calibre 가 사용자에게 팝업 메시지를 띄우게 하려면 {‘title’:title, ‘msg’:msg, ‘det_msg’:detailed_msg} 형식의 사전으로 설정하십시오. 사용자에게 너무 많은 메시지를 남발하지 않도록 주의하십시오. 이 변수는 모든 콜백 뒤에 검사되므로, 정말 필요할 때만 설정하십시오.

classmethod get_open_popup_message()[소스]

GUI가 비모달 팝업으로 표시합니다. OpenPopupMessage 의 인스턴스여야 합니다.

classmethod model_metadata() tuple[ModelMetadata, ...][소스]

이 드라이버가 지원하는 실제 장치 모델 전체에 대한 메타데이터입니다.

is_usb_connected(devices_on_system, debug=False, only_presence=False)[소스]

현재 이 플러그인이 처리하는 장치가 연결되어 있다면 True, device_info 를 반환합니다.

매개변수:

devices_on_system – 현재 연결된 장치 목록

detect_managed_devices(devices_on_system, force_refresh=False)[소스]

MANAGES_DEVICE_PRESENCE 가 True일 때만 호출됩니다.

이 드라이버가 처리할 수 있는 장치를 검색합니다. 장치를 찾으면 장치 객체를 반환해야 합니다. 이 객체는 connected_device 로 open() 메서드에 전달됩니다. 장치를 찾지 못하면 None을 반환하십시오. 반환되는 객체는 무엇이든 될 수 있으며 calibre 는 이를 사용하지 않고 open() 에만 전달합니다.

이 메서드는 GUI에서 주기적으로 호출되므로 너무 많은 리소스를 사용하지 않도록 하십시오. 반복적인 시스템 검색을 피하려면 캐시를 사용하십시오.

매개변수:
  • devices_on_system – 시스템에서 발견된 USB 장치 집합입니다.

  • force_refresh – 드라이버가 반복 검색 방지를 위해 캐시를 사용한다면, True일 때 캐시를 비워야 합니다.

debug_managed_device_detection(devices_on_system, output)[소스]

MANAGES_DEVICE_PRESENCE 가 True일 때만 호출됩니다.

시스템에서 감지된 장치에 대한 정보를 output(파일 유사 객체)에 기록해야 합니다.

장치가 감지되어 성공적으로 열렸다면 True, 그렇지 않으면 False를 반환해야 합니다.

reset(key='-1', log_packets=False, report_progress=None, detected_device=None)[소스]
매개변수:
  • key – 장치 잠금을 해제하기 위한 키

  • log_packets – True이면 장치로 오가는 패킷 스트림이 기록됩니다.

  • report_progress – 여러 작업에 대해 % 진행률(0에서 100 사이의 숫자)을 받아 호출되는 함수입니다. -1로 호출되면 해당 작업에는 진행률 정보가 없다는 뜻입니다.

  • detected_device – 장치 스캐너에서 가져온 장치 정보입니다.

can_handle_windows(usbdevice, debug=False)[소스]

이 드라이버가 해당 장치를 처리할 수 있는지 추가 검사하기 위한 선택적 메서드입니다. 처리할 수 없다면 False를 반환해야 합니다. 이 메서드는 vendor, product id, bcd 가 일치한 뒤에만 호출되므로 비교적 시간이 드는 검사를 수행할 수 있습니다. 기본 구현은 True를 반환합니다. 이 메서드는 Windows 에서만 호출됩니다. can_handle() 도 참조하십시오.

USBMS 기반 장치의 경우 이 메서드는 기본적으로 can_handle() 에 위임된다는 점에 유의하십시오. 따라서 USBMS 하위 클래스에서는 can_handle() 만 재정의하면 됩니다.

매개변수:

usbdevicecalibre.devices.winusb.scan_usb_devices() 가 반환한 usbdevice 입니다.

can_handle(device_info, debug=False)[소스]

can_handle_windows() 의 Unix 버전입니다.

매개변수:

device_info – (vid, pid, bcd, 제조사, 제품명, 일련 번호) 튜플입니다.

open(connected_device, library_uuid)[소스]

장치별 초기화를 수행합니다. 장치가 감지된 뒤이지만 장치와 통신하는 다른 함수보다 먼저 호출됩니다. 예를 들어 장치가 USB 대용량 저장소로 자신을 나타내는 경우, 이 메서드는 장치를 마운트하거나 자동 마운트된 경우 어디에 마운트되었는지 찾는 역할을 합니다. calibre.devices.usbms.device.Device.open() 메서드에는 USB 대용량 저장 장치에 대한 좋은 예시가 되는 구현이 있습니다.

이 메서드는 사용자에게 메시지를 표시하기 위해 OpenFeedback 예외를 발생시킬 수 있습니다.

매개변수:
  • connected_device – 열려고 하는 장치입니다. (vendor id, product id, bcd, 제조사 이름, 제품명, 장치 일련 번호) 튜플입니다. 하지만 일부 장치에는 일련 번호가 없고, Windows 에서는 처음 세 필드만 있으며 나머지는 None 입니다.

  • library_uuid – 현재 calibre 라이브러리의 UUID 입니다. 라이브러리가 없으면(예: 명령줄에서 사용할 때) None 일 수 있습니다.

eject()[소스]

OS에서 장치를 마운트 해제 / 꺼냅니다. 장치와 통신해야 하는 대기 중 GUI 작업이 있는지는 확인하지 않습니다.

참고: 이 메서드는 다른 장치 메서드들과 동일한 스레드에서 호출되지 않을 수 있습니다.

post_yank_cleanup()[소스]

사용자가 먼저 꺼내지 않고 장치를 갑자기 분리했을 때 호출됩니다.

set_progress_reporter(report_progress)[소스]

진행률 정보를 보고할 함수를 설정합니다.

매개변수:

report_progress – 여러 작업에 대해 % 진행률(0에서 100 사이의 숫자)을 받아 호출되는 함수입니다. -1로 호출되면 해당 작업에는 진행률 정보가 없다는 뜻입니다.

get_device_information(end_session=True)[소스]

장치에 장치 정보를 요청합니다. L{DeviceInfoQuery} 를 참조하십시오.

반환:

(장치 이름, 장치 버전, 장치의 소프트웨어 버전, MIME 형식) 튜플입니다. 선택적으로 다섯 번째 요소로 드라이브 정보 사전을 가질 수 있습니다. 예시는 usbms.driver 를 참조하십시오.

get_driveinfo()[소스]

driveinfo 사전을 반환합니다. 보통 get_device_information() 에서 호출되지만, 이 드라이버에서 driveinfo 로딩이 느리다면 SLOW_DRIVEINFO 를 설정해야 합니다. 이 경우 이 메서드는 책 목록이 로드된 뒤 calibre 가 호출합니다. 이 메서드는 장치 스레드에서 호출되지 않으므로, 드라이버는 books() 메서드에서 드라이브 정보를 캐시하고 이 함수는 캐시된 데이터를 반환해야 합니다.

card_prefix(end_session=True)[소스]

카드 경로 접두사의 2요소 목록을 반환합니다. 카드가 없으면 해당 카드의 접두사는 None 입니다. 예: (‘/place’, ‘/place2’) (None, ‘place2’) (‘place’, None) (None, None)

total_space(end_session=True)[소스]
마운트 지점의 총 사용 가능 공간을 가져옵니다:
  1. 주 메모리

  2. 메모리 카드 A

  3. 메모리 카드 B

반환:

(1, 2, 3) 위치의 총 공간(바이트)으로 이루어진 3요소 목록입니다. 특정 장치에 이 위치가 없으면 0을 반환해야 합니다.

free_space(end_session=True)[소스]
마운트 지점의 남은 공간을 가져옵니다:
  1. 주 메모리

  2. 카드 A

  3. 카드 B

반환:

(1, 2, 3) 위치의 남은 공간(바이트)으로 이루어진 3요소 목록입니다. 특정 장치에 이 위치가 없으면 -1을 반환해야 합니다.

books(oncard=None, end_session=True)[소스]

장치에 있는 전자책 목록을 반환합니다.

매개변수:

oncard – ‘carda’ 또는 ‘cardb’ 이면 해당 저장 카드의 전자책 목록을 반환하고, 그렇지 않으면 장치의 주 메모리에 있는 전자책 목록을 반환합니다. 카드를 지정했는데 카드에 책이 없으면 빈 목록을 반환합니다.

반환:

BookList 입니다.

upload_books(files, names, on_card=None, end_session=True, metadata=None)[소스]

책 목록을 장치에 업로드합니다. 장치에 이미 파일이 있다면 교체해야 합니다. 장치에 여유 공간이 충분하지 않으면 이 메서드는 FreeSpaceError 를 발생시켜야 합니다. FreeSpaceError 의 텍스트에는 on_card 가 None 이 아니면 반드시 “card” 라는 단어가, 그렇지 않으면 반드시 “memory” 라는 단어가 포함되어야 합니다.

매개변수:
  • files – 경로 목록

  • names – 장치에 업로드된 뒤 책이 가지게 될 파일명 목록입니다. len(names) == len(files)

  • metadata – None이 아니면 Metadata 객체 목록입니다. 아이디어는 이 메타데이터를 사용해 장치의 어느 위치에 책을 둘지 결정하는 것입니다. len(metadata) == len(files). 일반 표지(표지 경로) 외에 thumbnail 속성이 있을 수도 있으며, 있을 경우 이를 우선 사용해야 합니다. thumbnail 속성의 형식은 (너비, 높이, jpeg 형식의 cover_data) 입니다.

반환:

3요소 튜플 목록입니다. 이 목록은 add_books_to_metadata() 에 전달하기 위한 것입니다.

classmethod add_books_to_metadata(locations, metadata, booklists)[소스]

booklist 에 위치를 추가합니다. 이 함수는 장치와 통신해서는 안 됩니다.

매개변수:
  • locations – L{upload_books} 호출 결과

  • metadataupload_books() 와 동일한 Metadata 객체 목록입니다.

  • booklists – (books(oncard=None)(), books(oncard='carda')(), :meth`books(oncard=’cardb’)`) 호출 결과를 담은 튜플입니다.

delete_books(paths, end_session=True)[소스]

장치 경로에 있는 책을 삭제합니다.

classmethod remove_books_from_metadata(paths, booklists)[소스]

메타데이터 목록에서 책을 제거합니다. 이 함수는 장치와 통신해서는 안 됩니다.

매개변수:
  • paths – 장치에 있는 책의 경로입니다.

  • booklists – (books(oncard=None)(), books(oncard='carda')(), :meth`books(oncard=’cardb’)`) 호출 결과를 담은 튜플입니다.

sync_booklists(booklists, end_session=True)[소스]

장치의 메타데이터를 업데이트합니다.

매개변수:

booklists – (books(oncard=None)(), books(oncard='carda')(), :meth`books(oncard=’cardb’)`) 호출 결과를 담은 튜플입니다.

get_file(path, outfile, end_session=True)[소스]

장치의 path 에 있는 파일을 읽어 outfile 에 씁니다.

매개변수:

outfilesys.stdout 같은 파일 객체 또는 open() 호출 결과입니다.

classmethod config_widget()[소스]

QWidget 를 반환해야 합니다. QWidget 에는 장치 인터페이스 설정이 포함됩니다.

classmethod save_settings(settings_widget)[소스]

설정을 디스크에 저장해야 합니다. config_widget() 가 만든 위젯을 받아 모든 설정을 디스크에 저장합니다.

classmethod settings()[소스]

opts 객체를 반환해야 합니다. opts 객체에는 최소한 장치의 형식 우선순위 목록인 format_map 속성이 있어야 합니다.

set_plugboards(plugboards, pb_func)[소스]

현재 plugboard 집합과 특정 plugboard 를 선택하는 함수를 드라이버에 제공합니다. 이 메서드는 add_books 및 sync_booklists 직전에 호출됩니다.

pb_func 는 다음 시그니처를 가진 호출 가능 객체입니다:

def pb_func(device_name, format, plugboards)

현재 장치 이름(클래스 이름 또는 DEVICE_PLUGBOARD_NAME), 관심 있는 형식(‘실제’ 형식 또는 ‘device_db’), 그리고 plugboards(set_plugboards 에서 받은 동일한 객체)를 전달합니다.

반환:

None 또는 단일 plugboard 인스턴스입니다.

set_driveinfo_name(location_code, name)[소스]

driveinfo 파일의 장치 이름을 ‘name’ 으로 설정합니다. 이 설정은 파일이 다시 생성되거나 이름이 다시 변경될 때까지 유지됩니다.

디스크가 아닌 장치는 get_device_information() 메서드가 반환하는 위치 코드에 따라 이 메서드를 구현해야 합니다.

prepare_addable_books(paths)[소스]

경로 목록을 받아, 책을 추가할 수 있는 버전의 경로 목록을 반환합니다.

책 준비 중 오류가 발생하면, 반환 목록에서 그 책의 위치에는 경로 대신 3-튜플 (original_path, 예외 인스턴스, traceback) 이 들어 있어야 합니다.

startup()[소스]

calibre 가 장치를 시작할 때 호출됩니다. 필요한 초기화를 수행하십시오. 이 클래스의 여러 인스턴스가 생성될 수 있으므로 __init__ 가 여러 번 호출될 수 있지만, 이 메서드는 그중 한 인스턴스에서만 호출됩니다. 이 메서드는 GUI 스레드가 아니라 장치 스레드에서 호출됩니다.

shutdown()[소스]

calibre 가 완전히 종료되거나 재시작 준비를 위해 종료될 때 호출됩니다. 필요한 정리 작업을 수행하십시오. 이 메서드는 GUI 스레드가 아니라 장치 스레드에서 호출됩니다.

get_device_uid()[소스]

현재 연결된 장치의 고유 id를 반환해야 합니다(open() 이 성공한 직후 호출됨). ASK_TO_ALLOW_CONNECT = True 로 설정했다면 이 메서드를 반드시 구현해야 합니다.

ignore_connected_device(uid)[소스]

앞으로 uid(get_device_uid() 호출 결과)로 식별된 장치를 무시해야 합니다. ASK_TO_ALLOW_CONNECT = True 로 설정했다면 이 메서드를 반드시 구현해야 합니다. 이 함수는 open() 직후 호출되므로, open() 이 어떤 상태를 캐시한다면 드라이버는 그 상태를 재설정해야 합니다.

get_user_blacklisted_devices()[소스]

사용자가 무시하도록 요청한 모든 장치에 대해 장치 uid 를 친숙한 이름으로 매핑한 값을 반환합니다.

set_user_blacklisted_devices(devices)[소스]

이 드라이버가 무시해야 할 장치 uid 목록을 설정합니다.

specialize_global_preferences(device_prefs)[소스]

장치가 특정 환경설정을 재정의하려는 경우 이 메서드를 구현하십시오. 재정의될 수 있는 환경설정을 원하는 모든 호출 지점이 prefs[‘something’] 대신 device_prefs[‘something’] 을 사용하도록 해야 합니다. 이 메서드는 device_prefs.set_overrides(pref=val, pref=val, …) 를 호출해야 합니다. 현재 사용되는 예: 메타데이터 관리 (prefs[‘manage_device_metadata’])

set_library_info(library_name, library_uuid, field_metadata)[소스]

현재 calibre 라이브러리에 대한 정보가 필요하다면 이 메서드를 구현하십시오. 이 메서드는 시작 시와 연결된 상태에서 calibre 라이브러리가 바뀔 때 호출됩니다.

is_dynamically_controllable()[소스]

장치 관리자가 플러그인을 시작할 때 호출됩니다. 이 메서드가 문자열을 반환하면 a) 장치 관리자의 동적 제어 인터페이스를 지원하고, b) 그 이름이 플러그인과 통신할 때 사용됩니다.

이 메서드는 GUI 스레드에서 호출될 수 있습니다. 따라서 이를 구현하는 드라이버는 스레드 안전해야 합니다.

start_plugin()[소스]

플러그인을 시작하기 위해 호출됩니다. 플러그인은 자신이 사용하는 방식으로 장치 연결을 받기 시작해야 합니다. 이미 연결을 받고 있다면 아무것도 하지 마십시오.

이 메서드는 GUI 스레드에서 호출될 수 있습니다. 따라서 이를 구현하는 드라이버는 스레드 안전해야 합니다.

stop_plugin()[소스]

플러그인을 중지하기 위해 호출됩니다. 플러그인은 더 이상 연결을 받지 않아야 하며, 자신이 사용한 리소스를 정리해야 합니다. 대개 이 메서드는 shutdown 을 호출해야 할 가능성이 높습니다. 이미 연결을 받고 있지 않다면 아무것도 하지 마십시오.

이 메서드는 GUI 스레드에서 호출될 수 있습니다. 따라서 이를 구현하는 드라이버는 스레드 안전해야 합니다.

get_option(opt_string, default=None)[소스]

opt_string 이 가리키는 옵션의 값을 반환합니다. 이 메서드는 플러그인이 시작되지 않은 상태에서도 호출될 수 있습니다. 옵션이 존재하지 않으면 None을 반환하십시오.

이 메서드는 GUI 스레드에서 호출될 수 있습니다. 따라서 이를 구현하는 드라이버는 스레드 안전해야 합니다.

set_option(opt_string, opt_value)[소스]

opt_string 이 가리키는 옵션의 값을 설정합니다. 이 메서드는 플러그인이 시작되지 않은 상태에서도 호출될 수 있습니다.

이 메서드는 GUI 스레드에서 호출될 수 있습니다. 따라서 이를 구현하는 드라이버는 스레드 안전해야 합니다.

is_running()[소스]

플러그인이 시작된 상태이면 True, 그렇지 않으면 false 를 반환합니다.

이 메서드는 GUI 스레드에서 호출될 수 있습니다. 따라서 이를 구현하는 드라이버는 스레드 안전해야 합니다.

synchronize_with_db(db, book_id, book_metadata, first_call)[소스]

장치에 있는 책이 calibre DB 의 책과 일치하는 것으로 판단될 때, 책 매칭 과정 중 호출됩니다. 필요하다면 장치에서 calibre DB 로 데이터를 동기화하는 책임은 이 메서드에 있습니다.

이 메서드는 두 값으로 이루어진 튜플을 반환해야 합니다. 첫 번째 값은 calibre 데이터베이스가 변경된 경우 변경된 calibre 책 id 의 집합이며, 데이터베이스가 변경되지 않았다면 None 입니다. 첫 번째 값이 빈 집합이면 장치에 있는 책의 메타데이터가 calibre 메타데이터로 업데이트되어 장치로 다시 전달되지만, 해당 책에 대한 GUI 새로 고침은 수행되지 않습니다. calibre 데이터가 올바르지만 이를 장치로 보내야 할 때 유용합니다.

두 번째 값 자체도 2값 튜플입니다. 그 안의 첫 번째 값은 책 형식을 장치로 보내야 하는지 여부를 지정합니다. 목적은 장치의 책이 calibre 의 책과 같은지 검증할 수 있게 하는 것입니다. 보낼 책이 없으면 이 값은 None 이어야 하며, 보내야 한다면 장치에서의 기본 파일 이름(예: foobar.epub)을 반환하십시오. 이름에는 반드시 확장자를 포함해야 합니다. 장치 하위 시스템은 None 이 아닌 값이 반환된 모든 책에 대해 send_books 작업을 생성합니다. 참고: 나중에 확장자를 가져오는 용도 외에는, 대부분의 장치가 파일 이름 생성에 템플릿을 사용하므로 이 이름은 무시됩니다. 반환된 튜플의 두 번째 값은 그 형식이 미래 날짜인지 여부를 나타냅니다. 그렇다면 True, 아니면 False를 반환하십시오. calibre 는 미래 날짜 책 목록을 사용자에게 보여 주는 대화상자를 표시합니다.

매우 중요: 이 메서드는 GUI 스레드에서 호출됩니다. 장치 관리자 스레드와 관련하여 스레드 안전해야 합니다.

book_id: 데이터베이스 안 책의 calibre id. book_metadata: 장치에서 온 책의 Metadata 객체. first_call: 동기화 중 첫 호출이면 True, 아니면 False

class calibre.devices.interface.BookList(oncard, prefix, settings)[소스]

기반 클래스: list

책 목록입니다. 각 Book 객체는 다음 필드를 가져야 합니다.

  1. title

  2. authors

  3. size (책의 파일 크기)

  4. 날짜시간 (UTC 시간 투플)

  5. path (장치 안 책의 경로)

  6. thumbnail (None 일 수 있음). thumbnail 은 이미지 데이터를 담은 str/bytes 객체이거나, 절대 경로(플랫폼 고유 형식)를 저장하는 image_path 속성을 가져야 합니다.

  7. tags (비어 있을 수 있는 문자열 목록)

supports_collections()[소스]

장치가 이 책 목록에 대한 컬렉션을 지원하면 True를 반환합니다.

add_book(book, replace_metadata)[소스]

책을 booklist 에 추가합니다. 목적은 장치 내부 메타데이터를 유지하는 것입니다. booklists 를 동기화해야 한다면 True를 반환하십시오.

remove_book(book)[소스]

booklist 에서 책을 제거합니다. 동시에 장치 메타데이터도 수정하십시오.

get_collections(collection_attributes)[소스]

collection_attributes 로부터 생성된 컬렉션 사전을 반환합니다. 사전의 각 항목 형식은 컬렉션 이름:[책 목록] 입니다.

책 목록은 책 제목순으로 정렬되며, series 로부터 생성된 컬렉션의 경우에는 series_index 가 사용됩니다.

매개변수:

collection_attributes – Book 객체의 속성 목록

USB 대용량 저장소 기반 장치

이러한 장치의 기본 클래스는 calibre.devices.usbms.driver.USBMS 입니다. 이 클래스는 다시 아래에 문서화된 기반 클래스들로부터 일부 기능을 상속받습니다. 전형적인 기본 USBMS 기반 드라이버는 다음과 같습니다:

from calibre.devices.usbms.driver import USBMS

class PDNOVEL(USBMS):
    name = 'Pandigital Novel device interface'
    gui_name = 'PD Novel'
    description = _('Communicate with the Pandigital Novel')
    author = 'Kovid Goyal'
    supported_platforms = ['windows', 'linux', 'osx']
    FORMATS = ['epub', 'pdf']

    VENDOR_ID   = [0x18d1]
    PRODUCT_ID  = [0xb004]
    BCD         = [0x224]

    THUMBNAIL_HEIGHT = 144

    EBOOK_DIR_MAIN = 'eBooks'
    SUPPORTS_SUB_DIRS = False

    def upload_cover(self, path, filename, metadata):
        coverdata = getattr(metadata, 'thumbnail', None)
        if coverdata and coverdata[2]:
            with open('%s.jpg' % os.path.join(path, filename), 'wb') as coverfile:
                coverfile.write(coverdata[2])
class calibre.devices.usbms.device.Device(plugin_path)[소스]

기반 클래스: DeviceConfig, DevicePlugin

이 클래스는 자신을 USB 대용량 저장 장치로 노출하는 장치용 모든 드라이버에 공통된 논리를 제공합니다. 모든 플랫폼에서 USBMS 장치의 마운트/꺼내기 구현을 제공합니다.

VENDOR_ID = 0

VENDOR_ID 는 정수, 정수 목록 또는 사전이 될 수 있습니다. 사전인 경우에는 다음 형식의 사전들의 사전이어야 합니다:

{
 integer_vendor_id : { product_id : [list of BCDs], ... },
 ...
}
PRODUCT_ID = 0

정수 또는 정수 목록

BCD = None

BCD 는 BCD를 기준으로 장치를 구분하지 않으려면 None 일 수 있고, 이 드라이버가 지원하는 모든 장치의 BCD 번호 목록일 수도 있습니다.

WINDOWS_MAIN_MEM = None

Windows PnP id 문자열에서 장치의 주 메모리를 식별하는 문자열입니다. None, 문자열, 문자열 목록 또는 컴파일된 정규식일 수 있습니다.

WINDOWS_CARD_A_MEM = None

Windows PnP id 문자열에서 장치의 첫 번째 카드를 식별하는 문자열입니다. None, 문자열, 문자열 목록 또는 컴파일된 정규식일 수 있습니다.

WINDOWS_CARD_B_MEM = None

Windows PnP id 문자열에서 장치의 두 번째 카드를 식별하는 문자열입니다. None, 문자열, 문자열 목록 또는 컴파일된 정규식일 수 있습니다.

OSX_MAIN_MEM_VOL_PAT = None

새 드라이버 감지에서 주 메모리와 저장 카드를 구분하는 데 사용됩니다. macOS 가 할당한 주 메모리 마운트 지점과 일치하는 정규식이어야 합니다.

MAX_PATH_LEN = 250

장치에 생성되는 경로의 최대 길이

NEWS_IN_FOLDER = True

뉴스를 전용 폴더에 넣기

classmethod model_metadata() tuple[ModelMetadata, ...][소스]

이 드라이버가 지원하는 실제 장치 모델 전체에 대한 메타데이터입니다.

reset(key='-1', log_packets=False, report_progress=None, detected_device=None)[소스]
매개변수:
  • key – 장치 잠금을 해제하기 위한 키

  • log_packets – True이면 장치로 오가는 패킷 스트림이 기록됩니다.

  • report_progress – 여러 작업에 대해 % 진행률(0에서 100 사이의 숫자)을 받아 호출되는 함수입니다. -1로 호출되면 해당 작업에는 진행률 정보가 없다는 뜻입니다.

  • detected_device – 장치 스캐너에서 가져온 장치 정보입니다.

set_progress_reporter(report_progress)[소스]

진행률 정보를 보고할 함수를 설정합니다.

매개변수:

report_progress – 여러 작업에 대해 % 진행률(0에서 100 사이의 숫자)을 받아 호출되는 함수입니다. -1로 호출되면 해당 작업에는 진행률 정보가 없다는 뜻입니다.

card_prefix(end_session=True)[소스]

카드 경로 접두사의 2요소 목록을 반환합니다. 카드가 없으면 해당 카드의 접두사는 None 입니다. 예: (‘/place’, ‘/place2’) (None, ‘place2’) (‘place’, None) (None, None)

total_space(end_session=True)[소스]
마운트 지점의 총 사용 가능 공간을 가져옵니다:
  1. 주 메모리

  2. 메모리 카드 A

  3. 메모리 카드 B

반환:

(1, 2, 3) 위치의 총 공간(바이트)으로 이루어진 3요소 목록입니다. 특정 장치에 이 위치가 없으면 0을 반환해야 합니다.

free_space(end_session=True)[소스]
마운트 지점의 남은 공간을 가져옵니다:
  1. 주 메모리

  2. 카드 A

  3. 카드 B

반환:

(1, 2, 3) 위치의 남은 공간(바이트)으로 이루어진 3요소 목록입니다. 특정 장치에 이 위치가 없으면 -1을 반환해야 합니다.

windows_sort_drives(drives)[소스]

WINDOWS_CARD_NAME 기준으로 주 메모리와 저장 카드를 구분하지 못하는 장치에서 이를 구분하기 위해 호출됩니다. 예: EB600

can_handle_windows(usbdevice, debug=False)[소스]

이 드라이버가 해당 장치를 처리할 수 있는지 추가 검사하기 위한 선택적 메서드입니다. 처리할 수 없다면 False를 반환해야 합니다. 이 메서드는 vendor, product id, bcd 가 일치한 뒤에만 호출되므로 비교적 시간이 드는 검사를 수행할 수 있습니다. 기본 구현은 True를 반환합니다. 이 메서드는 Windows 에서만 호출됩니다. can_handle() 도 참조하십시오.

USBMS 기반 장치의 경우 이 메서드는 기본적으로 can_handle() 에 위임된다는 점에 유의하십시오. 따라서 USBMS 하위 클래스에서는 can_handle() 만 재정의하면 됩니다.

매개변수:

usbdevicecalibre.devices.winusb.scan_usb_devices() 가 반환한 usbdevice 입니다.

open(connected_device, library_uuid)[소스]

장치별 초기화를 수행합니다. 장치가 감지된 뒤이지만 장치와 통신하는 다른 함수보다 먼저 호출됩니다. 예를 들어 장치가 USB 대용량 저장소로 자신을 나타내는 경우, 이 메서드는 장치를 마운트하거나 자동 마운트된 경우 어디에 마운트되었는지 찾는 역할을 합니다. calibre.devices.usbms.device.Device.open() 메서드에는 USB 대용량 저장 장치에 대한 좋은 예시가 되는 구현이 있습니다.

이 메서드는 사용자에게 메시지를 표시하기 위해 OpenFeedback 예외를 발생시킬 수 있습니다.

매개변수:
  • connected_device – 열려고 하는 장치입니다. (vendor id, product id, bcd, 제조사 이름, 제품명, 장치 일련 번호) 튜플입니다. 하지만 일부 장치에는 일련 번호가 없고, Windows 에서는 처음 세 필드만 있으며 나머지는 None 입니다.

  • library_uuid – 현재 calibre 라이브러리의 UUID 입니다. 라이브러리가 없으면(예: 명령줄에서 사용할 때) None 일 수 있습니다.

eject()[소스]

OS에서 장치를 마운트 해제 / 꺼냅니다. 장치와 통신해야 하는 대기 중 GUI 작업이 있는지는 확인하지 않습니다.

참고: 이 메서드는 다른 장치 메서드들과 동일한 스레드에서 호출되지 않을 수 있습니다.

post_yank_cleanup()[소스]

사용자가 먼저 꺼내지 않고 장치를 갑자기 분리했을 때 호출됩니다.

sanitize_callback(path)[소스]

개별 장치 드라이버가 create_upload_path() 가 사용하는 경로 정리 방식을 재정의할 수 있도록 하는 콜백입니다.

filename_callback(default, mi)[소스]

드라이버가 create_upload_path() 가 설정한 기본 파일 이름을 바꿀 수 있도록 하는 콜백입니다.

sanitize_path_components(components)[소스]

장치에 업로드할 파일의 경로 구성 요소에 대해 장치별 정리를 수행합니다.

get_annotations(path_map)[소스]

path_map 을 장치에서 찾은 파일의 annotation_map 으로 해석합니다.

add_annotation_to_library(db, db_id, annotation)[소스]

calibre 라이브러리에 주석 추가

class calibre.devices.usbms.cli.CLI[소스]
class calibre.devices.usbms.driver.USBMS(plugin_path)[소스]

기반 클래스: CLI, Device

모든 USBMS 장치의 기본 클래스입니다. 메타데이터/캐싱 메타데이터/등을 전송/수신/업데이트하기 위한 논리를 구현합니다.

description = '전자책 리더와 통신합니다.'

이 플러그인이 하는 일을 설명하는 짧은 문자열입니다.

author = 'John Schember'

이 플러그인의 작성자입니다.

supported_platforms = ['windows', 'osx', 'linux']

이 플러그인이 동작하는 플랫폼 목록입니다. 예: ['windows', 'osx', 'linux']

booklist_class

:py:class:`~calibre.devices.usbms.books.BookList`의 별칭

book_class

:py:class:`~calibre.devices.usbms.books.Book`의 별칭

FORMATS = []

지원하는 형식의 정렬된 목록

CAN_SET_METADATA = []

책의 메타데이터를 GUI를 통해 설정할 수 있는지 여부입니다.

get_device_information(end_session=True)[소스]

장치에 장치 정보를 요청합니다. L{DeviceInfoQuery} 를 참조하십시오.

반환:

(장치 이름, 장치 버전, 장치의 소프트웨어 버전, MIME 형식) 튜플입니다. 선택적으로 다섯 번째 요소로 드라이브 정보 사전을 가질 수 있습니다. 예시는 usbms.driver 를 참조하십시오.

set_driveinfo_name(location_code, name)[소스]

driveinfo 파일의 장치 이름을 ‘name’ 으로 설정합니다. 이 설정은 파일이 다시 생성되거나 이름이 다시 변경될 때까지 유지됩니다.

디스크가 아닌 장치는 get_device_information() 메서드가 반환하는 위치 코드에 따라 이 메서드를 구현해야 합니다.

books(oncard=None, end_session=True)[소스]

장치에 있는 전자책 목록을 반환합니다.

매개변수:

oncard – ‘carda’ 또는 ‘cardb’ 이면 해당 저장 카드의 전자책 목록을 반환하고, 그렇지 않으면 장치의 주 메모리에 있는 전자책 목록을 반환합니다. 카드를 지정했는데 카드에 책이 없으면 빈 목록을 반환합니다.

반환:

BookList 입니다.

upload_books(files, names, on_card=None, end_session=True, metadata=None)[소스]

책 목록을 장치에 업로드합니다. 장치에 이미 파일이 있다면 교체해야 합니다. 장치에 여유 공간이 충분하지 않으면 이 메서드는 FreeSpaceError 를 발생시켜야 합니다. FreeSpaceError 의 텍스트에는 on_card 가 None 이 아니면 반드시 “card” 라는 단어가, 그렇지 않으면 반드시 “memory” 라는 단어가 포함되어야 합니다.

매개변수:
  • files – 경로 목록

  • names – 장치에 업로드된 뒤 책이 가지게 될 파일명 목록입니다. len(names) == len(files)

  • metadata – None이 아니면 Metadata 객체 목록입니다. 아이디어는 이 메타데이터를 사용해 장치의 어느 위치에 책을 둘지 결정하는 것입니다. len(metadata) == len(files). 일반 표지(표지 경로) 외에 thumbnail 속성이 있을 수도 있으며, 있을 경우 이를 우선 사용해야 합니다. thumbnail 속성의 형식은 (너비, 높이, jpeg 형식의 cover_data) 입니다.

반환:

3요소 튜플 목록입니다. 이 목록은 add_books_to_metadata() 에 전달하기 위한 것입니다.

upload_cover(path, filename, metadata, filepath)[소스]

책 표지를 장치에 업로드합니다. 기본 구현은 아무 작업도 하지 않습니다.

매개변수:
  • path – 연관된 책이 위치한 폴더의 전체 경로입니다.

  • filename – 확장자를 제외한 책 파일 이름입니다.

  • metadata – 책에 속한 메타데이터입니다. 표지에는 metadata.thumbnail 을 사용하십시오.

  • filepath – 전자책 파일의 전체 경로입니다.

add_books_to_metadata(locations, metadata, booklists)[소스]

booklist 에 위치를 추가합니다. 이 함수는 장치와 통신해서는 안 됩니다.

매개변수:
  • locations – L{upload_books} 호출 결과

  • metadataupload_books() 와 동일한 Metadata 객체 목록입니다.

  • booklists – (books(oncard=None)(), books(oncard='carda')(), :meth`books(oncard=’cardb’)`) 호출 결과를 담은 튜플입니다.

delete_books(paths, end_session=True)[소스]

장치 경로에 있는 책을 삭제합니다.

remove_books_from_metadata(paths, booklists)[소스]

메타데이터 목록에서 책을 제거합니다. 이 함수는 장치와 통신해서는 안 됩니다.

매개변수:
  • paths – 장치에 있는 책의 경로입니다.

  • booklists – (books(oncard=None)(), books(oncard='carda')(), :meth`books(oncard=’cardb’)`) 호출 결과를 담은 튜플입니다.

sync_booklists(booklists, end_session=True)[소스]

장치의 메타데이터를 업데이트합니다.

매개변수:

booklists – (books(oncard=None)(), books(oncard='carda')(), :meth`books(oncard=’cardb’)`) 호출 결과를 담은 튜플입니다.

classmethod normalize_path(path)[소스]

플랫폼 고유 경로 구분자를 사용한 경로를 반환합니다.

사용자 인터페이스 동작

ZIP 파일로 자체 플러그인을 추가하는 경우, InterfaceActionBase 와 InterfaceAction 을 모두 하위 클래스로 만들어야 합니다. InterfaceActionBase 하위 클래스의 load_actual_plugin() 메서드는 InterfaceAction 하위 클래스의 인스턴스화된 객체를 반환해야 합니다.

class calibre.gui2.actions.InterfaceAction(parent, site_customization)[소스]

기반 클래스: QObject

그래픽 사용자 인터페이스에서 수행할 수 있는 “동작” 을 나타내는 플러그인입니다. 도구 모음과 컨텍스트 메뉴의 모든 항목은 이 플러그인들로 구현됩니다.

이 클래스는 이러한 플러그인의 기본 클래스이지만, 플러그인을 calibre 플러그인 시스템에 통합하려면 실제 플러그인을 참조하는 래퍼 클래스를 만들어야 합니다. 예시는 calibre.customize.builtins 모듈을 참조하십시오.

InterfaceAction 객체의 이름이 같으면 우선순위가 높은 것이 우선합니다.

하위 클래스는 genesis(), library_changed(), location_selected(), shutting_down(), initialization_complete(), tag_browser_context_action() 메서드를 구현해야 합니다.

초기화가 끝나면 이 플러그인은 gui 멤버를 통해 calibre 메인 GUI 에 접근할 수 있습니다. 예를 들어 이름으로 다른 플러그인에 접근할 수 있습니다:

self.gui.iactions['Save To Disk']

실제 플러그인에 접근하려면 interface_action_base_plugin 속성을 사용하십시오. 이 속성은 플러그인이 초기화된 뒤에만 사용할 수 있습니다. do_user_config() 같은 플러그인 클래스 메서드를 사용하려 할 때 유용합니다.

action_spec 에 지정된 QAction 이 자동으로 생성되어 self.qaction 으로 제공됩니다.

name = 'Implement me'

플러그인 이름입니다. 동일한 이름의 플러그인이 둘 있으면 우선순위가 높은 것이 우선합니다.

priority = 1

플러그인 우선순위입니다. 동일한 이름의 플러그인이 둘 있으면 우선순위가 높은 것이 우선합니다.

popup_type = 1

이 플러그인이 도구 모음에 추가될 때 사용할 메뉴 팝업 유형입니다.

auto_repeat = False

이 동작의 단축키를 누르고 있는 동안 자동 반복할지 여부입니다.

action_spec = ('text', 'icon', None, None)

형식: (text, icon_path, tooltip, keyboard shortcut). icon, tooltip, keyboard shortcut 은 None 일 수 있습니다. keyboard shortcut 은 문자열, None 또는 단축키 튜플이어야 합니다. None 이면 이 동작에 대응하는 단축키가 등록되지 않습니다. 빈 튜플을 전달하면 기본 키 바인딩 없이 단축키가 등록됩니다.

action_shortcut_name = None

None 이 아니면, 위 action spec 에 대해 키보드 단축키를 사용자 지정할 때 action_spec[0] 대신 사용자에게 표시할 이름으로 사용됩니다.

action_add_menu = False

True이면 메뉴가 자동으로 생성되어 self.qaction 에 추가됩니다.

action_menu_clone_qaction = False

True이면 self.qaction 의 복제본이 self.qaction 의 메뉴에 추가됩니다. 이 동작의 텍스트를 self.qaction 과 다르게 하고 싶다면, 이 변수를 새 텍스트로 설정하십시오.

dont_add_to = frozenset({})

이 동작을 추가하면 안 되는 위치 집합입니다. 가능한 위치 목록은 all_locations 를 참조하십시오.

dont_remove_from = frozenset({})

이 동작을 제거하면 안 되는 위치 집합입니다. 가능한 위치 목록은 all_locations 를 참조하십시오.

action_type = 'global'

동작 유형입니다. ‘current’ 는 현재 보기에 대해 작동함을 의미하고, ‘global’ 은 현재 보기가 아니라 calibre 전체에 대해 작동하는 동작을 의미합니다.

accepts_drops = False

True이면 이 InterfaceAction 은 드래그 앤 드롭 이벤트와 상호작용할 기회를 가집니다. 자세한 내용은 accept_enter_event(), :meth`:accept_drag_move_event`, drop_event() 메서드를 참조하십시오.

accept_enter_event(event, mime_data)[소스]

이 인터페이스 동작이 드래그 이벤트를 처리할 수 있는 경우에만 True를 반환해야 합니다. event 에 대해 accept/ignore 를 호출하지 마십시오. 이는 calibre UI 가 처리합니다.

accept_drag_move_event(event, mime_data)[소스]

이 인터페이스 동작이 드래그 이벤트를 처리할 수 있는 경우에만 True를 반환해야 합니다. event 에 대해 accept/ignore 를 호출하지 마십시오. 이는 calibre UI 가 처리합니다.

drop_event(event, mime_data)[소스]

이 메서드는 유용한 동작을 수행한 뒤, 이 인터페이스 동작이 drop 이벤트를 처리할 수 있는 경우에만 True를 반환해야 합니다. event 에 대해 accept/ignore 를 호출하지 마십시오. 이는 calibre UI 가 처리합니다. 이 함수에서는 블로킹되거나 오래 걸리는 작업을 수행하지 마십시오. 대신 신호를 발생시키거나 QTimer.singleShot 을 사용하고 빠르게 반환하십시오. 예시는 내장 동작을 참조하십시오.

create_menu_action(menu, unique_name, text, icon=None, shortcut=None, description=None, triggered=None, shortcut_name=None, persist_shortcut=False)[소스]

QMenu 에 동작을 쉽게 추가하기 위한 편의 메서드입니다. 생성된 QAction 을 반환합니다. 이 동작에는 calibre_shortcut_unique_name 이라는 추가 속성이 있으며, None 이 아니면 이 동작이 키보드 관리자에 등록된 고유 이름을 가리킵니다.

매개변수:
  • menu – 새로 생성된 동작이 추가될 QMenu

  • unique_name – 이 동작의 고유 이름입니다. 전역적으로 고유해야 하므로 가능한 한 설명적으로 만드십시오. 확신이 서지 않으면 UUID 를 추가하십시오.

  • text – 동작의 텍스트입니다.

  • icon – QIcon 또는 파일 이름입니다. 파일 이름은 QIcon.ic() 내장 함수에 전달되므로 images 폴더의 전체 경로를 전달할 필요가 없습니다.

  • shortcut – 문자열, 문자열 목록, None 또는 False 입니다. False 이면 이 동작에 대한 키보드 단축키가 등록되지 않습니다. None 이면 기본 키 바인딩이 없는 키보드 단축키가 등록됩니다. 문자열과 문자열 목록은 지정한 기본 키 바인딩으로 단축키를 등록합니다.

  • description – 이 동작의 설명입니다. 도구 설명 설정에 사용됩니다.

  • triggered – 생성된 동작의 triggered 시그널에 연결되는 호출 가능 객체입니다.

  • shortcut_name – 이 동작의 키보드 단축키를 사용자 지정할 때 사용자에게 표시되는 텍스트입니다. 기본값은 text 값입니다.

  • persist_shortcut – 항상 나타나지 않거나 라이브러리에 따라 달라지는 동작의 단축키는 `persist_shortcut` 을 True로 설정하지 않으면 다른 키보드 단축키를 수정할 때 사라질 수 있습니다.

load_resources(names)[소스]

이 플러그인이 ZIP 파일(사용자 추가 플러그인)로 제공되는 경우, 이 메서드를 사용해 ZIP 파일에서 리소스를 불러올 수 있습니다.

예를 들어 이미지를 불러오려면:

pixmap = QPixmap()
pixmap.loadFromData(tuple(self.load_resources(['images/icon.png']).values())[0])
icon = QIcon(pixmap)
매개변수:

names – / 를 구분자로 사용한 ZIP 파일 내부 리소스 경로 목록

반환:

{name : file_contents} 형태의 사전입니다. ZIP 파일에서 찾지 못한 이름은 사전에 포함되지 않습니다.

genesis()[소스]

이 플러그인을 설정합니다. 초기화 중 한 번만 호출됩니다. self.gui 를 사용할 수 있습니다. action_spec 에 지정된 동작은 self.qaction 으로 제공됩니다.

location_selected(loc)[소스]

calibre 에 표시되는 책 목록이 바뀔 때마다 호출됩니다. 현재 loc 의 값은 library, main, card and cardb 입니다.

이 메서드는 위치에 맞게 이 동작과 하위 동작들을 활성화/비활성화해야 합니다.

library_about_to_change(olddb, db)[소스]

현재 라이브러리가 바뀔 때마다 호출됩니다.

매개변수:
  • olddb – 이전 라이브러리에 대응하는 LibraryDatabase 입니다.

  • db – 새 라이브러리에 대응하는 LibraryDatabase 입니다.

library_changed(db)[소스]

현재 라이브러리가 바뀔 때마다 호출됩니다.

매개변수:

db – 현재 라이브러리에 대응하는 LibraryDatabase 입니다.

gui_layout_complete()[소스]

메인 GUI 의 레이아웃이 완료되면 각 동작마다 한 번 호출됩니다. 동작이 레이아웃을 변경해야 한다면 initialization_complete() 가 아니라 여기에서 수행해야 합니다.

initialization_complete()[소스]

메인 GUI 의 초기화가 완료되면 각 동작마다 한 번 호출됩니다.

tag_browser_context_action(index)[소스]

태그 브라우저에서 컨텍스트 메뉴를 표시할 때 호출됩니다. index 는 오른쪽 클릭한 태그 브라우저 항목을 가리키는 QModelIndex 입니다. index.valid() 로 유효성을 검사하고 index.data(Qt.ItemDataRole.UserRole) 로 기반 TagTreeItem 객체를 가져오십시오. 이 메서드가 yield 하는 모든 동작 객체는 컨텍스트 메뉴에 추가됩니다.

shutting_down()[소스]

메인 GUI 가 종료되는 과정에 있을 때 플러그인마다 한 번 호출됩니다. 사용한 리소스를 해제하되, 종료를 오래 막지 않도록 하십시오.

class calibre.customize.InterfaceActionBase(*args, **kwargs)[소스]

기반 클래스: Plugin

supported_platforms = ['windows', 'osx', 'linux']

이 플러그인이 동작하는 플랫폼 목록입니다. 예: ['windows', 'osx', 'linux']

author = 'Kovid Goyal'

이 플러그인의 작성자입니다.

type = '사용자 인터페이스 동작'

이 플러그인의 유형입니다. GUI에서 플러그인을 분류하는 데 사용됩니다.

load_actual_plugin(gui)[소스]

실제 인터페이스 동작 플러그인 객체를 반환해야 합니다.

환경설정 플러그인

class calibre.customize.PreferencesPlugin(plugin_path)[소스]

기반 클래스: Plugin

환경설정 대화상자에 표시되는 위젯을 나타내는 플러그인입니다.

이 플러그인에는 중요한 메서드가 하나 있는데, 바로 create_widget() 입니다. 플러그인의 여러 필드는 UI 에서의 분류 방식을 제어합니다.

supported_platforms = ['windows', 'osx', 'linux']

이 플러그인이 동작하는 플랫폼 목록입니다. 예: ['windows', 'osx', 'linux']

author = 'Kovid Goyal'

이 플러그인의 작성자입니다.

type = '환경설정'

이 플러그인의 유형입니다. GUI에서 플러그인을 분류하는 데 사용됩니다.

config_widget = None

ConfigWidgetInterface 를 구현하는 ConfigWidget 이라는 클래스가 들어 있는 모듈의 import 경로입니다. create_widget() 에서 사용됩니다.

category_order = 100

이 플러그인의 category 가 카테고리 목록 중 어디에 위치해야 하는지입니다.

name_order = 100

카테고리 내 이름 목록에서 이 플러그인의 gui_name 이 위치해야 하는 자리입니다.

category = None

이 플러그인이 속해야 하는 카테고리입니다.

gui_category = None

이 플러그인에 대해 사용자에게 표시되는 카테고리 이름입니다.

gui_name = None

이 플러그인에 대해 사용자에게 표시되는 이름입니다.

icon = None

이 플러그인의 아이콘이며 절대 경로여야 합니다.

description = None

도구 설명 등에 사용되는 설명입니다.

create_widget(parent=None)[소스]

이 환경설정 그룹을 설정하는 데 사용되는 실제 Qt 위젯을 만들고 반환합니다. 위젯은 calibre.gui2.preferences.ConfigWidgetInterface 를 구현해야 합니다.

기본 구현은 config_widget 를 사용해 위젯을 인스턴스화합니다.

class calibre.gui2.preferences.ConfigWidgetInterface[소스]

이 클래스는 환경설정 대화상자에 표시되는 모든 위젯이 구현해야 하는 인터페이스를 정의합니다. 이 인터페이스를 구현하고 여러 편의 메서드도 정의한 기본 클래스는 ConfigWidgetBase 를 참조하십시오.

changed_signal = None

사용자가 이 위젯에서 값을 변경할 때마다 이 시그널을 발생시켜야 합니다.

supports_restoring_to_defaults = True

restore_to_defaults() 메서드가 구현되어 있는 경우에만 True로 설정하십시오.

restore_defaults_desc = '설정을 기본값으로 복원합니다. 실제로 기본 설정을 저장하려면 적용을 클릭하여야 합니다.'

“기본값 복원” 버튼의 도구 설명입니다.

restart_critical = False

True이면 환경설정 대화상자는 사용자가 더 이상의 환경설정을 설정하지 못하게 합니다. commit() 이 True를 반환할 때만 효과가 있습니다.

genesis(gui)[소스]

위젯이 표시되기 전에 한 번 호출되며, 필요한 설정을 수행해야 합니다.

매개변수:

gui – calibre 메인 그래픽 사용자 인터페이스

initialize()[소스]

모든 설정 값을 초기값(설정 파일에 저장된 값)으로 되돌려야 합니다. “return” 문은 선택 사항입니다. 대화상자를 표시하지 않으려면 False를 반환하십시오.

restore_defaults()[소스]

모든 설정 값을 기본값으로 설정해야 합니다.

commit()[소스]

변경된 설정을 저장합니다. 변경에 재시작이 필요하면 True, 그렇지 않으면 False를 반환합니다. 오류가 발생했음을 나타내려면 AbortCommit 예외를 발생시키십시오. 오류가 무엇이고 어떻게 수정해야 하는지는 사용자가 알 수 있도록 직접 알려주어야 합니다.

refresh_gui(gui)[소스]

이 위젯이 커밋된 뒤 한 번 호출됩니다. GUI 가 변경된 설정을 다시 읽도록 만드는 역할을 합니다. 기본적으로 GUI 는 여러 요소를 다시 초기화하므로, 대부분의 위젯은 이 메서드를 사용할 필요가 없습니다.

initial_tab_changed()[소스]

처음 표시될 탭이 위젯이 보이기 전, 하지만 초기화된 뒤에 변경되면 호출됩니다.

class calibre.gui2.preferences.ConfigWidgetBase(parent=None)[소스]

체크박스, 콤보 상자, 텍스트 필드 등 표준 설정 위젯을 쉽게 추가할 수 있는 코드를 담은 기본 클래스입니다. register() 메서드를 참조하십시오.

이 클래스는 등록된 설정에 대해 변경 알림, 기본값 복원, GUI 객체와 설정 객체 간 변환 등을 자동으로 처리합니다.

설정 위젯이 이 클래스를 상속하지만 등록되지 않은 설정도 포함한다면, ConfigWidgetInterface 메서드를 재정의하고 그 안에서 기본 클래스 메서드를 호출해야 합니다.

changed_signal

사용자가 이 위젯에서 값을 변경할 때마다 이 시그널을 발생시켜야 합니다.

supports_restoring_to_defaults = True

restore_to_defaults() 메서드가 구현되어 있는 경우에만 True로 설정하십시오.

restart_critical = False

True이면 환경설정 대화상자는 사용자가 더 이상의 환경설정을 설정하지 못하게 합니다. commit() 이 True를 반환할 때만 효과가 있습니다.

register(name, config_obj, gui_name=None, choices=None, restart_required=False, empty_string_is_None=True, setting=<class 'calibre.gui2.preferences.Setting'>)[소스]

설정을 등록합니다.

매개변수:
  • name – 설정 이름

  • config_obj – 이 설정을 읽고 쓰는 설정 객체

  • gui_name – 설정을 변경하는 인터페이스를 제공하는 GUI 객체의 이름입니다. 기본값은 'opt_' + name 으로 가정합니다.

  • choices – 이 설정이 다중 선택(콤보박스) 기반 설정이라면, 선택지 목록입니다. 목록은 [(gui name, value), ...] 형식의 두 요소 튜플 목록입니다.

  • setting – 이 설정을 관리하는 클래스입니다. 기본 클래스가 거의 모든 경우를 처리하므로, 이 매개변수는 드물게만 사용됩니다.

initialize()[소스]

모든 설정 값을 초기값(설정 파일에 저장된 값)으로 되돌려야 합니다. “return” 문은 선택 사항입니다. 대화상자를 표시하지 않으려면 False를 반환하십시오.

commit(*args)[소스]

변경된 설정을 저장합니다. 변경에 재시작이 필요하면 True, 그렇지 않으면 False를 반환합니다. 오류가 발생했음을 나타내려면 AbortCommit 예외를 발생시키십시오. 오류가 무엇이고 어떻게 수정해야 하는지는 사용자가 알 수 있도록 직접 알려주어야 합니다.

restore_defaults(*args)[소스]

모든 설정 값을 기본값으로 설정해야 합니다.