ISBNQuery 3.0.0

dotnet add package ISBNQuery --version 3.0.0
                    
NuGet\Install-Package ISBNQuery -Version 3.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ISBNQuery" Version="3.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ISBNQuery" Version="3.0.0" />
                    
Directory.Packages.props
<PackageReference Include="ISBNQuery" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ISBNQuery --version 3.0.0
                    
#r "nuget: ISBNQuery, 3.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ISBNQuery@3.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ISBNQuery&version=3.0.0
                    
Install as a Cake Addin
#tool nuget:?package=ISBNQuery&version=3.0.0
                    
Install as a Cake Tool

ISBNQuery 📚

NuGet Version License: MIT .NET Multi-Targeting

ISBNQuery é uma biblioteca C# moderna, assíncrona e multiplataforma (.NET 8.0, .NET 9.0 e .NET 10.0) para consulta de informações sobre Livros, Autores e Capas/Fotos diretamente da Open Library API.


🚀 Instalação

Instale o pacote via NuGet Package Manager ou pelo terminal com o comando:

dotnet add package ISBNQuery

Ou no Package Manager Console do Visual Studio:

Install-Package ISBNQuery

✨ Principais Recursos

  • 📖 Busca Completa de Livros: Obtenha títulos, subtítulos, autores, editoras, datas de publicação, páginas, formato físico, descrição, assuntos/tópicos, EditionKey (OLID) e WorkKey.
  • 👤 Busca de Autores: Consulte informações detalhadas de autores por chave da Open Library (ex: OL26320A) ou por pesquisa por nome (ex: "Tolkien").
  • 🖼️ Download de Capas e Fotos de Autores: Obtenha capas de livros por ISBN, OLID, ID ou fotos de autores nos tamanhos Pequeno (S), Médio (M) e Grande (L) como imagens cross-platform SkiaSharp.SKImage.
  • 🔢 Validação e Conversão de ISBN: Valide dígitos verificadores de ISBN-10 e ISBN-13 e faça a conversão bidirecional via ISBNParser.
  • ⚡ Alta Performance e Taxa de Requisição Elevada: Emissão automática do cabeçalho HTTP User-Agent respeitando os limites da Open Library de até 3 requisições por segundo.

💻 Exemplos de Uso

1. Consulta de Livro por ISBN

using ISBNQuery;

// Consulta assíncrona por ISBN-13 ou ISBN-10
Book book = await Query.SearchBookAsync("978-8551005194");

Console.WriteLine($"Título: {book.Title}");
Console.WriteLine($"Autor: {book.Author}");
Console.WriteLine($"Editora: {book.Publishers}");
Console.WriteLine($"Páginas: {book.NumberOfPages}");
Console.WriteLine($"Formato: {book.Physical_Format}");
Console.WriteLine($"OLID: {book.EditionKey}");
Console.WriteLine($"Descrição: {book.Description}");

2. Consulta de Autores (Por Chave ou Nome)

using ISBNQuery;
using ISBNQuery.Models;

// Consulta autor específico por chave OLID
AuthorInfo author = await Query.SearchAuthorAsync("OL26320A");
Console.WriteLine($"Nome: {author.Name}");
Console.WriteLine($"Nascimento: {author.BirthDate}");
Console.WriteLine($"Biografia: {author.Bio}");

// Pesquisa de autores por nome
IReadOnlyList<AuthorInfo> authors = await Query.SearchAuthorsByNameAsync("Tolkien");
foreach (var item in authors)
{
    Console.WriteLine($"[{item.Key}] {item.Name} - Obras: {item.WorkCount}");
}

3. Download de Capa de Livro e Foto de Autor

using ISBNQuery;
using ISBNQuery.Models;
using SkiaSharp;

// Download da capa de um livro em tamanho Grande (L)
using SKImage coverImage = await Query.SearchCoverAsync("9788551005194", CoverKeyType.Isbn, ImageSize.L);
Console.WriteLine($"Dimensões da capa: {coverImage.Width}x{coverImage.Height}");

// Salvar a capa em arquivo local
using var data = coverImage.Encode(SKEncodedImageFormat.Png, 100);
using var stream = File.OpenWrite("capa.png");
data.SaveTo(stream);

// Download da foto de um autor
using SKImage authorPhoto = await Query.SearchAuthorPhotoAsync("OL26320A", ImageSize.L);

4. Validação e Conversão de ISBN

using ISBNQuery;
using ISBNQuery.ISBNSearch;

// Validação de dígito verificador
var isbn13Checker = new ISBN13();
ReturnType result = isbn13Checker.ValidateISBN("9786580210015");

if (result.IsSuccess())
{
    Console.WriteLine($"ISBN Válido! ({result})");
}

// Conversão bidirecional entre ISBN-10 e ISBN-13
string isbn13 = ISBNParser.ParseISBN("658021001X");  // Retorna "9786580210015"
string isbn10 = ISBNParser.ParseISBN("9786580210015"); // Retorna "658021001X"

📋 Tabelas de Referência

Enum ReturnType (Resultados de Validação)

Nome Valor Descrição
ValidISBN13 0 ISBN-13 válido com dígito de verificação correto
InvalidISBN13 1 ISBN-13 inválido
ISBN13LengthError 2 Código ISBN-13 com tamanho incorreto (diferente de 13 dígitos)
ValidISBN10 3 ISBN-10 válido com dígito de verificação correto
InvalidISBN10 4 ISBN-10 inválido
ISBN10LengthError 5 Código ISBN-10 com tamanho incorreto (diferente de 10 dígitos)
InternalError 6 Erro interno na operação de validação
NullArgument 7 Entrada fornecida nula ou vazia
InvalidFormat 8 Formato de entrada incorreto

Nota: Utilize o método de extensão result.IsSuccess() para verificar se a validação retornou um ISBN-10 ou ISBN-13 válido.

Enum ImageSize (Tamanhos de Imagem)

Nome Valor ASCII Tamanho
S 83 ('S') Small (Pequeno)
M 77 ('M') Medium (Médio)
L 76 ('L') Large (Grande)

Enum CoverKeyType (Chaves de Capa)

Nome Descrição
Isbn Busca por código ISBN-10 ou ISBN-13
Olid Busca por chave de edição/obra/autor da Open Library
Id Busca por ID interno numérico da capa
Oclc Busca por identificador OCLC
Lccn Busca por identificador LCCN

📄 Licença e Créditos

Manoel Lira.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.0.0 146 9/16/2026
2.0.3 486 8/8/2024 2.0.3 is deprecated because it is no longer maintained.
2.0.2 672 1/14/2024 2.0.2 is deprecated because it is no longer maintained.
1.4.0 703 10/24/2023
1.3.1 727 6/3/2023
1.3.0 724 4/22/2023
1.2.0 837 1/18/2023
1.1.0 916 11/18/2022
1.0.22 1,230 5/10/2022
1.0.21 1,030 5/7/2022
1.0.1 995 5/2/2022
1.0.0 1,219 5/2/2022