Compare commits
6 Commits
92a4ba3a74
...
a76a483136
| Author | SHA1 | Date | |
|---|---|---|---|
| a76a483136 | |||
| 0edee4970b | |||
| d0e84fe326 | |||
| 48656fccd9 | |||
| ebbda251d9 | |||
| 431aa9cb51 |
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
__pycache__/
|
||||||
|
*.db
|
||||||
|
*.log
|
||||||
|
*.swp
|
||||||
|
*.conf
|
||||||
|
*.json
|
||||||
|
*.yml
|
||||||
74
scripts/lib/ffxivapi.py
Normal file
74
scripts/lib/ffxivapi.py
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
from .ffxivclasses import *
|
||||||
|
import requests as req
|
||||||
|
import json
|
||||||
|
|
||||||
|
class FFXIVAPI:
|
||||||
|
__author__ = 'Anima'
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
|
||||||
|
def __init__(self) -> None:
|
||||||
|
self.BASEURL : str = 'https://xivapi.com'
|
||||||
|
|
||||||
|
class Character(FFXIVAPI):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
|
||||||
|
def __init__(self, charid: int = None, charname: tuple = None) -> None:
|
||||||
|
"""
|
||||||
|
Final Fantasy XIV Character
|
||||||
|
|
||||||
|
Use one of:
|
||||||
|
- charid (from lodestone)
|
||||||
|
- charname tuple with (charname, world)
|
||||||
|
"""
|
||||||
|
super().__init__()
|
||||||
|
self.BASEURL : str = self.BASEURL + '/character'
|
||||||
|
self.CHARID : str = str(charid)
|
||||||
|
if not charid and isinstance(charname, tuple):
|
||||||
|
self.search_char(charname)
|
||||||
|
if self.CHARID:
|
||||||
|
self.get_char()
|
||||||
|
self.CLASSES : list = [
|
||||||
|
DarkKnight(), Gunbreaker(), Paladin(), Warrior(),
|
||||||
|
Astrologian(), Sage(), Sholar(), WhiteMage(),
|
||||||
|
Dragoon(), Monk(), Ninja(), Samurai(), Reaper(),
|
||||||
|
Bard(), Dancer(), Machinist(),
|
||||||
|
BlackMage(), RedMage(), Summoner(), BlueMage(),
|
||||||
|
Botanist(), Fisher(), Miner(),
|
||||||
|
Alchemist(), Armorer(), Blacksmith(), Carpenter(),
|
||||||
|
Culinarian(), Goldsmith(), Leatherworker(), Weaver()
|
||||||
|
]
|
||||||
|
|
||||||
|
def search_char(self, char) -> None:
|
||||||
|
query = f'/search?name={char[0].replace(" ", "%20")}&server={char[1]}'
|
||||||
|
result = req.get(self.BASEURL + query)
|
||||||
|
apidata = json.loads(result.text)
|
||||||
|
if len(apidata['Results']) == 1:
|
||||||
|
self.CHARID = str(apidata['Results'][0]['ID'])
|
||||||
|
|
||||||
|
def get_char(self) -> None:
|
||||||
|
result = req.get(self.BASEURL + '/' + self.CHARID)
|
||||||
|
self.APIDATA = json.loads(result.text)
|
||||||
|
self.NAME = self.APIDATA['Character']['Name']
|
||||||
|
self.WORLD = self.APIDATA['Character']['Server']
|
||||||
|
self.FC = self.APIDATA['Character']['FreeCompanyName']
|
||||||
|
self.FCID = self.APIDATA['Character']['FreeCompanyId']
|
||||||
|
|
||||||
|
def map_classes(self):
|
||||||
|
for apicls in self.APIDATA['Character']['ClassJobs']:
|
||||||
|
for cls in self.CLASSES:
|
||||||
|
if apicls['JobID'] == cls.FFXIVAPIID:
|
||||||
|
if apicls['Level'] > 0:
|
||||||
|
cls.LEVEL = apicls['Level']
|
||||||
|
break
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
# anima = Character(29859367)
|
||||||
|
anima = Character(charname=('Anima Ira', 'Omega'))
|
||||||
|
|
||||||
|
anima.map_classes()
|
||||||
|
sum = 0
|
||||||
|
for cls in anima.CLASSES:
|
||||||
|
if isinstance(cls, (Heal, Tank)):
|
||||||
|
sum += cls.LEVEL
|
||||||
|
print(cls.ROLE, cls.NAME, cls.LEVEL)
|
||||||
|
print(sum)
|
||||||
396
scripts/lib/ffxivclasses.py
Normal file
396
scripts/lib/ffxivclasses.py
Normal file
@@ -0,0 +1,396 @@
|
|||||||
|
|
||||||
|
####################################################################################################
|
||||||
|
# Main Class #
|
||||||
|
####################################################################################################
|
||||||
|
class FFXIVCLASS:
|
||||||
|
__author__ = 'Anima'
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSROLE : str = {'E': 'None', 'D': 'None'}
|
||||||
|
CLASSNAME : str = {'E': 'None', 'D': 'None'}
|
||||||
|
|
||||||
|
def __init__(self, language: str = 'D') -> None:
|
||||||
|
self.LANG : str = language
|
||||||
|
self.MAXLVL : int = 90
|
||||||
|
self.ROLE : dict = self.CLASSROLE[self.LANG]
|
||||||
|
self.NAME : dict = self.CLASSNAME[self.LANG]
|
||||||
|
|
||||||
|
####################################################################################################
|
||||||
|
# Tanks #
|
||||||
|
####################################################################################################
|
||||||
|
class Tank(FFXIVCLASS):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSROLE : dict = {'E': 'Tank', 'D': 'Verteidiger'}
|
||||||
|
|
||||||
|
def __init__(self, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
|
||||||
|
class DarkKnight(Tank):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Dark Knight', 'D': 'Dunkelritter'}
|
||||||
|
CLASSHORT : dict = {'E': 'DRK', 'D': 'DKR'}
|
||||||
|
FFXIVAPIID : int = 32
|
||||||
|
|
||||||
|
def __init__(self,level: int = 30, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Gunbreaker(Tank):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Gunbreaker', 'D': 'Revolverklinge'}
|
||||||
|
CLASSHORT : dict = {'E': 'GNB', 'D': 'REV'}
|
||||||
|
FFXIVAPIID : int = 37
|
||||||
|
|
||||||
|
def __init__(self,level: int = 60, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Paladin(Tank):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Paladin', 'D': 'Paladin'}
|
||||||
|
CLASSHORT : dict = {'E': 'PLD', 'D': 'PLD'}
|
||||||
|
FFXIVAPIID : int = 19
|
||||||
|
|
||||||
|
def __init__(self,level: int = 0, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Warrior(Tank):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Warrior', 'D': 'Krieger'}
|
||||||
|
CLASSHORT : dict = {'E': 'WAR', 'D': 'KRG'}
|
||||||
|
FFXIVAPIID : int = 21
|
||||||
|
|
||||||
|
def __init__(self,level: int = 0, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
####################################################################################################
|
||||||
|
# Healers #
|
||||||
|
####################################################################################################
|
||||||
|
class Heal(FFXIVCLASS):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSROLE : dict = {'E': 'Healer', 'D': 'Heiler'}
|
||||||
|
|
||||||
|
def __init__(self, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
|
||||||
|
class Astrologian(Heal):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Astrologian', 'D': 'Astrologe'}
|
||||||
|
CLASSHORT : dict = {'E': 'AST', 'D': 'AST'}
|
||||||
|
FFXIVAPIID : int = 33
|
||||||
|
|
||||||
|
def __init__(self,level: int = 30, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Sage(Heal):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Sage', 'D': 'Weiser'}
|
||||||
|
CLASSHORT : dict = {'E': 'SGE', 'D': 'WEI'}
|
||||||
|
FFXIVAPIID : int = 40
|
||||||
|
|
||||||
|
def __init__(self,level: int = 70, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Sholar(Heal):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Sholar', 'D': 'Gelehrte'}
|
||||||
|
CLASSHORT : dict = {'E': 'SCH', 'D': 'GLT'}
|
||||||
|
FFXIVAPIID : int = 28
|
||||||
|
|
||||||
|
def __init__(self,level: int = 70, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class WhiteMage(Heal):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'White Mage', 'D': 'Weißmagier'}
|
||||||
|
CLASSHORT : dict = {'E': 'WHM', 'D': 'WMA'}
|
||||||
|
FFXIVAPIID : int = 24
|
||||||
|
|
||||||
|
def __init__(self,level: int = 0, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
####################################################################################################
|
||||||
|
# Damage Dealer #
|
||||||
|
####################################################################################################
|
||||||
|
#--------------------------------------------> Meeles <--------------------------------------------#
|
||||||
|
class Melee(FFXIVCLASS):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSROLE : dict = {'E': 'Melee', 'D': 'Nahkämpfer'}
|
||||||
|
|
||||||
|
def __init__(self, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
|
||||||
|
class Dragoon(Melee):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Dragoon', 'D': 'Dragoon'}
|
||||||
|
CLASSHORT : dict = {'E': 'DRG', 'D': 'DRG'}
|
||||||
|
FFXIVAPIID : int = 22
|
||||||
|
|
||||||
|
def __init__(self,level: int = 0, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Monk(Melee):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Monk', 'D': 'Mönch'}
|
||||||
|
CLASSHORT : dict = {'E': 'MNK', 'D': 'MÖN'}
|
||||||
|
FFXIVAPIID : int = 20
|
||||||
|
|
||||||
|
def __init__(self,level: int = 0, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Ninja(Melee):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Ninja', 'D': 'Ninja'}
|
||||||
|
CLASSHORT : dict = {'E': 'NIN', 'D': 'NIN'}
|
||||||
|
FFXIVAPIID : int = 30
|
||||||
|
|
||||||
|
def __init__(self,level: int = 0, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Samurai(Melee):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Samurai', 'D': 'Samurai'}
|
||||||
|
CLASSHORT : dict = {'E': 'SAM', 'D': 'SAM'}
|
||||||
|
FFXIVAPIID : int = 34
|
||||||
|
|
||||||
|
def __init__(self,level: int = 50, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Reaper(Melee):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Reaper', 'D': 'Schnitter'}
|
||||||
|
CLASSHORT : dict = {'E': 'RPR', 'D': 'SNT'}
|
||||||
|
FFXIVAPIID : int = 39
|
||||||
|
|
||||||
|
def __init__(self,level: int = 70, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
#--------------------------------------------> Ranges <--------------------------------------------#
|
||||||
|
class Range(FFXIVCLASS):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSROLE : dict = {'E': 'Range', 'D': 'Fernkämpfer'}
|
||||||
|
|
||||||
|
def __init__(self, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
|
||||||
|
class Bard(Range):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Bard', 'D': 'Barde'}
|
||||||
|
CLASSHORT : dict = {'E': 'BRD', 'D': 'BRD'}
|
||||||
|
FFXIVAPIID : int = 23
|
||||||
|
|
||||||
|
def __init__(self,level: int = 0, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Dancer(Range):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Dancer', 'D': 'Tänzer'}
|
||||||
|
CLASSHORT : dict = {'E': 'DCR', 'D': 'TÄN'}
|
||||||
|
FFXIVAPIID : int = 38
|
||||||
|
|
||||||
|
def __init__(self,level: int = 60, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Machinist(Range):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Machinist', 'D': 'Maschinist'}
|
||||||
|
CLASSHORT : dict = {'E': 'MCH', 'D': 'MCH'}
|
||||||
|
FFXIVAPIID : int = 31
|
||||||
|
|
||||||
|
def __init__(self,level: int = 30, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
#---------------------------------------------> Mage <---------------------------------------------#
|
||||||
|
class Mage(FFXIVCLASS):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSROLE : dict = {'E': 'Mage', 'D': 'Magier'}
|
||||||
|
|
||||||
|
def __init__(self, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
|
||||||
|
class BlackMage(Mage):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Black Mage', 'D': 'Schwarzmagier'}
|
||||||
|
CLASSHORT : dict = {'E': 'BMA', 'D': 'SMA'}
|
||||||
|
FFXIVAPIID : int = 25
|
||||||
|
|
||||||
|
def __init__(self,level: int = 70, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class RedMage(Mage):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Red Mage', 'D': 'Rotmagier'}
|
||||||
|
CLASSHORT : dict = {'E': 'RDM', 'D': 'RMA'}
|
||||||
|
FFXIVAPIID : int = 35
|
||||||
|
|
||||||
|
def __init__(self,level: int = 70, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Summoner(Mage):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Summoner', 'D': 'Beschwörer'}
|
||||||
|
CLASSHORT : dict = {'E': 'SUM', 'D': 'BSW'}
|
||||||
|
FFXIVAPIID : int = 27
|
||||||
|
|
||||||
|
def __init__(self,level: int = 70, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class BlueMage(Mage):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Blue Mage', 'D': 'Blaumagier'}
|
||||||
|
CLASSHORT : dict = {'E': 'BLU', 'D': 'BLA'}
|
||||||
|
FFXIVAPIID : int = 36
|
||||||
|
|
||||||
|
def __init__(self,level: int = 70, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.MAXLVL : int = 70
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
####################################################################################################
|
||||||
|
# Collectors #
|
||||||
|
####################################################################################################
|
||||||
|
class Collector(FFXIVCLASS):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSROLE : dict = {'E': 'Collector', 'D': 'Sammler'}
|
||||||
|
|
||||||
|
def __init__(self, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
|
||||||
|
class Botanist(Collector):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Botanis', 'D': 'Gärtner'}
|
||||||
|
CLASSHORT : dict = {'E': 'BTN', 'D': 'G?'}
|
||||||
|
FFXIVAPIID : int = 17
|
||||||
|
|
||||||
|
def __init__(self,level: int = 0, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Fisher(Collector):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Fisher', 'D': 'Fischer'}
|
||||||
|
CLASSHORT : dict = {'E': 'FSH', 'D': 'FIS'}
|
||||||
|
FFXIVAPIID : int = 18
|
||||||
|
|
||||||
|
def __init__(self,level: int = 0, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Miner(Collector):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Miner', 'D': 'Minenarbeiter'}
|
||||||
|
CLASSHORT : dict = {'E': 'MIN', 'D': 'MIN'}
|
||||||
|
FFXIVAPIID : int = 16
|
||||||
|
|
||||||
|
def __init__(self,level: int = 0, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
####################################################################################################
|
||||||
|
# Crafters #
|
||||||
|
####################################################################################################
|
||||||
|
class Crafter(FFXIVCLASS):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSROLE : dict = {'E': 'Carafter', 'D': 'Handwerker'}
|
||||||
|
|
||||||
|
def __init__(self, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
|
||||||
|
class Alchemist(Crafter):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Alchemist', 'D': 'Alchimist'}
|
||||||
|
CLASSHORT : dict = {'E': 'ALC', 'D': 'ALC'}
|
||||||
|
FFXIVAPIID : int = 14
|
||||||
|
|
||||||
|
def __init__(self,level: int = 0, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Armorer(Crafter):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Armorer', 'D': 'Plattner'}
|
||||||
|
CLASSHORT : dict = {'E': 'ARM', 'D': 'PLT'}
|
||||||
|
FFXIVAPIID : int = 10
|
||||||
|
|
||||||
|
def __init__(self,level: int = 0, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Blacksmith(Crafter):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Blacksmith', 'D': 'Grobschmied'}
|
||||||
|
CLASSHORT : dict = {'E': 'BSM', 'D': 'GRS'}
|
||||||
|
FFXIVAPIID : int = 9
|
||||||
|
|
||||||
|
def __init__(self,level: int = 0, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Carpenter(Crafter):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Carpenter', 'D': 'Zimmerer'}
|
||||||
|
CLASSHORT : dict = {'E': 'CRP', 'D': 'ZIM'}
|
||||||
|
FFXIVAPIID : int = 8
|
||||||
|
|
||||||
|
def __init__(self,level: int = 0, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Culinarian(Crafter):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Culinarian', 'D': 'Gourmet'}
|
||||||
|
CLASSHORT : dict = {'E': 'CUL', 'D': 'GUR'}
|
||||||
|
FFXIVAPIID : int = 15
|
||||||
|
|
||||||
|
def __init__(self,level: int = 0, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Goldsmith(Crafter):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Goldsmith', 'D': 'Goldschmied'}
|
||||||
|
CLASSHORT : dict = {'E': 'GSM', 'D': 'GSM'}
|
||||||
|
FFXIVAPIID : int = 11
|
||||||
|
|
||||||
|
def __init__(self,level: int = 0, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Leatherworker(Crafter):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Leatherworker', 'D': 'Gerber'}
|
||||||
|
CLASSHORT : dict = {'E': 'LTW', 'D': 'GRB'}
|
||||||
|
FFXIVAPIID : int = 12
|
||||||
|
|
||||||
|
def __init__(self,level: int = 0, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
class Weaver(Crafter):
|
||||||
|
__version__ = '0.0.1'
|
||||||
|
CLASSNAME : dict = {'E': 'Weaver', 'D': 'Weber'}
|
||||||
|
CLASSHORT : dict = {'E': 'WVR', 'D': 'WEB'}
|
||||||
|
FFXIVAPIID : int = 13
|
||||||
|
|
||||||
|
def __init__(self,level: int = 0, language: str = 'D') -> None:
|
||||||
|
super().__init__(language)
|
||||||
|
self.LEVEL : int = level
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
test = Sage(language='E')
|
||||||
Reference in New Issue
Block a user