Giter Club home page Giter Club logo

gutendex's People

Contributors

dependabot[bot] avatar garethbjohnson avatar jbuchman avatar snyk-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gutendex's Issues

user registration & authentication

Hello Gareth,

First of all thank you for providing this API to open source. I have learnt alot through perusing and manipulating some code.

I wanted to know how to register and authenticate users who then get access to particular books. I would like to register users with - username, firstname, lastname, email and passwords. I can provide the code base of what I have done.

Kindly help.

Include translators

I would really appreciate translators being included, i.e. for instance for https://www.gutenberg.org/ebooks/39402
{
id: 39402,
title: 'Jeremiah: A Drama in Nine Scenes',
authors: [ { name: 'Zweig, Stefan', birth_year: 1881, death_year: 1942 } ],
translators: [{name: 'Cedar, Paul', birth_year: 1880, death_year: 1972 }, {name: 'Eden, Paul', birth_year: 1865, death_year: 1944 }]
...
}

Thanks in advance & for this great project in general

Leonard

Fetch book contents

Is there an easy way to use the urls in "formats" to fetch a books contents. Im trying to use the url from "text/plain", but I get CORS errors from Gutenberg. Is the only way to fetch the url in my backend then redirect the results back to my frontend?

Support Older Kindles

Hi,
Thanks for making this great resource! I noticed that Gutendex's API only gave the KF8 file format for Kindles, which is only compatible with newer Kindles. However, on Gutenberg's official website, they have two files, "Kindle" and "older Kindles."
I'm not sure if Gutenberg's downloadable API supports this, but I was wondering if it might be possible to include these files as well.
Thank you!
EDIT: Right now, I'm just replacing ".kf8" with ".kindle" because of Gutenberg's file naming convention, but I'm not sure if there's a better way to do this.

I got error installing the package in ubuntu server

CASE: Im following the guide until the step 4 during installing requirements.txt

  Building wheel for psycopg2 (setup.py) ... error
  error: subprocess-exited-with-error
  
  × python setup.py bdist_wheel did not run successfully.
  │ exit code: 1
  ╰─> [89 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-3.10
      creating build/lib.linux-x86_64-3.10/psycopg2
      copying lib/pool.py -> build/lib.linux-x86_64-3.10/psycopg2
      copying lib/_range.py -> build/lib.linux-x86_64-3.10/psycopg2
      copying lib/_ipaddress.py -> build/lib.linux-x86_64-3.10/psycopg2
      copying lib/tz.py -> build/lib.linux-x86_64-3.10/psycopg2
      copying lib/sql.py -> build/lib.linux-x86_64-3.10/psycopg2
      copying lib/_json.py -> build/lib.linux-x86_64-3.10/psycopg2
      copying lib/extensions.py -> build/lib.linux-x86_64-3.10/psycopg2
      copying lib/extras.py -> build/lib.linux-x86_64-3.10/psycopg2
      copying lib/psycopg1.py -> build/lib.linux-x86_64-3.10/psycopg2
      copying lib/errorcodes.py -> build/lib.linux-x86_64-3.10/psycopg2
      copying lib/__init__.py -> build/lib.linux-x86_64-3.10/psycopg2
      creating build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_cancel.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_async_keyword.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_types_basic.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_fast_executemany.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_lobject.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/testconfig.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_errcodes.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_copy.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_transaction.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_green.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_connection.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_bugX000.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_async.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_extras_dictcursor.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_notify.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_quote.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_sql.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_bug_gc.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/dbapi20.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_ipaddress.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_replication.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_cursor.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_types_extras.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/testutils.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_dates.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_psycopg2_dbapi20.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_with.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/test_module.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/dbapi20_tpc.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      copying tests/__init__.py -> build/lib.linux-x86_64-3.10/psycopg2/tests
      Skipping optional fixer: buffer
      Skipping optional fixer: idioms
      Skipping optional fixer: set_literal
      Skipping optional fixer: ws_comma
      running build_ext
      building 'psycopg2._psycopg' extension
      creating build/temp.linux-x86_64-3.10
      creating build/temp.linux-x86_64-3.10/psycopg
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/adapter_asis.c -o build/temp.linux-x86_64-3.10/psycopg/adapter_asis.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/adapter_binary.c -o build/temp.linux-x86_64-3.10/psycopg/adapter_binary.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/adapter_datetime.c -o build/temp.linux-x86_64-3.10/psycopg/adapter_datetime.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/adapter_list.c -o build/temp.linux-x86_64-3.10/psycopg/adapter_list.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/adapter_pboolean.c -o build/temp.linux-x86_64-3.10/psycopg/adapter_pboolean.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/adapter_pdecimal.c -o build/temp.linux-x86_64-3.10/psycopg/adapter_pdecimal.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/adapter_pfloat.c -o build/temp.linux-x86_64-3.10/psycopg/adapter_pfloat.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/adapter_pint.c -o build/temp.linux-x86_64-3.10/psycopg/adapter_pint.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/adapter_qstring.c -o build/temp.linux-x86_64-3.10/psycopg/adapter_qstring.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/bytes_format.c -o build/temp.linux-x86_64-3.10/psycopg/bytes_format.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/connection_int.c -o build/temp.linux-x86_64-3.10/psycopg/connection_int.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/connection_type.c -o build/temp.linux-x86_64-3.10/psycopg/connection_type.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/cursor_int.c -o build/temp.linux-x86_64-3.10/psycopg/cursor_int.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/cursor_type.c -o build/temp.linux-x86_64-3.10/psycopg/cursor_type.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/diagnostics_type.c -o build/temp.linux-x86_64-3.10/psycopg/diagnostics_type.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/error_type.c -o build/temp.linux-x86_64-3.10/psycopg/error_type.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/green.c -o build/temp.linux-x86_64-3.10/psycopg/green.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/libpq_support.c -o build/temp.linux-x86_64-3.10/psycopg/libpq_support.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/lobject_int.c -o build/temp.linux-x86_64-3.10/psycopg/lobject_int.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/lobject_type.c -o build/temp.linux-x86_64-3.10/psycopg/lobject_type.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/microprotocols.c -o build/temp.linux-x86_64-3.10/psycopg/microprotocols.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/microprotocols_proto.c -o build/temp.linux-x86_64-3.10/psycopg/microprotocols_proto.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/notify_type.c -o build/temp.linux-x86_64-3.10/psycopg/notify_type.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/pqpath.c -o build/temp.linux-x86_64-3.10/psycopg/pqpath.o -Wdeclaration-after-statement
      x86_64-linux-gnu-gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.7.1 (dt dec pq3 ext lo64)" -DPG_VERSION_NUM=141000 -DHAVE_LO64=1 -I/usr/include/python3.10 -I. -I/usr/include/postgresql -I/usr/include/postgresql/14/server -c psycopg/psycopgmodule.c -o build/temp.linux-x86_64-3.10/psycopg/psycopgmodule.o -Wdeclaration-after-statement
      psycopg/psycopgmodule.c: In function ‘psyco_is_main_interp’:
      psycopg/psycopgmodule.c:685:18: error: invalid use of incomplete typedef ‘PyInterpreterState’ {aka ‘struct _is’}
        685 |     while (interp->next)
            |                  ^~
      psycopg/psycopgmodule.c:686:24: error: invalid use of incomplete typedef ‘PyInterpreterState’ {aka ‘struct _is’}
        686 |         interp = interp->next;
            |                        ^~
      error: command '/usr/bin/x86_64-linux-gnu-gcc' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for psycopg2
  Running setup.py clean for psycopg2
Failed to build psycopg2
ERROR: Could not build wheels for psycopg2, which is required to install pyproject.toml-based projects```

ubuntu@ip-172-31-29-115:~/pgserver$ 

Support POST requests

Hi,
Amazing service! Thank you so much!
Might it be possible to allow POST requests as well?

Blocked calling api from code playground

Hey there.
I am attempting to call gutendex.com using elm in the "Ellie" playground. You can experiment with going to ellie-app.com. Here is the code:

module Main exposing (main)

import Browser
import Html exposing (Html, button, div, text)
import Html.Events exposing (onClick)
import Http
import Json.Decode exposing (Decoder, field, string)


type alias Model =
    { title : Maybe String }


initialModel flags =
    ( { title = Nothing }, getBook )


getBook : Cmd Msg
getBook =
    Http.get
        { url = url
        , expect = Http.expectJson GotBook bookDecoder
        }


bookDecoder : Decoder String
bookDecoder =
    field "title" string


type Msg
    = GotBook (Result Http.Error String) -- start with just title


update : Msg -> Model -> ( Model, Cmd msg )
update msg model =
    case msg of
        GotBook (Ok title) ->
            ( { model | title = Just title }, Cmd.none )

        GotBook (Err e) ->
            ( model, Cmd.none )


view : Model -> Html Msg
view model =
    case model.title of
        Just title ->
            div [] [ text title ]

        Nothing ->
            div [] [ text "Looking..." ]


url =
    "http://gutendex.com/books/2591/"


main : Program () Model Msg
main =
    Browser.element
        { init = initialModel
        , view = view
        , update = update
        , subscriptions = \_ -> Sub.none
        }

However, in dev tools, I see I get a 'Blocked' request. I'm not sure what this means. Is your server setup to block external requests like this?

Thanks.

CORS error

Hi, I'm using your API for a project and it was working fine until now, I keep getting CORS errors, at first I thought it was my fault but I just checked the commits and in the last commit you changed some CORS variable, so maybe that's why?

imagen

Thankyou!

So i created this issue just to say a personal Thank You for creating this amazing API! ♥️ (as i couldn't find any other ways to connect with you)

I've been using your API from very long time in some of my personal python scripts etc and recently made an Android app so the general people could also benefit from the amazing book catalogue of the project Gutenberg (since the official website doesn't seems very optimised with mobile devices).

The project might not be possible or would've taken a lot of work and time without this amazing API of yours. So thanks again for creating such an useful stuff!

PS: feel free to close this issue after you see it :)

Error when updating the catalog on server

Hey, I am trying to run gutendex on an azure server but when trying to update the catalog, I get:

./manage.py updatecatalog
/tmp/8dbba6c19a61f2e/antenv/lib/python3.11/site-packages/environ/environ.py:628: UserWarning: /tmp/8dbba6c19a61f2e/gutendex/.env doesn't exist - if you're not configuring your environment separately, create one.
warnings.warn(
Starting script at 10:22:34 on September 21, 2023
Making temporary directory...
Downloading compressed catalog...
Decompressing catalog...
Detecting stale directories...
Error: [Errno 2] No such file or directory: '/tmp/8dbba6c19a61f2e/catalog_files/tmp/cache/epub'

Traceback (most recent call last):
File "/tmp/8dbba6c19a61f2e/./manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "/tmp/8dbba6c19a61f2e/antenv/lib/python3.11/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File "/tmp/8dbba6c19a61f2e/antenv/lib/python3.11/site-packages/django/core/management/__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/tmp/8dbba6c19a61f2e/antenv/lib/python3.11/site-packages/django/core/management/base.py", line 323, in run_from_argv
self.execute(*args, **cmd_options)
File "/tmp/8dbba6c19a61f2e/antenv/lib/python3.11/site-packages/django/core/management/base.py", line 364, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/8dbba6c19a61f2e/books/management/commands/updatecatalog.py", line 345, in handle
send_log_email()
File "/tmp/8dbba6c19a61f2e/books/management/commands/updatecatalog.py", line 260, in send_log_email
send_mail(
File "/tmp/8dbba6c19a61f2e/antenv/lib/python3.11/site-packages/django/core/mail/__init__.py", line 60, in send_mail
return mail.send()
^^^^^^^^^^^
File "/tmp/8dbba6c19a61f2e/antenv/lib/python3.11/site-packages/django/core/mail/message.py", line 306, in send
return self.get_connection(fail_silently).send_messages([self])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/8dbba6c19a61f2e/antenv/lib/python3.11/site-packages/django/core/mail/backends/smtp.py", line 103, in send_messages
new_conn_created = self.open()
^^^^^^^^^^^
File "/tmp/8dbba6c19a61f2e/antenv/lib/python3.11/site-packages/django/core/mail/backends/smtp.py", line 70, in open
self.connection.login(self.username, self.password)
File "/opt/python/3.11.4/lib/python3.11/smtplib.py", line 750, in login
raise last_exception
File "/opt/python/3.11.4/lib/python3.11/smtplib.py", line 739, in login
(code, resp) = self.auth(
^^^^^^^^^^
File "/opt/python/3.11.4/lib/python3.11/smtplib.py", line 662, in auth
raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (530, b'Must issue a STARTTLS command first')

It seems like the main problem here is Error: [Errno 2] No such file or directory: '/tmp/8dbba6c19a61f2e/catalog_files/tmp/cache/epub'.

Do you have any idea what could cause this?

Deploy gutendex on heroku.com

Hello

I try to deploy gutendex on heroku.com. But I don't know exactly how to do it. What I did so far:

Create "Procfile" file:
release: pip install gunicorn && python manage.py migrate && python manage.py updatecatalog && python manage.py collectstatic web: gunicorn gutendex.wsgi

Catalog (DB) is now generated. But somehow Server always crash on start up:
Screenshot 2021-10-22 at 15 21 08

Maybe someone can help me?

ImportError: No module named management.commands.updatecatalog

Hi,
I tried to follow the installation guide and after this command:

./manage.py updatecatalog

I end up with this error:

Traceback (most recent call last):
File "./manage.py", line 22, in
execute_from_command_line(sys.argv)
File "/LocalPath/Python/gutendex/venv/local/lib/python2.7/site-packages/django/core/management/init.py", line 367, in execute_from_command_line
utility.execute()
File "/LocalPath/Python/gutendex/venv/local/lib/python2.7/site-packages/django/core/management/init.py", line 359, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/LocalPath/Python/gutendex/venv/local/lib/python2.7/site-packages/django/core/management/init.py", line 208, in fetch_command
klass = load_command_class(app_name, subcommand)
File "/LocalPath/Python/gutendex/venv/local/lib/python2.7/site-packages/django/core/management/init.py", line 40, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/usr/lib/python2.7/importlib/init.py", line 37, in import_module
import(name)
ImportError: No module named management.commands.updatecatalog

I'm totally noob to Django and Python, what did I do wrong ?
Thanks...

Recent Book

It will be nice if the API can call Recently added. The latest new and updated eBooks.

Thanks in advance & for this great project.

Building a React Frontend

Hey, first thanks for building and hosting a sane API for the Gutenberg project.

TL;DR;

Check out the simple react app I threw together in a few hours: https://gutenberg.netlify.com/


I wanted to let you know I recently embarked on a project to overhaul the Gutenberg UI, and was considering building both a frontend and API (which is when I encountered your project 🎉 ). Using your API I banged out a SUPER rough React frontend in a couple of hours. It needs a lot more work and it clearly has a lot of functions that are simply mocked out right now, but the popularity slider is pulling from your API and searching on a string will return the first page of results from your API (haven't done infinite scrolling or anything yet).

Let me know if you'd be interested in collaborating in some way!

File Size

Hi,
Sorry to ask so many questions. I was wondering if it might be possible to get the file size of each file. It can be helpful to estimate how long a book is :).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.