示例#1
0
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'))