diff options
| author | yo mama <pepper@scannerjammer.com> | 2015-03-05 19:09:51 -0800 |
|---|---|---|
| committer | yo mama <pepper@scannerjammer.com> | 2015-03-05 19:09:51 -0800 |
| commit | e6dcac83910b1d022b05ca68fc8b0d4b2d32c619 (patch) | |
| tree | 794165705c3d6e9003caae910fbcace9ebaa855f | |
| parent | e7d397472c7f6f6ba7b911ae8afff9bcb6a56b92 (diff) | |
fixed some great stuff
| -rw-r--r-- | Pb_Api/ImPattern/Params.py | 37 | ||||
| -rw-r--r-- | Pb_Api/Param/MultiSelect.py | 16 | ||||
| -rw-r--r-- | config.py | 1 |
3 files changed, 47 insertions, 7 deletions
diff --git a/Pb_Api/ImPattern/Params.py b/Pb_Api/ImPattern/Params.py index c01fd4d..a046d5e 100644 --- a/Pb_Api/ImPattern/Params.py +++ b/Pb_Api/ImPattern/Params.py @@ -1,18 +1,45 @@ #!/usr/bin/python2.7 +import re from Pb_Api.Params import Pb_Api_Params from Pb_Api.Param import Pb_Api_Param +from Pb_Api.Param.Option import Pb_Api_Param_Option +from Pb_Api.Param.Options import Pb_Api_Param_Options from Pb_Api.Param.Username import Pb_Api_Param_Username from Pb_Api.Param.Image_Url import Pb_Api_Param_Image_Url from Pb_Api.Param.MultiSelect import Pb_Api_Param_MultiSelect -pattern_url_options = [ - { "value":"1.png", "weight":1 }, - { "value":"2.png", "weight":1 }, -] +from config import PATTERN_BASE_URL + +class Pattern_Url_Option(Pb_Api_Param_Option): + def __init__(self, **kwargs): + super(Pb_Api_Param_Option, self).__init__(**kwargs) + @classmethod + def from_name(cls, **kwargs): + formatted = "{}/{}.png".format(PATTERN_BASE_URL, kwargs["value"]) + return cls(weight=kwargs["weight"], value=formatted ) + +class Pattern_Url_Options: + def __init__(self, arr): + self._values = arr + def __iter__(self): + return self._values + def grep(self, s): + for i in self: + if re.match(s, i): + return i + + +pattern_url_options = Pb_Api_Param_Options([ + Pattern_Url_Option.from_name(weight=0, value=i) for i in range(1,100) ] + [ + Pattern_Url_Option.from_name(weight=0, value="A{}".format(i)) for i in range(0, 42) +]) + +pattern_url_options.search("A10").weight = 20; + class ImPattern_Params(Pb_Api_Params): def __init__(self): self.params = [ - Pb_Api_Param_Username(name="username", required=1), + Pb_Api_Param_Username(name="username", required=0), Pb_Api_Param_Image_Url(name="image_url", required=1), Pb_Api_Param_MultiSelect(name="pattern_url", required=1, options=pattern_url_options) ] diff --git a/Pb_Api/Param/MultiSelect.py b/Pb_Api/Param/MultiSelect.py index 2c8c32c..d48d1f8 100644 --- a/Pb_Api/Param/MultiSelect.py +++ b/Pb_Api/Param/MultiSelect.py @@ -5,8 +5,16 @@ class Pb_Api_Param_MultiSelect(Pb_Api_Param): def __init__(self, *args, **kwargs): self._options = kwargs['options'] super(Pb_Api_Param_MultiSelect, self).__init__(*args, **kwargs) + self._validate_options() + self.default(self._choose_heaviest()) def options(self): return self._options + def _validate_options(self): + try: + int(self._options[0]['weight']) + self._options[0]['value'] + except Exception as e: + raise ValueError @property def value(self): @@ -19,6 +27,7 @@ class Pb_Api_Param_MultiSelect(Pb_Api_Param): if value is None: valid = True if not valid : raise ValueError super(Pb_Api_Param_MultiSelect, self).set_value(value) + def randomize(self): weights_total = sum(map(lambda x: x["weight"], self.options())) choice = random.randint(0, weights_total) @@ -28,7 +37,8 @@ class Pb_Api_Param_MultiSelect(Pb_Api_Param): if position >= choice: self.value = elem["value"] break - def heaviest(self, param): + + def _choose_heaviest(self): heaviest_idx = 0 heaviest_weight = 0 idx = 0 @@ -37,4 +47,6 @@ class Pb_Api_Param_MultiSelect(Pb_Api_Param): heaviest_weight = elem["weight"] heaviest_idx = idx; idx += 1 - self.value = self.options()[heaviest_idx]["value"] + return self.options()[heaviest_idx]["value"] + def heaviest(self): + self.value = self._get_heaviest() @@ -1,2 +1,3 @@ USERNAME = "RICHARD_GIOVANNI" TEST_URL = "http://i.asdf.us/im/fc/imBreak5qI6DN2_1425433157_.png" +PATTERN_BASE_URL = "http://asdf.us/impattern/patterns" |
