- 1
- 2
- 3
- 4
- 5
- 6
me = os.path.basename(sys.argv[0])
...
target = me.split('-')
..
myclass = "%sCLI" % sub.capitalize()
mycli = getattr(__import__("ansible.cli.%s" % sub, fromlist=[myclass]), myclass)
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
Всего: 128
−16
me = os.path.basename(sys.argv[0])
...
target = me.split('-')
..
myclass = "%sCLI" % sub.capitalize()
mycli = getattr(__import__("ansible.cli.%s" % sub, fromlist=[myclass]), myclass)
Из рублики "удивительное рядом"
Как вы файлик назовете, такой код он и вызовет.
Ансибля
−22
def group_by_first(objs, keyfun):
return map(lambda x: x[0], dict(map(lambda key: (key, filter(lambda obj: keyfun(obj) == key, objs)), set(map(keyfun, objs)))).values())
−31
index = re.findall('%s([\s]*[\w\d-]+[\s]*[\w\d-]*)' % self.vendor, string)
if not index:
index = re.findall('([\s]*[\w\d-]+[\s]*[\w\d-]*[\s]*[\w\d-]*)', string)
return filter(lambda x: len(x) > 3 and re.findall('\d', x), map(lambda x: x.replace(' ', '').replace('-', ''), index)) or [u'none']
Сижу, перед уходом свой код документирую. В изумлении сижу, да.
+3
var pricerawjson = "%7B%22price%22%3A%226973.00%22%2C%22status%22%3A%22active%22%2C%22sell_status%22%3A%22available%22%2C%22old_price%22%3A%227607.0000%22%2C%22price_formatted%22%3A%226%20973%22%2C%22old_price_formatted%22%3A%227%20607%22%7D";
if (pricerawjson.length == 0) {
pricerawjson = '%7B%22price%22%3A%226973%22%2C%22price_formatted%22%3A%226%20973%22%2C%22old_price%22%3A7607%2C%22old_price_formatted%22%3A%227%20607%22%2C%22status%22%3A%22active%22%2C%22sell_status%22%3A%22available%22%7D';
}
−11
def number_to_text(number):
"""this function convert numbers to text for numbers 0 <= X < 1000 """
if number <= 0:
return ""
elif number <= 9:
return FIRST_TEN[number-1]
elif number<=19:
return SECOND_TEN[number-10]
elif number<=99:
return OTHER_TENS[number/10-2]
elif number >= 100:
return HUNDRED
else:
return ""
def checkio(number):
result = ""
order = 10 ** (len(str(number))-1)
if number < 20: # it's if not good idea. but....
result = number_to_text(number)
return result
# loop below expand number to list of tuple: (digit, order)
number_list = []
while number / order != 0:
number_list.append(((int(number/order)),(int(order))))
number -= (number / int(order)) * order
order = order /10.0
result_list = []
# and now start algorithmic nightmare. Its must be rewrite!!!
for item in number_list:
if item[1] >= 100:
hundred = [number_to_text(num) for num in item]
result_list += hundred
elif item[1] == 10:
if item[0] <> 1 :
result_list += [number_to_text(item[0]*item[1])]
else:
next_item = number_list[(len(number_list))-number_list.index(item)]
next_item = (next_item[0]+10, next_item[1])
number_list[(len(number_list))-number_list.index(item)] = next_item
else:
result_list += [number_to_text(item[0])]
result_list = [x for x in result_list if x != '']
result = " ".join(result_list)
return result
Ну и мое кракозябро решение (надо цифру в строку)
def checkio(number):
num1, num2, num3 = map(lambda x: int(x), '0' * (3 - len(str(number))) + str(number))
res = ('%s %s %s' % (FIRST_TEN[num1] + HUNDRED if FIRST_TEN[num1] else '',
SECOND_TEN[num3] if num2 == 1 else OTHER_TENS[num2],
FIRST_TEN[num3] if num2 != 1 else '')).replace(' ', ' ').strip()
return res
−11
def checkio(number):
str_num = ""
lst = list(str(number))
if len(lst) == 1:
str_num = FIRST_TEN[int(lst[0])-1]
if len(lst) == 2:
if int(lst[0]) == 1:
str_num = SECOND_TEN[int(lst[1])]
elif int(lst[0]) > 1:
if int(lst[1]) == 0:
str_num = OTHER_TENS[int(lst[0]) - 2]
elif int(lst[1]) > 0:
str_num = OTHER_TENS[int(lst[0]) - 2] + ' ' + FIRST_TEN[int(lst[1])-1]
if len(lst) == 3:
if int(lst[1]) == 0:
if int(lst[2]) == 0:
str_num = FIRST_TEN[int(lst[0])-1] + ' ' + HUNDRED
elif int(lst[2]) > 0:
str_num = FIRST_TEN[int(lst[0])-1] + ' ' + HUNDRED + ' ' + FIRST_TEN[int(lst[2])-1]
elif int(lst[1]) == 1:
str_num = FIRST_TEN[int(lst[0])-1] + ' ' + HUNDRED + ' ' + SECOND_TEN[int(lst[2])]
elif int(lst[1]) > 1:
if int(lst[2]) == 0:
str_num = FIRST_TEN[int(lst[0])-1] + ' ' + HUNDRED + ' ' + OTHER_TENS[int(lst[1]) - 2]
elif int(lst[2]) > 0:
str_num = FIRST_TEN[int(lst[0])-1] + ' ' + HUNDRED + ' ' + OTHER_TENS[int(lst[1]) - 2] + ' ' + FIRST_TEN[int(lst[2])-1]
checkio просто кладезь
+424
var t:Timer=new Timer(2570303000);//1 месяц в мс
t.addEventListener(TimerEvent.TIMER,onTimer);
t.start();
function onTimer(e:TimerEvent) {
trace("-----");
}
Товарищ спрашивает в сообществе - и чего же этот код работать отказывается?
+142
var _0xdb2a=["","\x6A\x6F\x69\x6E","\x72\x65\x76\x65\x72\x73\x65","\x73\x70\x6C\x69\x74"];
function getCoo2(_0x733fx2,_0x733fx3){
return _0x733fx2[_0xdb2a[3]](_0xdb2a[0])[_0xdb2a[2]]()[_0xdb2a[1]](_0xdb2a[0])+_0x733fx3}
Чтобы жизнь маслом ботоводам не казалась. Вот вам загадочка - что здесь происходит?
−126
def price_request(self, response):
# ебануцо
t = TakeFirst()
magic_data = {'__ASYNCPOST': 'true'}
# --- забираю зашитые данные из форм
keys = [
'__BOOKMARKERbmTabs',
'__VIEWSTATE',
'__VIEWSTATEGENERATOR',
'__EVENTVALIDATION',
'HiddenField'
]
for k in keys:
val = response.xpath('//input[contains(@id, "%s")]/@value' % k).extract()
key = response.xpath('//input[contains(@id, "%s")]/@name' % k).extract()
if key:
magic_data[t(key)] = t(val) or ''
val = response.xpath('//input[contains(@value, "btnGetPrice")]/@value').extract()
key = response.xpath('//input[contains(@value, "btnGetPrice")]/@name').extract()
if key:
magic_data[t(key)] = t(val) or ''
# --- неведомая херня из js
# вызов получения цены
js = response.xpath(u'//script[contains(text(), "$(document).ready(function ()")][contains(text(), "__doPostBack")]').re(
"__doPostBack\('([^']+)','([^']*)'\)")
# [\$\w0]+btnGetPrice
magic_data['__EVENTTARGET'] = js[0]
# обычно ''
magic_data['__EVENTARGUMENT'] = js[1]
# ключ от сервера, скорее всего он связан с сессией
js = response.xpath(u'//script[contains(text(), "Sys.Application.setServerId")]').re('\("([^"]+)", "([^"]*)"\)')
super_magic_key = js[1]
# --- опять данные из формы которые туда должны при ините странице соваться
js = response.xpath(u'//script[contains(text(), "Sys.WebForms.PageRequestManager._initialize")]').re("'form1', \[([^\]]+)\]")[0]
super_magic_values = re.findall("'([^']+)'", js)
super_magic_value_1 = super_magic_values[0]
for m in super_magic_values[1:len(super_magic_values)]:
if m:
magic_data[m] = ''
# хер его знает почему, но первую букву надо откусить, обычно это t
super_magic_value1 = super_magic_value_1[1:len(super_magic_value_1)]
# составное значение вида [\$\w0]+=[\$\w0]+$updPrice|[\$\w0]+btnGetPrice
magic_data[super_magic_key] = super_magic_value1 + '|' + magic_data['__EVENTTARGET']
return FormRequest(url=response.url,
formdata=magic_data,
dont_filter=True,
meta=response.meta,
callback=self.parse_price,
method='post',
headers={'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'X-Requested-With': 'XMLHttpRequest',
'X-MicrosoftAjax': 'Delta=true',
'Origin': 'http://www.exist.ru',
'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate',
'User-Agent': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-gb) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27'
})
То что случается если жалко ресурсов на запуск js при парсинге )
−162
private function parse (val : String) : Object {
while (val.indexOf(' ') != -1) {
val = val.replace(' ', '')
}
if (val.indexOf(',') != -1) {
var params : Array = val.split(',')
if (params[0] != 'auto') {
params[0] = [parseInt(params[0]), /(px|%)/.exec(params[0][1])]
}
if (params[1] != 'auto') {
params[1] = [parseInt(params[1]), /(px|%)/.exec(params[1])[1]]
}
return params
} else if (val == 'contain' || val == 'cover') {
return val
}
return null
}
Да блять, я не осилила разобрать строку типа "10px,auto"