def populate_board(url, target=None, update=False): '''takes a URL for a glass door posting, and creates a trello list with helpful job hunt items ''' if target: auth = ret_labels(target) if update == True: auth = update_config(target) else: auth = load_config() client = TrelloClient( api_key=auth['key'], token=auth['token']) # gets board Labels board = client.get_board(board_id=auth['board_id']) link_l = client.get_label(auth['link_l'], auth['board_id']) desc_l = client.get_label(auth['desc_l'], auth['board_id']) check_l = client.get_label(auth['check_l'], auth['board_id']) # check URL for type url_clean = url.strip('https://').split('/') if url_clean[0] == 'www.glassdoor.com': url_type = '/'.join(url_clean[:2]) if url_clean[0] == 'www.linkedin.com': url_type = '/'.join(url_clean[:3]) else: url_type = url_clean[0] # use url type to call scrape function if url_type == 'www.glassdoor.com/job-listing': # scrapes GD for job info data = pull_data_gd(url) elif url_type == 'boards.greenhouse.io': data = pull_data_gh(url) elif url_type == 'jobs.lever.co': data = pull_data_lev(url) elif url_type == 'www.linkedin.com/jobs/view': data = pull_data_li(url) elif url_type == 'careers.jobscore.com': data = pull_data_js(url) else: print("Sorry, either {} isn't supported yet, or something unexpectedly changed\n".format(url_clean[0])) print("Feel free to implement and send a PR, or email: [email protected]") return None data['post_url'] = url list_name = data['company'] + ':\n' + data['job'] + '\n\nAdded: ' + str(datetime.now()) j_title = data['company'] + ': ' + data['job'] # create list object new_list = board.add_list(name=list_name, pos=None) # add cards to list object description = new_list.add_card(name='{} \nDetails:'.format(j_title), desc=data['desc']) attachCard = new_list.add_card(name='{} \nLinks:'.format(j_title)) attachCard.attach(name=data['ap_type'], url=data['ap_url']) attachCard.attach(name='Original posting', url=data['post_url']) # attempts to build a direct search link for linkedin which targets company and department if available if data['dept'] != '': li_url = 'https://www.linkedin.com/search/results/people/?keywords=' + data['company'].replace(' ','%20') + '%20' + data['dept'].replace(' ', '%20') attachCard.attach(name='Linkedin search, Company + Department', url= li_url) else: li_url = 'https://www.linkedin.com/search/results/people/?keywords=' + data['company'].replace(' ', '%20') attachCard.attach(name='Linkedin search, Company', url=li_url) goog_base = 'https://www.google.com/#safe=off&q=' goog_company = goog_base+data['company'].replace(' ','+') attachCard.attach(name='Google search, Company',url=goog_company) gd_search_hack = 'https://www.glassdoor.com/Reviews/{}-reviews-SRCH_KE0,{}.htm'.format(data['company'], len(data['company'])) dt = datetime.now() + timedelta(days=3) cl = ['Research Hiring manager [Linkedin]({})'.format(li_url), 'Research company, [glassdoor]({}), [google]({})'.format(gd_search_hack, goog_company), 'Polish Resume [creddle](https://resume.creddle.io/)', 'Craft Cover Letter, [Drive](https://drive.google.com)', 'Attempt to make contact on personal level [Linkedin]({})'.format(li_url), 'Complete application [Application link]({})'.format(data['ap_url']), 'Send application', 'Wait three days: {}'.format(str(dt.date())), 'Send follow up email'] clCard = new_list.add_card('To Do List') clCard.add_checklist(title='To Do!\n\n{}'.format(j_title), items=cl) clCard.set_due(dt.date()) notes_card = new_list.add_card(name='Notes') notes_card.comment('Added Via tgd on: {}\n Refered through {}'.format(datetime.now(), data['referer'])) # add color coded labels to cards attachCard.add_label(link_l) description.add_label(desc_l) clCard.add_label(check_l) print('\n' + 'Success! \n\nAdded {} to you board'.format(j_title) + '\n\nCheck it out here:\nhttps://trello.com/b/{}'.format(auth['board_id'] + '\n'))