PageSourceSearch

https://metron-project.github.io/assets/js/8e48a4db.a693f9ca.js

js metron-project.github.io collected 2026-10-03 09:39:23 UTC 8,261 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkmetron_project_github_io=self.webpackChunkmetron_project_github_io||[]).push([[8763],{4807:e=>{e.exports=JSON.parse('{"permalink":"/blog/metroninfo-v1","source":"@site/blog/2024-11-23-metroninfo-v1/index.md","title":"MetronInfo V1.0","description":"I\'m happy to announce the v1.0 of the","date":"2024-11-22T11:45:00.000Z","tags":[{"inline":true,"label":"metadata","permalink":"/blog/tags/metadata"},{"inline":true,"label":"comic","permalink":"/blog/tags/comic"},{"inline":true,"label":"comicvine","permalink":"/blog/tags/comicvine"},{"inline":true,"label":"metron","permalink":"/blog/tags/metron"}],"readingTime":2.77,"hasTruncateMarker":false,"authors":[{"name":"Brian Pepple","title":"Founder of the Metron Project / Code Monkey","url":"https://github.com/bpepple","imageURL":"https://github.com/bpepple.png","key":"bpepple","page":null}],"frontMatter":{"slug":"metroninfo-v1","title":"MetronInfo V1.0","date":"2024-11-22T11:45","authors":["bpepple"],"tags":["metadata","comic","comicvine","metron"]},"unlisted":false,"prevItem":{"title":"November 2024 Update","permalink":"/blog/november-2024-update"},"nextItem":{"title":"October 2024 Update","permalink":"/blog/october-2024-update"}}')},8453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>i});var o=n(6540);const r={},a=o.createContext(r);function s(e){const t=o.useContext(a);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(a.Provider,{value:t},e.children)}},9436:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>h,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>o,toc:()=>c});var o=n(4807),r=n(4848),a=n(8453);const s={slug:"metroninfo-v1",title:"MetronInfo V1.0",date:"2024-11-22T11:45",authors:["bpepple"],tags:["metadata","comic","comicvine","metron"]},i="MetronInfo.xsd v1.0",h={authorsImageUrls:[void 0]},c=[{value:"What is it?",id:"what-is-it",level:2},{value:"Is the schema only for the Metron Database?",id:"is-the-schema-only-for-the-metron-database",level:2},{value:"Where can I find the schemas?",id:"where-can-i-find-the-schemas",level:2},{value:"Is there documentation for it?",id:"is-there-documentation-for-it",level:2},{value:"How can I validate my XML?",id:"how-can-i-validate-my-xml",level:2},{value:"What software currently supports it?",id:"what-software-currently-supports-it",level:2},{value:"Future",id:"future",level:2},{value:"Thanks",id:"thanks",level:2}];function l(e){const t={a:"a",code:"code",em:"em",h2:"h2",li:"li",p:"p",pre:"pre",ul:"ul",...(0,a.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(t.p,{children:["I'm happy to announce the v1.0 of the\n",(0,r.jsx)(t.a,{href:"https://raw.githubusercontent.com/Metron-Project/metroninfo/refs/heads/master/schema/v1.0/MetronInfo.xsd",children:"MetronInfo schema"}),"\nhas been finalized and is now ready to be used by developers and consumers. So, I'll start off by answering some\nquestions (most of this will be from the projects README)."]}),"\n",(0,r.jsx)(t.h2,{id:"what-is-it",children:"What is it?"}),"\n",(0,r.jsxs)(t.p,{children:["MetronInfo is a ",(0,r.jsx)(t.em,{children:"new"})," xml document type that fixes some deficiencies that exist in the current de facto xml\nfile, ",(0,r.jsx)(t.a,{href:"https://github.com/anansi-project/comicinfo",children:"ComicInfo.xml"}),", to store metadata for a comic. Some of our\nimprovements include:"]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Addition elements to track information that are not included with the current standard."}),"\n",(0,r.jsx)(t.li,{children:"Better handling of data types. For instance, instead of using delimited strings we use arrays of elements."}),"\n",(0,r.jsx)(t.li,{children:"Elements to track where the data was obtained from."}),"\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.code,{children:"id"})," attributes for resources (Characters, Creators, etc.), so items with different names can be associated correctly."]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"is-the-schema-only-for-the-metron-database",children:"Is the schema only for the Metron Database?"}),"\n",(0,r.jsxs)(t.p,{children:["No, the schema only has ",(0,r.jsx)(t.em,{children:"Metron"})," in the name since almost every other format has ",(0,r.jsx)(t.em,{children:"Comic"})," in the name, and the\noriginating author hates naming projects, so he went with the simplest choice. \ud83d\ude04 It was designed to be used for any of\nthe comic resources (Comic Vine, AniList, etc.)"]}),"\n",(0,r.jsx)(t.h2,{id:"where-can-i-find-the-schemas",children:"Where can I find the schemas?"}),"\n",(0,r.jsxs)(t.p,{children:["Version 1.0 of the schema is located in ",(0,r.jsx)(t.a,{href:"https://github.com/Metron-Project/metroninfo/tree/master/schema",children:"schema"}),"\ndirectory"]}),"\n",(0,r.jsx)(t.h2,{id:"is-there-documentation-for-it",children:"Is there documentation for it?"}),"\n",(0,r.jsxs)(t.p,{children:["Yes, there is ",(0,r.jsx)(t.a,{href:"https://metron-project.github.io/docs/category/metroninfo",children:"documentation"}
1)," describing the elements usage\nand also a Matrix to help with age rating mapping."]}),"\n",(0,r.jsx)(t.h2,{id:"how-can-i-validate-my-xml",children:"How can I validate my XML?"}),"\n",(0,r.jsx)(t.p,{children:"It's recommended that any software that writes the XML make use of the schema to validate, so consumers of the XML\ndocument can be sure of its data. The schema use XSD 1.1, so you need to make sure your validation code uses that\ninstead of XSD 1.0."}),"\n",(0,r.jsx)(t.p,{children:"For example to validate the XML in python:"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-python",children:'from pathlib import Path\nfrom xmlschema import XMLSchema11, XMLSchemaValidationError\n\nxsd = Path("/home/user/MetronInfo.xsd")\nxml = Path("/home/user/MetronInfo.xml")\n\nschema = XMLSchema11(xsd)\ntry:\n    schema.validate(xml)\nexcept XMLSchemaValidationError as e:\n    print(f"Failed to validate XML: {e!r}")\n    exit(1)\n\n# Code to write / read the xml file\n'})}),"\n",(0,r.jsx)(t.h2,{id:"what-software-currently-supports-it",children:"What software currently supports it?"}),"\n",(0,r.jsx)(t.p,{children:"Currently, the following software does:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:[(0,r.jsx)(t.a,{href:"https://github.com/Metron-Project/metron-tagger",children:"Metron-Tagger"})," - Commandline tool to tag comic with metadata (\nMetronInfo or ComicInfo) from Metron Comic Book Database."]}),"\n"]}),"\n",(0,r.jsxs)(t.p,{children:["If you are a developer that has added support for MetronInfo.xml to your software, please create a PR to update the\nREADME\nor ",(0,r.jsx)(t.a,{href:"mailto:[email protected]?subject=MetronInfo%20Support&body=Please%20add%20the%20following%20software%20to%the%20README:%20",children:"contact me"}),"."]}),"\n",(0,r.jsx)(t.h2,{id:"future",children:"Future"}),"\n",(0,r.jsxs)(t.p,{children:["One of the goals of the project was to be responsive to the needs of the community, so if you have suggestion for\nimprovements to the schema please file a\n",(0,r.jsx)(t.a,{href:"https://github.com/Metron-Project/metroninfo/issues/new?assignees=&labels=&projects=&template=feature_request.md&title=",children:"feature request"}),",\n",(0,r.jsx)(t.a,{href:"https://github.com/Metron-Project/metroninfo/issues/new?assignees=&labels=&projects=&template=bug_report.md&title=",children:"bug report"}),",\nor start a ",(0,r.jsx)(t.a,{href:"https://github.com/Metron-Project/metroninfo/discussions",children:"discussion"}),"."]}),"\n",(0,r.jsx)(t.h2,{id:"thanks",children:"Thanks"}),"\n",(0,r.jsxs)(t.p,{children:["I'd like to thank everyone that has contributed to the schema, and in\nparticular ",(0,r.jsx)(t.a,{href:"https://github.com/ajslater",children:"AJ"}),", ",(0,r.jsx)(t.a,{href:"https://github.com/Buried-In-Code",children:"Buried-In-Code"}),",\nand ",(0,r.jsx)(t.a,{href:"https://github.com/majora2007",children:"Joe"})," who have helped out a lot in the last few months."]})]})}function d(e={}){const{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.