Krita Source Code Documentation
Loading...
Searching...
No Matches
CPMT_Comic_Book_Info_Exporter.py
Go to the documentation of this file.
1"""
2SPDX-FileCopyrightText: 2018 Wolthera van Hövell tot Westerflier <griffinvalley@gmail.com>
3
4This file is part of the Comics Project Management Tools(CPMT).
5
6SPDX-License-Identifier: GPL-3.0-or-later
7"""
8
9"""
10Another metadata format but then a json dump stored into the zipfile comment.
11The logic here being that the zipfile information can be read quicker.
12Doesn't seem to be supported much. :/ (except by comicbooklovers, which is dead...
13https://code.google.com/archive/p/comicbookinfo/wikis/Example.wiki
14
15https://docs.google.com/document/pub?id=1Tu9eoPWc_8SPgxx5J4-6mEaaRWLLv-bEA8i_jcIe3IE
16
17Missing:
18
19numberOfIssues
20numberOfVolumes
21rating (1-5)
22country
23"""
24
25import json
26try:
27 from PyQt6.QtCore import QDateTime, QDate, Qt, QLocale
28except:
29 from PyQt5.QtCore import QDateTime, QDate, Qt, QLocale
30
31def writeJson(configDictionary = {}):
32 basedata = {}
33 metadata = {}
34 authorList = []
35 taglist = []
36 listOfRoles = ["Writer", "Inker", "Creator", "Editor", "Cartoonist", "Colorist", "Letterer", "Penciller", "Painter", "Cover", "Artist"]
37
38 if "authorList" in configDictionary.keys():
39 for authorE in range(len(configDictionary["authorList"])):
40 author = {}
41
42 authorDict = configDictionary["authorList"][authorE]
43 stringName = []
44 if "last-name" in authorDict.keys():
45 stringName.append(authorDict["last-name"])
46 if "first-name" in authorDict.keys():
47 stringName.append(authorDict["first-name"])
48 if "nickname" in authorDict.keys():
49 stringName.append("(" + authorDict["nickname"] + ")")
50 author["person"] = ",".join(stringName)
51 if "role" in authorDict.keys():
52 role = str(authorDict["role"]).title()
53 if "editor" in role.lower():
54 role = "Editor"
55 if "cover" in role.lower():
56 role = "Cover"
57 if role in listOfRoles:
58 author["role"] = role
59 authorList.append(author)
60
61 if "characters" in configDictionary.keys():
62 for character in configDictionary["characters"]:
63 taglist.append(character)
64 if "format" in configDictionary.keys():
65 for item in configDictionary["format"]:
66 taglist.append(item)
67 if "otherKeywords" in configDictionary.keys():
68 for item in configDictionary["otherKeywords"]:
69 taglist.append(item)
70
71 if "seriesName" in configDictionary.keys():
72 metadata["series"] = configDictionary["seriesName"]
73 if "title" in configDictionary.keys():
74 metadata["title"] = configDictionary["title"]
75 else:
76 metadata["title"] = "Unnamed comic"
77 if "publisherName" in configDictionary.keys():
78 metadata["publisher"] = configDictionary["publisherName"]
79 if "publishingDate" in configDictionary.keys():
80 date = QDate.fromString(configDictionary["publishingDate"], Qt.DateFormat.ISODate)
81 metadata["publicationMonth"] = date.month()
82 metadata["publicationYear"] = date.year()
83 if "seriesNumber" in configDictionary.keys():
84 metadata["issue"] = configDictionary["seriesNumber"]
85 if "seriesVolume" in configDictionary.keys():
86 metadata["volume"] = configDictionary["seriesVolume"]
87 if "genre" in configDictionary.keys():
88 if isinstance(configDictionary["genre"], dict):
89 listKeys = []
90 for key in configDictionary["genre"].keys():
91 listKeys.append(key)
92 metadata["genre"] = listKeys
93 else:
94 metadata["genre"] = configDictionary["genre"]
95 if "language" in configDictionary.keys():
96 metadata["language"] = QLocale.languageToString(QLocale(configDictionary["language"]).language())
97
98 metadata["credits"] = authorList
99
100 metadata["tags"] = taglist
101 if "summary" in configDictionary.keys():
102 metadata["comments"] = configDictionary["summary"]
103 else:
104 metadata["comments"] = "File generated without summary"
105
106 #
107
108 basedata["appID"] = "Krita"
109 basedata["lastModified"] = QDateTime.currentDateTimeUtc().toString(Qt.DateFormat.ISODate)
110 basedata["ComicBookInfo/1.0"] = metadata
111
112
113 return json.dumps(basedata)