Giter Club home page Giter Club logo

whiskyechobravo / kerko Goto Github PK

View Code? Open in Web Editor NEW
283.0 11.0 35.0 3.15 MB

A web application component that provides a faceted search interface for bibliographies managed with Zotero.

Home Page: https://whiskyechobravo.github.io/kerko/

License: GNU General Public License v3.0

Python 75.60% CSS 0.43% JavaScript 1.24% Jinja 22.13% Shell 0.60%
zotero zotero-api bibliography search-interface python bibliographies flask flask-blueprint academia scholar

kerko's People

Contributors

aormazabal avatar davidlesieur avatar mmoole 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  avatar  avatar

kerko's Issues

Sync process

I have a very trivial question about the synchronization process.
As I read from the documentation, on the first startup I have to run the flask kerko sync command. In case my Zotero collection is updated, are subsequent updates automatic, or do I have to run the flask kerko sync command again?
In the second case, is there any way to automate the process?

Database implementation

First of all, thank you for this amazing piece of software.... this is not an issue but just a question.
If I well understand, Kerko does not need a database instance to collect Zotero data. Yet, sometimes it could be useful.
Is there any parameter to say Kerko to store (and update) a Zotero citation key in a database model?

thank you in advance

Kerko with a large database - Incremental sync?

Hi there,

first of all thanks for this amazing piece of software. For a project I am working in, we need to publish a relatively large zotero database and make it searchable. Kerko seems to be the best fit for the job, but apparently we may have to index up to 450k items. I am wondering if there are any issues you may envision deploying this with kerko. I've been syncing some libraries I have (about 5k items) and I see that this takes considerable time. I am assuming that syncing 450k probably would take weeks, which is in principle not a big deal, as long as future syncs are incremental. But I am unsure about this...

Looking to hear your opinion on this.

best regards,

Deployment on Github Pages

Hi - just came across this project and I think it's absolutely brilliant!
I host my personal website on GH Pages and was thus wondering whether it is possible to deploy directly there? Maybe there could be a GH Action that could enable that? (it's not my field of expertise, I'm just grasping at straws here).
EDIT: This could possibly rely on the Docker image.

It would make it a lot easier to deploy for us less tech-savvy people who just really want to share our thought through what we are reading (and currently I'm thinking of using a heavily filtered version for conferences, so people can find citations through a QR code that takes them to a Kerko site).

Cheers, Mikkel

Exclude attachments?

We'd like to prevent attachments (pdfs) from being present into a Kerko instance. That means:

  1. Do not download and store attachments from a Zotero library;
  2. Do not index those, consequently do not make them searchable;
  3. Also do not display any download links in the search results and notice, that is the Read document button and the Document field in the notice page

Download and store attachments

I didn't find any fetch/index related config to prevent from the attachments being exported from Zotero. Right now, the PDFs are stored in the instance/kerko/attachments folder and thus can be fetched if one knows how to forge the corresponding url.

Index attachments content

From my understanding, point (2) can be done through the config

[kerko.search_fields.core.optional.documents]
enabled = false

Display links

I could also not find any config to prevent the attachments links from being displayed into the search results and notice page. If we could tell Kerko not to download the attachments from Zotero, maybe such a config would be redundant.

So am I missing something, or is there an opportunity for improvement?

citation-label not visible

I was wondering if it would be possible to show all fields available in the overview. I have my own csl file taken from my localhost system but it seams to miss the citation-label part.

This part seams to be not working from my csl file:
<text variable="citation-label" text-case="uppercase" strip-periods="true" font-variant="normal" text-decoration="none" vertical-align="baseline" display="indent" prefix="[" suffix="]"/>

I also noticed Kerko uses its own ID code, Is this ID generated by Zotero? If so I might use this in my csl file, I just need to know its propper name.

Question: If an attachment isn't indexed in Zotero cloud, will it be indexed on the Kerko web server?

A Kerko-powered bibliography is managed using Zotero, and stored in the cloud on zotero.org

On the web server, Kerko maintains a search index, which is a copy of the Zotero library that is optimized for search.

If an attachment isn't indexed in Zotero cloud, will it be indexed on the Kerko web server?

As far as I noticed, an attachment isn't indexed in Zotero cloud, if it wasn't indexed on a local Zotero instance and synced with its index data before. So I was wondering how Kerko handles these items.

I couldn't test it enough to clarify, since the synchronization breaks for me after some missing attachments (also missing in Zotero cloud, using the official dockerized KerkoApp).

Include or exclude items based on tag(s)

Is it possible to have Kerko use a personal library, but set a collection as the top level? I really don't want to have redundant group libraries and don't pay for storage. I managed to get things somewhat working with groups and manually finding and syncing my attachments....but it's not ideal. My personal library has a lot of collections that I don't want associated with my currant usage of the project (I want to have a nice index for my computer security related stuff, but I also have non-tech items as well)...see http://tech.21h.io for my current hack working off group libraries.

Sorry if it's not very polished yet....never done much Python programming and I'm just hacking a solution...Right now I have my Zotero desktop syncing to webdav....and then I try and matchup the md5sums of my local pdf library to the dav folder to extract the pdf zip....I have like 20GB of files, so I hate to have so much redundancy.

One other solution would be if I could blacklist certain collections from showing up. Then I could simply use my personal library and use an RE black list to prevent what I didn't want included. I had hoped that some of the blacklisting of tags and children would have that effect, but so far it seems to still include the items.

Update:
I have it working the way I want right now at http://lib.21h.io (tech points there too), but I had to combine two very different collections that I don't want associated ("ANALOG" & "DIGITAL" on my site). The IT related stuff is fine, but the other stuff is more personal or associated with classes I teach and not something I want associated with my professional IT collection. My only other option right now would be to create a separate profile in Zotero. But that is a hassle. I would rather be able to have a default filter that excludes anything with a certain tag from the main index. I assume there must be some place to hook something like that in the code.

Other than that, it works awesome. I know I'm not a typical use case, but it's a good workflow for me.

Incompatibility with Jinja2 3.1 (Error importing Markup)

This is the error message:

File "/.../venv/lib/python3.10/site-packages/kerko/jinja2.py", line 13, in <module>
    from jinja2 import Markup, evalcontextfilter
ImportError: cannot import name 'Markup' from 'jinja2' (/.../venv/lib/python3.10/site-packages/jinja2/__init__.py)

pip freeze:

alembic==1.8.1
Babel==2.10.3
bibtexparser==1.4.0
Bootstrap-Flask==2.1.0
certifi==2022.9.24
charset-normalizer==2.1.1
click==8.1.3
feedparser==6.0.10
Flask==2.2.2
Flask-Babel==2.0.0
Flask-Migrate==3.1.0
Flask-SQLAlchemy==3.0.2
Flask-WTF==1.0.1
idna==3.4
itsdangerous==2.1.2
Jinja2==3.1.2
Kerko==0.8.1
Mako==1.2.3
MarkupSafe==2.1.1
psycopg2==2.9.4
pyparsing==3.0.9
python-dotenv==0.21.0
pytz==2022.5
pyzotero==1.5.5
requests==2.28.1
sgmllib3k==1.0.0
SQLAlchemy==1.4.42
urllib3==1.26.12
w3lib==2.0.1
Werkzeug==2.2.2
Whoosh==2.7.4
wrapt==1.14.1
WTForms==2.3.3

From Jinja2 3.0.1:
Fixed calling deprecated jinja2.Markup without an argument. Use markupsafe.Markup instead. #1438

Downgrading Jinja2 to version 3.0.3 fixes the problem, apparently.

Request related to general bibliography files

I just discovered Kerko and would like to use this amazing tool. Unfortunately, my bibliography is not in Zotero. Would it be possible to use Kerko without Zotero, i.e., with a local bibliography file? I assume this should be relatively easy because there is no need for authentication. It may also make the tool attractive for more/different users. Would this suggestion be in line with your vision for the Kerko project?

Crash when trying to sync a link attachment

Command flask kerko sync attachments fails if an attachment is a link. Such items have an empty contentType in Zotero, and that was not taken into account in Kerko.

Until this issue is fixed, you'll only encounter this problem with Kerko when passing an empty list as the mime_types argument to Composer.__init__(). The temporary workaround is to use None (the default), or a list of MIME types.

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.