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
Curation
object as an argument or arguments in the same format asCuration.set_meta()
. The new curation will first have it’s metadata, logo, screenshot, added args, and id deep-copied fromcuration
’s first if it’s available, then have that data modified withkwargs
if available. This curation object will be linked to that curation object.- Raises:
TypeError – If
curation
is not an instance ofCuration
.
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()
andCuration.get_meta()
to theCuration.meta
dictonary.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()
andCuration.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 inCuration.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
, seeCuration.ARGS
. Any value passed in that is not inCuration.ARGS
will still be stored and can be retrieved throughCuration.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.ARGS
or the name of the argument you passed in throughCuration.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()
andCuration.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
heading
is inCuration.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.meta
into 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 thesource
part 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
url
and save it tofile_name
as 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 thedownload_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, usesave_items=META|LOGO
.
- Raises:
InvalidMetadataError – Added in 1.3: If this curation has invalid metadata and
validate
is set to 1 or higher.- See:
EVERYTHING
and the surrounding constants, along withget_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()
ifvalidate
is 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 throughCuration.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
format
specifying 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
s
into 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
s
could be found.