Code Monkey home page Code Monkey logo

metron's Introduction

Metron

A commmunity created comicbook database.

๐Ÿค” Motivation

Currently the only comic book database the provides a REST API for users is Comic Vine. Unfortunately, since it's a corporately-owned service, the community that uses it has no control over the amount of resources provided to maintain it or ensure it's continued accessibility. So, I started Metron as an alternative to Comic Vine and as an educational exercise.

๐Ÿ”Š Community

Social - Matrix
Social - Mastodon

๐Ÿค Contributing

If you're interested in helping add comics to the database, head over to https://metron.cloud and read the Editing Guidelines before signing up for an account.

If you got knowledge of Python, Django or System Administation, I'm always looking for help with the technical side of the project, so please contact me.

If you have any questions or suggestions, please head over to the discussion page.

๐Ÿ‘๐Ÿป Alternatives

The project is fairly new compared to the other databases, so it might not meet your needs. Some alternatives include:

metron's People

Contributors

bpepple avatar dependabot[bot] avatar mcmikashi 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

Watchers

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

metron's Issues

Offer a Dark Mode option

Is your feature request related to a problem? Please describe.
It would be nice to offer a dark mode for the site.

Additional context
Bulma needs to add this before it can be added to the site. Progress can be tracked with this bug.

Attribution model data should be unique to prevent duplicates

Describe the bug
Right now there is no validation done on new Attribution objects to verify the data isn't duplicated.

To Reproduce
Noticed this when I update the 'Marvel Update' command, and got duplicate Attribution data.

Expected behavior
New Attribution objects shouldn't be created.

Additional context
Need to either add a unique_together constraint or other type of check.

Fuzzy/Wildcard Search

Is your feature request related to a problem? Please describe.
The Website and API produce different search results.
If you search /api/series?name=Spider-Man you'll get 2 results but search Spider-Man via the Website and you get 51 Series.

Describe the solution you'd like
Option to make it fuzzy search by passing in a param or adding a wild card.
If there is a wildcard search it's not documented in the Schema

Describe alternatives you've considered
I've tried * and % wildcards neither work.

Additional context
Add any other context or screenshots about the feature request here.

Profile image update doesn't work

Describe the bug
When editing a user profile and the users profile image is uploaded

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'Edit Profile'
  2. Click on 'Choose a File...'
  3. Click and 'Submit' button

Expected behavior
The user image is added to profile

Additional info
Form contains a file input, but is missing method=POST and enctype=multipart/form-data on the form.

Solution
Adding <form method="post" enctype="multipart/form-data">to the change_profile.html template should fix this.

Add Privacy Policy

Is your feature request related to a problem?
Nope, but it would be useful to have a privacy policy on what information is collected and if the information is disclosed to outside parties.

Data import help

I've been adding a few entries and the thing that is going to make it difficult to get lots of data in is how slow I am.

I thought perhaps that it might help if when adding a new comic the creator data gets copied over as it is often the same or simular as the previous issue. I see your after the the wider range of creators (ie editors etc) which can add up to a lot of people to manually add.

So for instance lets say I'm editing issue 5, then I want to add issue 6, I click the New Issue button* and some of the data is filled in already. Perhaps the issue and the series data but it's the Creator data that is really slow for me to import.

The concern I do see here is editor lazyness leaving data that has changed in from issue to issue, but if it helps to streamline the process then that could get more people contributing. Something that may mitigate editor lazyness here :) is although all the creators are prepolulated, have a confirm button next to each entry so the editor needs to make an active descision.

Alternativly/As well as, are there any other ways to ingest data apart from the GUI, could CSV/json files be uploaded to create issues?

*Perhaps New Issue button could stay as is and a "Next Issue" button be added that does the pre-populating

Instructions for local development

Is your feature request related to a problem? Please describe.
No it isn't.

Describe the solution you'd like
I want to get specific directions for spinning up Metron API locally for development reasons. I was able to:

  1. Clone the repo
  2. Install python3, pip3, virtualenv which are all pre-requisites for running Metron
  3. Run pipenv install to install dependencies
  4. Run pip install psycopg2-binary to install psycopg2 on macOS. #3 does not install the package and throws an error.
  5. Run python manage.py runserver to run the HTTP server?

I am stuck at 4, since there are many environment variables that need to be set, and I don't know which file to edit to add them.

Describe alternatives you've considered
N/A

Additional context
N/A

Sort credit roles alphabetically.

Is your feature request related to a problem? Please describe.
Currently in credits the roles are sorted in a random order which makes it pretty hard to find the role you are looking for.

Describe the solution you'd like
Sort the roles in an alphabetical order to make it easier to find the role you are looking for.

Wrong new week issues shown at end of year

Describe the bug
The incorrect new issues are shown at year-end.
To Reproduce
Steps to reproduce the behavior:

  1. During the last week of the year, click the New Comics link

Expected behavior
Shows the correct issue for the week

Use Marvel API to retrieve data

Is your feature request related to a problem? Please describe.
Marvel provides an api with more data (like cover image, character bios, etc), that would make it easier to add issues from Marvel.

Describe the solution you'd like
Write a django custom management command to retrieve data from Marvel.

Additional context
Need to look into whether this use meets their terms of service, but may be worthwhile to pursue since they provide more data than the ShortBoxed api.

Add filter on Series Type on Issue List search box.

Is your feature request related to a problem?
Now that TPB support has been added it makes since to add a filter on the Series Type (Issue, TPB, Graphic Novels, etc)

Describe the solution you'd like
Just add a choice field option on the Issue Search box.

[metron.cloud] Can't create an account

I tried to create an account, but never got a verification email. Something went through, because I can't create the account again with the same username.

Is the verification email broken or is it not active now?

Add universal search bar.

Is your feature request related to a problem? Please describe.
It is pretty annoying to search for individual items from browse if you don't want the sort functionality.

Describe the solution you'd like
A universal search bar between more and the communications icons would a really nice addition for easier access from anywhere on the site you may be at.

Filter Issues with Publisher ID and Series ID

Is your feature request related to a problem? Please describe.
You're able to filter the /issue endpoint using a Publisher Name and Series Name, but you're unable to filter using the id's returned from the /publisher and /series endpoints

Describe the solution you'd like
Add a filter parameter to /issue for Publisher ID and/or Series ID

Describe alternatives you've considered
You can work around this by using the rest of the information returned from the /series to fill out the params in the /issue filter

Additional context
Add any other context or screenshots about the feature request here.

Expose 'POST' request to REST API

Is your feature request related to a problem? Please describe.
No it's not related to any problem.

Describe the solution you'd like
I'm the developer of a comic book curation app called ThreeTwo

I find Metron as the most pragmatic and scalable solution for comic book metadata outside of ComicVine. That said, I was wondering if you would be open to the idea of ThreeTwo allowing its users to add comic book metadata straight from ThreeTwo to Metron, with all the necessary fields. The most obvious benefit of this approach is that contextually, the users' library is managed within ThreeTwo, so it would make sense for the metadata to "sync" with Metron, loosely speaking.

Implementation-wise ThreeTwo would simply talk through an API exposed by Metron with authentication, and would push it into whatever moderation mechanism Metron has in place.

Conceptually speaking I think this would be a win-win for both ThreeTwo and Metron.

Additional context

Screenshots here on Discord: https://discord.com/channels/895398178092900412/895398178092900416/897151450910703637

Create an api endpoint for fetching roles

Discussed in #83

Originally posted by rishighan January 5, 2022
Hello, currently as a part of integrating with Metron API through my app, I am populating the dropdown for fetching and auto-suggesting the creators, and was wondering if there is a similar endpoint for roles.

Note that in all dropdowns, the user can create/add their own values.

Illustration:

Screen Shot 2022-01-05 at 8 10 47 PM

Couple of points to think about:

  1. I think there is value in user adding their own data for fields such as creators and roles and Metron validating it to some degree.
  2. It follows from point 1 that we have some validations on the UI end too, such as character limits, etc.

Use Shortboxed for adding new comics.

New Feature
Shortboxed provides an api that has some basic information that could be used to create each week's new comics.

https://api.shortboxed.com

Solution
Create a simple class/function to import & create new issues.

Pros

  • Less information to manually add.

Cons

  • Shortboxed api only provides limited information. (i.e. no cover images, very limited creator info, etc)
  • Looks like information is from Diamond's catalog, so the information may be outdated from what is actually published.

Issue name incorrect for HC & GN

Describe the bug
The issue lists for character & creator detail views doesn't correctly identify whether the series is a Hard Cover or Graphic Nove

Expected behavior
Appends the correct identifier (GN or HC) to the issue name.

Additional context
Either need to add if statements to the appropriate templates or better yet use the __str__ for series in the template.

Add tracking capabilities to metron.

Ability to add comics to your collection and track if you have read them or not would be a really nice edition to metron, maybe something like how league of comicgeeks does.
Also being able to access this feature via an api would be nice, so that you are able to update stuff from an app built upon the api, or automatically track stuff from apps like tachiyomi.

Clicking 'Add another creator credit' on issue form kills widget above it

Description
When clicking 'Add another creator credit' on issue form kills creator autocomplete widget above it.

To Reproduce

  1. Go to the Edit Issue form
  2. Click on the Add another creator credit link
  3. Watch in horror as the creator widget above the newly created one is killed.

Expected behavior
A new credit inline form is added for the user.

Desktop (please complete the following information):

  • OS: Linux
  • Browser: Firefox
  • Version: 72.0.2

Additional context
Due to a regression in django-autocomplete-light.

Refer to this bug: yourlabs/django-autocomplete-light#1135

Series Year Began Filter

Is your feature request related to a problem? Please describe.
The /series endpoint you can filter by 'year_began' but the /issue endpoint you can't filter by 'year_began' but can by 'volume', so to do a search on the /issue endpoint you have to go to the /series to get what volume it is.

Describe the solution you'd like
Either add a filter param to /issue to include 'year_began' or add a 'volume' filter to the /series endpoint

Describe alternatives you've considered
You need to call /series to get the volume which can then be used in the /issue search

Additional context
Add any other context or screenshots about the feature request here.

Migrate tests from Unittest to Pytest

Is your feature request related to a problem?.
It would be nice to migrate the test over to pytest-django to get rid of most of the boilerplate code

Additional context
Not 100% sure if it's worth it for the time to do, but worth giving a look to see what would be involved.

Anyway, here's a link to the documentation: pytest-django

Issue Update form using wrong template.

Describe the bug
The issue update form isn't using the issue-form so that auto-slug javascript is incorrect.

To Reproduce
Steps to reproduce the behavior:

  1. Click the 'edit' button for an issue
  2. Change the issue story and and watch the slug change

Expected behavior
Uses the series title & issue number to generate a slug.
.

Publisher Imprints

Is your feature request related to a problem? Please describe.

Currently Imprints are added as Publishers, but really they should be a separate model

Describe the solution you'd like

Add a new model for Imprints.

Additional context
Not terribly tough to implement, but need to mock-up templates to make sure it's implemented correctly.

Dockerize project

Is your feature request related to a problem? Please describe.
For future migrations (change of provider, etc), it would make life easier if the project was dockerized.

Describe the solution you'd like
Title pretty much describes it.

Import Characters & Teams from Trade Paperback's reprinted issues.

Is your feature request related to a problem?
Would save some time adding information if the characters & teams were imported from the reprint issues contained in the Trade Paperback.

Describe the solution you'd like
Off the top of my head, having a button to handled this on the TPB detail view would probably be sufficient.

Additional context
If the reprint issue contains more than one story, it would most likely need to bail and inform the user they will need to enter manually that issues data.

Trade Paper Back Support

Is your feature request related to a problem?
Nope.

Describe the solution you'd like
Add support for Trade Paper Backs, which should most likely be in it's own model. Ideally, also associate individual issues included (ManyToManyField) in the TPB. Would be nice to also include creators, but without more granular story/creator data that would pretty tough.

Additional context
The toughest part will be the form widget to associate the individual issues, due to the large data-set which will cause serious performance issues if not using something similar to django-autocomplete-light.

Remove Manga from genres tab.

Remove Manga from genre tab as it might give the wrong impression that manga is currently fine to add to metron and as it is still only a feature request #138 .

Add Variants to Issue Serializer

Is your feature request related to a problem? Please describe.
Currently, variant cover/issues are not include in the Issue Serializer.

Describe the solution you'd like
Add variants for an issue to the Issue Serializer

Fix hover link color in footer.

Is your feature request related to a problem?
Currently, when hovering over a link in the footer it's not viewable since the hover link color matches the footer background color.

Describe the solution you'd like
Should be a fairly simple to add a new hover link color in the base.css.

When creating a TPB the Collection Title field is disabled

Describe the bug
When creating a Trade Paperback the Collection Title field is disabled. Currently the field in only enabled when updating an already existing Trade Paperback.

To Reproduce
Steps to reproduce the behavior:

  1. Click the New button for an Issue
  2. Select a TPB series for the Series field.

Expected behavior
When a TPB series is selected the Collection Title field should be enabled.

Possible Solutions
This most likely requires some Javascript to change the state of the Collection Title based on the Series selected by the user.

A link to Matrix in navbar

Is your feature request related to a problem? Please describe.
Would be helpful for discovery if there was link to the Matrix rooms in the navbar next to the github & mastodon icons.

Describe the solution you'd like
Currently, Font Awesome doesn't have an icon for Matrix, but once they do, just need to add a link.

Add ability to see edit history.

Is your feature request related to a problem? Please describe.
Currently you can't see what you changed or what someone else changed.

Describe the solution you'd like
A page where you can see your own edit history from your profiles drop down menu. And a page where you can see a particular pages edit history would be nice to see what was changed. And would be easier to revert any changes if they were incorrect.

Add Age Rating for Series

Is your feature request related to a problem?
It would be worthwhile to add a field for Age Rating for a series.

Describe the solution you'd like
Add an Age Rating field to the Series model with preset choices.

Reprint Information on Issue Detail should use Store Date for description text.

Describe the bug
Currently the Issue Detail template uses the Cover Date to determine whether to use 'from' or 'in' as a prefix to the Issue Name. For Trade Paperbacks this will sometimes cause an Issue to use 'in' by mistake.

To Reproduce
Steps to reproduce the behavior:

  1. Go to recent Trade Paperback that was released within 2-3 months of a series ending.

Expected behavior
All the reprints contained within a Trade Paperback use 'from' as a prefix.

Screenshots
tpb-reprints

Solution
To fix this, we can compare Store Dates, if present, to fix this.

Add ability to add diamond_id to Issue.

Is your feature request related to a problem? Please describe.

Might be useful to add a field for the diamond_id, so users could use Metron data when ordering comics.

Describe the solution you'd like
Pretty minor changes would need to be made, just a new field on the Issue model, update forms/views, and modify the Shortboxed import to include that info .

Describe alternatives you've considered
N/A

Add support for Manga

Is your feature request related to a problem?
Currently, Metron only supports US published comics, and it would be nice to add support for Manga.

Differences to take into account
Manga is read from right to left and is in black and white 99 percent of the time.
The rest is basically the same between manga and comics except for the naming convention which us as follows.

Issues in comics translate to chapters in manga which unlike comics are bundled in various magazines like weekly shonen jump which bundle in various chapters of different manga every week and they are not released standalone like comics physically ( they might be released as standalone digitally but it depends )

TPB's are Volumes in manga and are the things that are translated and released in the west.

Hard covers/Compendium more so translate to Omnibus in manga and is more so a practice of publishers translating multiple volumes from japan into 1 volume in west instead of keeping them as seperate (this might be due to various factors such trying to release them quicker if they way behind the volumes that are released in japan.) And not something that happens in japan itself afaik.

Origianl Matrix Message

Will also need to look into adding country codes & international price support.

Improve Series name filter for REST API queries.

Is your feature request related to a problem?
Currently, when querying the Series or Issue endpoints for the series_name param should split any words instead of using it as a single word. For example, a param of "Batman Superman" should be split into two words and used to filter.

Describe the solution you'd like
Should be similar to how the SearchSeriesList() View's queryset is handled:

class SearchSeriesList(SeriesList):
    def get_queryset(self):
        result = super(SearchSeriesList, self).get_queryset()
        if query := self.request.GET.get("q"):
            query_list = query.split()
            result = result.filter(
                reduce(operator.and_, (Q(name__icontains=q) for q in query_list))
            )

        return result

Issue CreateView broken

Describe the bug
The Issue CreateView() gives the following error:

RelatedObjectDoesNotExist at /issue/create/
Issue has no series.

To Reproduce
Steps to reproduce the behavior:

  1. Go to Issue List view
  2. Click the 'New' button.
  3. See error

Expected behavior
The user is shown the Create Issue Form.

Additional context
The "str" method on the model uses the {series.name} field which seems to be causing this error. Need to investigate whether this is due to a change in the most recent version of Django-2.1.4, since prior version of Django didn't cause this.

Feature Request: Series Genre Tags

Is your feature request related to a problem? Please describe.
Might be nice to add genre tags to a series, since most metadata formats provide a genre element.

Describe the solution you'd like
Would require adding a genre field either using a m2m or using a Postgres ArrayField with multiple choices

Additional context
Need to collect from the community a list of possible genre 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.