Classes
Curation
- class fpclib.Curation(curation=None, **kwargs)
- This is the base class for every kind of curation. If you want a good tutorial on how to use this class, see The Basics. Extend this class to redefine it’s methods. Constructor: - Accepts a single - Curationobject as an argument or arguments in the same format as- Curation.set_meta(). The new curation will first have it’s metadata, logo, screenshot, added args, and id deep-copied from- curation’s first if it’s available, then have that data modified with- kwargsif available. This curation object will be linked to that curation object.- Raises:
- TypeError – If - curationis not an instance of- Curation.
 
Attributes
RESERVED_APPS
- Curation.RESERVED_APPS = {'extras', 'message'}
- A set containing all of the reserved headings that cannot be used in additional applications. The check is case-insensitive, hence they are lowercase. 
ARGS
- Curation.ARGS
- A dictionary containing mappings for the arguments in - Curation.set_meta()and- Curation.get_meta()to the- Curation.metadictonary.- Here’s a table of what each argument maps to: - Meta Tag - Args - Title - title, name - Alternate Titles - alternateTitles, altTitles, alts - Library - library, lib - Series - series, ser - Developer - developer, dev - Publisher - publisher, pub - Play Mode - playMode, mode - Release Date - releaseDate, date - Version - version, ver - Languages - languages, lang - Extreme - extreme, nsfw - Tags - tags, genre - Source - source, src, url - Platform - platform, tech - Status - status, s - Application Path - applicationPath, appPath, app - Launch Command - launchCommand, launch, cmd - Game Notes - gameNotes, notes - Original Description - originalDescription, description, desc - Curation Notes - curationNotes, cnotes - You can find the description of each of these tags on the Curation Format page on the Flashpoint wiki. 
Member Fields
meta
- Curation.meta: dict
- An ordered dictionary containing all metadata for the curation. While you can modify it directly, it is recommended that you use - Curation.set_meta()and- Curation.get_meta()instead.
args
- Curation.args: dict
- A dictionary containing all arguments passed in through - Curation.set_meta()that do not map to any metadata. You can use this to pass in extra information that you want to use in- Curation.parse()or other methods for custom classes.
logo
- Curation.logo: str = None
- A url pointing to an image to be used as the logo for this curation. Any non-PNG files will be converted into PNG files when downloaded. You can modify it at will. 
ss
- Curation.ss: str = None
- A url pointing to an image to be used as the screenshot for this curation. Any non-PNG files will be converted into PNG files when downloaded. You can modify it at will. 
id
- Curation.id: str = str(uuid.uuid4())
- A string UUID identifying this curation. By default this is the name of the folder the curation will be saved to when Curation.save() is called. You can re-generate an id by using - Curation.new_id().
Methods
new_id()
- Curation.new_id()
- Generate a new uuid for this curation. - See:
 
set_meta()
- Curation.set_meta(**kwargs)
- Set the metadata with - kwargs. This method does not do error checking.- Since 1.5:
- You can also just set the metadata directly through the curation instead; e.g., - curation.title = 'Title Goes Here'
- Parameters:
- kwargs (**) – A list of arguments to set the metadata with. To see what you can use for - kwargs, see- Curation.ARGS. Any value passed in that is not in- Curation.ARGSwill still be stored and can be retrieved through- Curation.get_meta().
- Note:
- For example, to set the title of a curation you would use - curation.set_meta(title='Title Goes Here')
 
get_meta()
- Curation.get_meta(key)
- Get the metadata/args referenced by - key.- Since 1.5:
- You can also just get the metadata directly through the curation instead; e.g., - myVar = curation.title
- Parameters:
- key (str) – The name of an argument to get the value of. You can either use the keys referenced by - Curation.ARGSor the name of the argument you passed in through- Curation.set_meta().
- Returns:
- The meta referenced by - key, the data associated with it, or None if it hasn’t been set.
 
add_app()
- Curation.add_app(heading, launch, path='FPSoftware\\Flash\\flashplayer_32_sa.exe')
- Add an additional application. To add extras or a message, use - Curation.add_ext()and- Curation.add_msg()respectively.- Parameters:
- heading (str) – The name of the additional application. 
- launch (str) – The name of the launch command for the additional application. 
- path (str) – The application path for the additional application. Defaults to - FLASH.
 
- Seealso:
- The Additional Applications section of the Curation Format page. 
- Note:
- Trying to add an additional app with a heading that already exists will result in replacing it. 
- Raises:
- ValueError – If - headingis in- Curation.RESERVED_APPS.
 
add_ext()
add_msg()
del_app()
- Curation.del_app(heading)
- Delete an additional application, extras, or message. - Parameters:
- heading (str) – The name of the additional application to delete. Use “Extras” or “Message” to delete an extras or message. 
- Raises:
- KeyError – If the app doesn’t exist. 
 
get_yaml()
- Curation.get_yaml()
- Use ruamel.yaml to parse - Curation.metainto a string.- Returns:
- A yaml string with the formatted metadata. 
 
soupify()
- Curation.soupify()
- Get’s the relevant BeautifulSoup object of this curation to pass to - Curation.parse().- This method’s sole purpose is to make it possible to overwrite the process for getting the soup object for a particular url. This is useful in case certain websites have special protection preventing you from downloading pages too fast. - Returns:
- get_soup()with the- sourcepart of the metadata as it’s parameter.
 
parse()
- Curation.parse(soup)
- Parse for metadata with a soup object provided by - Curation.soupify(). By default this method does nothing and must be overwritten to give it functionality.- See:
 
get_files()
- Curation.get_files()
- Download/Create all necessary content files for this curation. By default this method downloads the file linked by all launch commands and creates all the directories necessary for them to be in. It will not raise any errors if downloading fails. - See:
 
save_image()
- Curation.save_image(url, file_name)
- Download the image from - urland save it to- file_nameas a PNG file; this method is primarily used for downloading logos and screenshots. It may be overwriten to add custom image-downloading abilities, but by default it just calls the- download_image()function.- Parameters:
- url (str) – The url location of the image to download. 
- file_name (str) – The location/name of the file to save to. 
 
- See:
 
save()
- Curation.save(use_title=False, overwrite=False, parse=False, validate=0, save_items=15)
- Save the curation to a folder with the name of - Curation.id. Consecutive calls to this method will not overwrite the previous folder, but will instead save it as “Curation (2)”, “Curation (3)”, etc.- Parameters:
- use_title (str) – If True, the folder will be generated with the title of the curation instead of its id. 
- overwrite (bool) – If True, this method will mix and overwrite files in existing curation folders instead of making the folder “Curation (2)”, “Curation (3)”, etc. 
- parse (bool) – Added in 1.3: If True, this function will call - Curation.parse()before saving metadata.
- validate (int) – Added in 1.3: Mode to validate this curation’s metadata with. 0 (default) means do not validate, 1 means flexibly validate, and 2 means rigidly validate. 
- save_items (int) – Flags determining what items to save as part of this curation. By default this is - EVERYTHING. If you wanted to save only the meta and logo, for example, use- save_items=META|LOGO.
 
- Raises:
- InvalidMetadataError – Added in 1.3: If this curation has invalid metadata and - validateis set to 1 or higher.
- See:
- EVERYTHINGand the surrounding constants, along with- get_errors()
 - The process of this method is as follows: - Create a BeautifulSoup object with - Curation.soupify().
- Call method - Curation.parse()with the soup object just created.
- New in 1.3: Validate this curation’s metadata with - Curation.get_errors()if- validateis 1 or higher. Raise an error if it’s incorrect.
- Create curation folder for the curation and set it to the working directory (the working directory will be reset in the case of any error). 
- Create meta file with - Curation.get_yaml()and download logo and screenshot through- Curation.save_image()if they are available.
- Create “content” folder and set it to the working directory. 
- Call method - Curation.get_files()to get all files necessary for the curation.
- Reset working directory. 
 - You may overwrite any of these methods to allow for custom usability. 
get_errors()
- Curation.get_errors(rigid=False)
- Validate this curation to see if it’s metadata is correct. - Parameters:
- rigid (bool) – If True, this function will make sure this Curation’s metadata is in order with the Curation Format page. By default, this function checks everything except Tags, Platform, and Application Path. Note that rigid checking will call - update()if it has not been called already or failed previously.
- Seealso:
- Returns:
- A list of problems with this curation as strings. If there are no errors with this curation, an empty list will be returned. 
- Since 1.3:
 
check_source()
- Curation.check_source()
- Validates this curation’s current source. Called by - Curation.get_errors().- Returns:
- A string of the source’s current problem or None if there is no problem. 
- Since 1.3:
 
TestCuration
BrokenCuration
DateParser
- class fpclib.DateParser(format, year=None, month=None, day=None)
- Initialize a regex-powered date parser that gets initialized with a specific format and can parse any date into the proper iso format. It does not check that the date is a real date. The constructor takes a string - formatspecifying a regex to search for in future parsed strings. Note that the regex is case insensitive. Use these macros in the format string to specify parts of the date:- “<y>” for year number to match - replaced with the capture group “(?P<year>d{4})”, “<m>” for month to match - replaced with the capture group “(?P<month>d{1,3}|[A-Za-z]+)”, and “<d>” for day to match - replaced with the capture group “(?P<day>d{1,3})” - Month and day are optional, though using day requires using month. Note that the year, month, and day are automatically padded to the right number of zeros (4, 2, 2) automatically. - If the macros don’t quite work for you, feel free to use named capture groups and the callbacks “year”, “month”, and “day”, which are called on the respective matched parts of a parsed string to turn it into the right number format to use in the returned string. If the “month” callback is not set, it defaults to - DateParser.get_month().- Parameters:
- format (str) – A string containing a regex and macros specifying how to parse strings. 
- year (func) – A function to turn the matched “year” part of a parsed date into the right number format. 
- month (func) – A function to turn the matched “month” part of a parsed date into the right number format. 
- day (func) – A function to turn the matched “day” part of a parsed date into the right number format. 
 
- Raises:
- ValueError – if the given format does not contain a “year” named group/macro or contains a “day” named group/macro without the “month” named group/macro. 
- Since 1.6:
 
Methods
parse()
- DateParser.parse(s)
- Uses this date format object to parse the given string - sinto a proper iso date.- Parameters:
- s (str) – A string to parse for a date. 
- Returns:
- An iso date parsed from string - s
- Raises:
- ValueError – if no date in - scould be found.