def fetch(period): url = u'http://flights.ch.com/default/SearchByTime?Stype=0&IfRet=false&' \ u'OriCity=%s&DestCity=%s&MType=0&FDate=%s' \ u'&ANum=1&CNum=0&INum=0&PostType=0' % ( URL_PARAMS[Website.CH][period['from_city']][0], URL_PARAMS[Website.CH][period['to_city']][0], period['date'], ) response = requests.post(url) try: msg = json.loads(response.text) flights = [x[0] for x in msg['Packages'] if len(x) == 1] except: return [] format_flights = [] for flight in flights: info = dig_info(flight) if info: format_flights.append(info) log_url = u'http://flights.ch.com/SHA-CKG.html?IfRet=false' \ u'&OriCity=%s&OriCode=%s&DestCity=%s&DestCode=%s&FDate=%s' \ u'&MType=0&ANum=1&CNum=0&INum=0&SType=0' % ( URL_PARAMS[Website.CH][period['from_city']][0], URL_PARAMS[Website.CH][period['from_city']][1], URL_PARAMS[Website.CH][period['to_city']][0], URL_PARAMS[Website.CH][period['to_city']][1], period['date'], ) return util.deal(period, format_flights, Website.CH, log_url)
def __init__(self, prev_data=None): if prev_data is not None: self.base_card = prev_data.base_card # the card landlord holds self.discarded_card = prev_data.discarded_card # discarded cards self.previous_play = prev_data.previous_play self.agent_order = prev_data.agent_order self.turn = prev_data.turn self.pass_count = prev_data.pass_count self.card_combinations = prev_data.card_combinations self.is_terminal = prev_data.is_terminal self.winner = prev_data.winner self.hands = prev_data.hands self.combos = prev_data.combos else: self.base_card = [] # the card landlord holds self.discarded_card = [] # discarded cards self.previous_play = (PASS, []) farmer_order = random.sample([FARMER_ONE, FARMER_TWO], 2) self.agent_order = [LANDLORD] + farmer_order self.turn = LANDLORD self.pass_count = 0 self.card_combinations = CardCombinations() self.is_terminal = False self.winner = None base_card, pile_one, pile_two, pile_three = deal() self.hands = { LANDLORD: base_card + pile_one, FARMER_ONE: pile_two, FARMER_TWO: pile_three, } self.combos = { LANDLORD: Hand.get_all_combos(self.hands[LANDLORD]), FARMER_ONE: Hand.get_all_combos(self.hands[FARMER_ONE]), FARMER_TWO: Hand.get_all_combos(self.hands[FARMER_TWO]), }
def start(self, player1, player2): # select N hand*2 from deck at random # deal them into two piles # each pile gets a Hand document c = Card() cards = c.pick_n(config.handsize*2) pile1, pile2 = deal(cards) h = Hand(player=player1, cards=pile1) h2 = Hand(player=player2, cards=pile2)
def start(self, player1, player2): # select N hand*2 from deck at random # deal them into two piles # each pile gets a Hand document c = Card() cards = c.pick_n(config.handsize * 2) pile1, pile2 = deal(cards) h = Hand(player=player1, cards=pile1) h2 = Hand(player=player2, cards=pile2)
def fetch(period): browser = webdriver.PhantomJS() url = 'http://www.ceair.com/flight2014/%s-%s-%s_CNY.html' % \ (URL_PARAMS[Website.CEAIR][period['from_city']], URL_PARAMS[Website.CEAIR][period['to_city']], period['date'][2:].replace('-', '')) browser.get(url) block = util.fetch_one(browser, 'find_element_by_id', 'flight-info') if not block: return [] time.sleep(3) flights = util.fetch_multi(block, 'find_elements_by_class_name', 'section') format_flights = [] for flight in flights: info = dig_info(flight) if info: format_flights.append(info) browser.quit() return util.deal(period, format_flights, Website.CEAIR, url)
def fetch(period): browser = webdriver.PhantomJS() url = 'http://flights.ctrip.com/booking/%s-%s-day-1.html#DDate1=%s' % \ (URL_PARAMS[Website.CTRIP][period['from_city']], URL_PARAMS[Website.CTRIP][period['to_city']], period['date']) browser.get(url) util.scroll(browser) block = util.fetch_one(browser, 'find_element_by_id', 'J_flightlist2') if not block: return [] flights = util.fetch_multi(block, 'find_elements_by_class_name', 'search_table_header') format_flights = [] for flight in flights: info = dig_info(flight) if info: format_flights.append(info) browser.quit() return util.deal(period, format_flights, Website.CTRIP, url)
def fetch(period): format_flights = [] airport_pairs = [(x, y) for x in CITY_TO_AIRPORTS[period['from_city']] for y in CITY_TO_AIRPORTS[period['to_city']]] url = '' for pair in airport_pairs: browser = webdriver.PhantomJS() date = period['date'] url = 'http://et.airchina.com.cn/InternetBooking/AirLowFareSearchExternal' \ '.do?tripType=OW&searchType=FARE&flexibleSearch=false' \ '&directFlightsOnly=false&fareOptions=1.FAR.X' \ '&outboundOption.originLocationCode=' + \ URL_PARAMS[Website.CSAIR][pair[0]] + \ '&outboundOption.destinationLocationCode=' + \ URL_PARAMS[Website.CSAIR][pair[1]] + \ '&outboundOption.departureDay=' + date[8:] + \ '&outboundOption.departureMonth=' + date[5:7] + \ '&outboundOption.departureYear=' + date[0:4] + \ '&outboundOption.departureTime=NA' \ '&guestTypes%5B0%5D.type=ADT' \ '&guestTypes%5B0%5D.amount=1' \ '&guestTypes%5B1%5D.type=CNN' \ '&guestTypes%5B1%5D.amount=0' \ '&guestTypes%5B2%5D.type=INF' \ '&guestTypes%5B2%5D.amount=0' \ '&pos=AIRCHINA_CN&lang=zh_CN' browser.get(url) block = util.fetch_one(browser, 'find_element_by_id', 'resultsFFBlock1') if not block: continue flights = util.fetch_multi(block, 'find_elements_by_tag_name', 'tbody') for flight in flights: info = dig_info(flight) if info: format_flights.append(info) browser.quit() return util.deal(period, format_flights, Website.AIRCHINA, url)
def fetch(period): format_flights = [] airport_pairs = [(x, y) for x in CITY_TO_AIRPORTS[period['from_city']] for y in CITY_TO_AIRPORTS[period['to_city']]] url = '' for pair in airport_pairs: browser = webdriver.PhantomJS() url = 'http://b2c.csair.com/B2C40/modules/bookingnew/main/' \ 'flightSelectDirect.html?t=S&c1=%s&c2=%s&d1=%s&at=1&ct=0&it=0' % \ (URL_PARAMS[Website.CSAIR][pair[0]], URL_PARAMS[Website.CSAIR][pair[1]], period['date']) browser.get(url) block = util.fetch_one(browser, 'find_element_by_class_name', 'sp-trip-body') if not block: continue flights = util.fetch_multi(block, 'find_elements_by_tag_name', 'ul') for flight in flights: info = dig_info(flight, pair) if info: format_flights.append(info) browser.quit() return util.deal(period, format_flights, Website.CSAIR, url)