Skip to content

Commit 8c6bf1e

Browse files
Remove League of Comic Geeks (#34)
While there are work arounds, League currently doesn't have a public api so its time to remove the placeholder code. It can be added back in when a reliable method exists. --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent 51976a4 commit 8c6bf1e

12 files changed

Lines changed: 188 additions & 190 deletions

File tree

.pre-commit-config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
repos:
22
- repo: https://github.com/astral-sh/ruff-pre-commit
3-
rev: v0.8.0
3+
rev: v0.8.4
44
hooks:
55
- id: ruff-format
66
- id: ruff
77
- repo: https://github.com/executablebooks/mdformat
8-
rev: 0.7.19
8+
rev: 0.7.21
99
hooks:
1010
- id: mdformat
1111
additional_dependencies:

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,6 @@ Unlike other tagging tools, Perdoo employs a manual approach when metadata files
9090
## Services
9191

9292
- [Comicvine](https://comicvine.gamespot.com) using the [Simyan](https://github.com/Metron-Project/Simyan) library.
93-
- [League of Comic Geeks](https://leagueofcomicgeeks.com) using the [Himon](https://github.com/Buried-In-Code/Himon) library.
9493
- [Marvel](https://www.marvel.com/comics) using the [Esak](https://github.com/Metron-Project/Esak) library.
9594
- [Metron](https://metron.cloud) using the [Mokkari](https://github.com/Metron-Project/Mokkari) library.
9695

docs/img/perdoo-import.svg

Lines changed: 88 additions & 72 deletions
Loading

perdoo/__main__.py

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from comicfn2dict import comicfn2dict
99
from typer import Argument, Context, Exit, Option, Typer
1010

11-
from perdoo import __version__, setup_logging
11+
from perdoo import __version__, get_cache_root, setup_logging
1212
from perdoo.archives import CBRArchive, get_archive
1313
from perdoo.cli import archive_app, settings_app
1414
from perdoo.console import CONSOLE
@@ -22,9 +22,16 @@
2222
)
2323
from perdoo.metadata import ComicInfo, MetronInfo, get_metadata
2424
from perdoo.metadata.metron_info import InformationSource
25-
from perdoo.services import BaseService, Comicvine, League, Marvel, Metron
25+
from perdoo.services import BaseService, Comicvine, Marvel, Metron
2626
from perdoo.settings import Service, Services, Settings
27-
from perdoo.utils import IssueSearch, Search, SeriesSearch, delete_empty_folders, list_files
27+
from perdoo.utils import (
28+
IssueSearch,
29+
Search,
30+
SeriesSearch,
31+
delete_empty_folders,
32+
list_files,
33+
recursive_delete,
34+
)
2835

2936
app = Typer(help="CLI tool for managing comic collections and settings.")
3037
app.add_typer(archive_app, name="archive")
@@ -66,8 +73,6 @@ def get_services(settings: Services) -> dict[Service, BaseService]:
6673
output = {}
6774
if settings.comicvine.api_key:
6875
output[Service.COMICVINE] = Comicvine(settings.comicvine)
69-
if settings.league_of_comic_geeks.client_id and settings.league_of_comic_geeks.client_secret:
70-
output[Service.LEAGUE_OF_COMIC_GEEKS] = League(settings.league_of_comic_geeks)
7176
if settings.marvel.public_key and settings.marvel.private_key:
7277
output[Service.MARVEL] = Marvel(settings.marvel)
7378
if settings.metron.username and settings.metron.password:
@@ -89,7 +94,6 @@ def get_search_details(
8994
volume=metron_info.series.volume,
9095
year=metron_info.series.start_year,
9196
comicvine=series_id if source == InformationSource.COMIC_VINE else None,
92-
league=series_id if source == InformationSource.LEAGUE_OF_COMIC_GEEKS else None,
9397
marvel=series_id if source == InformationSource.MARVEL else None,
9498
metron=series_id if source == InformationSource.METRON else None,
9599
),
@@ -101,14 +105,6 @@ def get_search_details(
101105
),
102106
None,
103107
),
104-
league=next(
105-
iter(
106-
x.value
107-
for x in metron_info.ids
108-
if x.source == InformationSource.LEAGUE_OF_COMIC_GEEKS
109-
),
110-
None,
111-
),
112108
marvel=next(
113109
iter(x.value for x in metron_info.ids if x.source == InformationSource.MARVEL),
114110
None,
@@ -169,6 +165,16 @@ def run(
169165
bool,
170166
Option("--skip-organize", help="Skip organize/moving comics to appropriate directories."),
171167
] = False,
168+
clean_cache: Annotated[
169+
bool,
170+
Option(
171+
"--clean",
172+
"-c",
173+
show_default=False,
174+
help="Clean the cache before starting the synchronization process. "
175+
"Removes all cached files.",
176+
),
177+
] = False,
172178
debug: Annotated[
173179
bool, Option("--debug", help="Enable debug mode to show extra information.")
174180
] = False,
@@ -188,8 +194,12 @@ def run(
188194
"flags.skip-clean": skip_clean,
189195
"flags.skip-rename": skip_rename,
190196
"flags.skip-organize": skip_organize,
197+
"flags.clean-cache": clean_cache,
191198
}
192199
)
200+
if clean_cache:
201+
LOGGER.info("Cleaning Cache")
202+
recursive_delete(path=get_cache_root())
193203
services = get_services(settings=settings.services)
194204
if not services and sync != SyncOption.SKIP:
195205
LOGGER.warning("No external services configured")

perdoo/services/__init__.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
__all__ = ["BaseService", "Comicvine", "League", "Marvel", "Metron"]
1+
__all__ = ["BaseService", "Comicvine", "Marvel", "Metron"]
22

33
from perdoo.services._base import BaseService
44
from perdoo.services.comicvine import Comicvine
5-
from perdoo.services.league import League
65
from perdoo.services.marvel import Marvel
76
from perdoo.services.metron import Metron

perdoo/services/comicvine.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -163,22 +163,22 @@ def load_role(value: str) -> Role:
163163
return Role.OTHER
164164

165165
return MetronInfo(
166-
ids=[Id(primary=True, source=InformationSource.COMIC_VINE, value=issue.id)],
167-
publisher=Publisher(id=series.publisher.id, name=series.publisher.name),
168-
series=Series(id=series.id, name=series.name, start_year=series.start_year),
166+
ids=[Id(primary=True, source=InformationSource.COMIC_VINE, value=str(issue.id))],
167+
publisher=Publisher(id=str(series.publisher.id), name=series.publisher.name),
168+
series=Series(id=str(series.id), name=series.name, start_year=series.start_year),
169169
collection_title=issue.name,
170170
number=issue.number,
171171
summary=issue.summary,
172172
cover_date=issue.cover_date,
173173
store_date=issue.store_date,
174-
arcs=[Arc(id=x.id, name=x.name) for x in issue.story_arcs],
175-
characters=[Resource[str](id=x.id, value=x.name) for x in issue.characters],
176-
teams=[Resource[str](id=x.id, value=x.name) for x in issue.teams],
177-
locations=[Resource[str](id=x.id, value=x.name) for x in issue.locations],
174+
arcs=[Arc(id=str(x.id), name=x.name) for x in issue.story_arcs],
175+
characters=[Resource[str](id=str(x.id), value=x.name) for x in issue.characters],
176+
teams=[Resource[str](id=str(x.id), value=x.name) for x in issue.teams],
177+
locations=[Resource[str](id=str(x.id), value=x.name) for x in issue.locations],
178178
urls=[Url(primary=True, value=issue.site_url)],
179179
credits=[
180180
Credit(
181-
creator=Resource[str](id=x.id, value=x.name),
181+
creator=Resource[str](id=str(x.id), value=x.name),
182182
roles=[
183183
Resource[Role](value=load_role(value=r.strip()))
184184
for r in re.split(r"[~\r\n,]+", x.roles)

perdoo/services/league.py

Lines changed: 0 additions & 51 deletions
This file was deleted.

perdoo/services/marvel.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -161,29 +161,29 @@ def load_role(value: str) -> Role:
161161
return Role.OTHER
162162

163163
return MetronInfo(
164-
ids=[Id(primary=True, source=InformationSource.MARVEL, value=issue.id)],
164+
ids=[Id(primary=True, source=InformationSource.MARVEL, value=str(issue.id))],
165165
publisher=Publisher(name="Marvel"),
166166
series=Series(
167-
id=series.id,
167+
id=str(series.id),
168168
name=series.title,
169169
format=load_format(value=issue.format),
170170
start_year=series.start_year,
171171
),
172172
collection_title=issue.title,
173173
number=issue.issue_number,
174-
stories=[Resource[str](id=x.id, value=x.name) for x in issue.stories],
174+
stories=[Resource[str](id=str(x.id), value=x.name) for x in issue.stories],
175175
summary=issue.description,
176176
prices=[Price(country="US", value=issue.prices.print)] if issue.prices else [],
177177
store_date=issue.dates.on_sale,
178178
page_count=issue.page_count,
179-
arcs=[Arc(id=x.id, name=x.name) for x in issue.events],
180-
characters=[Resource[str](id=x.id, value=x.name) for x in issue.characters],
179+
arcs=[Arc(id=str(x.id), name=x.name) for x in issue.events],
180+
characters=[Resource[str](id=str(x.id), value=x.name) for x in issue.characters],
181181
gtin=GTIN(isbn=issue.isbn, upc=issue.upc) if issue.isbn and issue.upc else None,
182182
age_rating=load_age_rating(value=series.rating),
183183
urls=[Url(primary=True, value=issue.urls.detail)],
184184
credits=[
185185
Credit(
186-
creator=Resource[str](id=x.id, value=x.name),
186+
creator=Resource[str](id=str(x.id), value=x.name),
187187
roles=[Resource[Role](value=load_role(value=x.role))],
188188
)
189189
for x in issue.creators

perdoo/services/metron.py

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -188,20 +188,22 @@ def load_role(value: str) -> Role:
188188
except ValueError:
189189
return Role.OTHER
190190

191-
ids = [Id(primary=True, source=InformationSource.METRON, value=issue.id)]
191+
ids = [Id(primary=True, source=InformationSource.METRON, value=str(issue.id))]
192192
if issue.cv_id:
193-
ids.append(Id(source=InformationSource.COMIC_VINE, value=issue.cv_id))
193+
ids.append(Id(source=InformationSource.COMIC_VINE, value=str(issue.cv_id)))
194+
if issue.gcd_id:
195+
ids.append(Id(source=InformationSource.GRAND_COMICS_DATABASE, value=str(issue.gcd_id)))
194196
return MetronInfo(
195197
ids=ids,
196198
publisher=Publisher(
197-
id=series.publisher.id,
199+
id=str(series.publisher.id),
198200
name=series.publisher.name,
199-
imprint=Resource[str](id=series.imprint.id, value=series.imprint.name)
201+
imprint=Resource[str](id=str(series.imprint.id), value=series.imprint.name)
200202
if series.imprint
201203
else None,
202204
),
203205
series=Series(
204-
id=series.id,
206+
id=str(series.id),
205207
name=series.name,
206208
sort_name=series.sort_name,
207209
volume=series.volume,
@@ -216,21 +218,23 @@ def load_role(value: str) -> Role:
216218
cover_date=issue.cover_date,
217219
store_date=issue.store_date,
218220
page_count=issue.page_count or 0,
219-
genres=[Resource[str](id=x.id, value=x.name) for x in issue.series.genres],
220-
arcs=[Arc(id=x.id, name=x.name) for x in issue.arcs],
221-
characters=[Resource[str](id=x.id, value=x.name) for x in issue.characters],
222-
teams=[Resource[str](id=x.id, value=x.name) for x in issue.teams],
223-
universes=[Universe(id=x.id, name=x.name) for x in issue.universes],
221+
genres=[Resource[str](id=str(x.id), value=x.name) for x in issue.series.genres],
222+
arcs=[Arc(id=str(x.id), name=x.name) for x in issue.arcs],
223+
characters=[Resource[str](id=str(x.id), value=x.name) for x in issue.characters],
224+
teams=[Resource[str](id=str(x.id), value=x.name) for x in issue.teams],
225+
universes=[Universe(id=str(x.id), name=x.name) for x in issue.universes],
224226
gtin=GTIN(isbn=issue.isbn or None, upc=issue.upc or None)
225227
if issue.isbn or issue.upc
226228
else None,
227229
age_rating=AgeRating.load(value=issue.rating.name),
228-
reprints=[Resource[str](id=x.id, value=x.issue) for x in issue.reprints],
230+
reprints=[Resource[str](id=str(x.id), value=x.issue) for x in issue.reprints],
229231
urls=[Url(primary=True, value=issue.resource_url)],
230232
credits=[
231233
Credit(
232-
creator=Resource[str](id=x.id, value=x.creator),
233-
roles=[Resource[Role](id=r.id, value=load_role(value=r.name)) for r in x.role],
234+
creator=Resource[str](id=str(x.id), value=x.creator),
235+
roles=[
236+
Resource[Role](id=str(r.id), value=load_role(value=r.name)) for r in x.role
237+
],
234238
)
235239
for x in issue.credits
236240
],

perdoo/settings.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
__all__ = [
22
"ComicInfo",
33
"Comicvine",
4-
"LeagueOfComicGeeks",
54
"Marvel",
65
"Metadata",
76
"Metron",
@@ -71,12 +70,6 @@ class Comicvine(SettingsModel):
7170
api_key: str | None = None
7271

7372

74-
class LeagueOfComicGeeks(SettingsModel):
75-
client_id: str | None = None
76-
client_secret: str | None = None
77-
access_token: str | None = None
78-
79-
8073
class Marvel(SettingsModel):
8174
public_key: str | None = None
8275
private_key: str | None = None
@@ -89,7 +82,6 @@ class Metron(SettingsModel):
8982

9083
class Service(Enum):
9184
COMICVINE = "Comicvine"
92-
LEAGUE_OF_COMIC_GEEKS = "League of Comic Geeks"
9385
MARVEL = "Marvel"
9486
METRON = "Metron"
9587

@@ -106,7 +98,6 @@ def __str__(self) -> str:
10698

10799
class Services(SettingsModel):
108100
comicvine: Comicvine = Comicvine()
109-
league_of_comic_geeks: LeagueOfComicGeeks = LeagueOfComicGeeks()
110101
marvel: Marvel = Marvel()
111102
metron: Metron = Metron()
112103
order: tuple[Service, ...] = (Service.METRON, Service.MARVEL, Service.COMICVINE)

0 commit comments

Comments
 (0)