|
import streamlit as st |
|
import requests |
|
|
|
|
|
API_KEY = "c1b9b6be0amsh11316ef9a922bdbp1789f5jsn18a0023eef11" |
|
API_HOST = "jsearch.p.rapidapi.com" |
|
|
|
|
|
def get_job_openings(job_title, location, location_type, experience): |
|
url = "https://jsearch.p.rapidapi.com/search" |
|
querystring = { |
|
"query": f"{job_title} in {location}", |
|
"page": "1", |
|
"num_pages": "1", |
|
"remote_jobs_only": "true" if location_type == "REMOTE" else "false", |
|
"employment_types": experience |
|
} |
|
headers = { |
|
"x-rapidapi-key": API_KEY, |
|
"x-rapidapi-host": API_HOST |
|
} |
|
|
|
response = requests.get(url, headers=headers, params=querystring) |
|
if response.status_code == 200: |
|
return response.json() |
|
else: |
|
st.error(f"Error {response.status_code}: {response.text}") |
|
return None |
|
|
|
|
|
st.set_page_config(page_title="Job Search", page_icon="π§βπΌ", layout="centered") |
|
|
|
st.title("π― Career Connect ") |
|
st.write("Find the latest job openings based on your preferences.") |
|
|
|
|
|
job_title = st.text_input("Enter Job Title:", placeholder="e.g., Node.js Developer") |
|
location = st.text_input("Enter Location:", placeholder="e.g., New York") |
|
location_type = st.selectbox("Location Type:", ["ANY", "ON_SITE", "REMOTE", "HYBRID"]) |
|
experience = st.selectbox("Experience Level:", ["FULLTIME", "PARTTIME", "INTERN", "CONTRACTOR"]) |
|
|
|
|
|
if st.button("Search Jobs"): |
|
if job_title and location: |
|
with st.spinner("Fetching job openings..."): |
|
data = get_job_openings(job_title, location, location_type, experience) |
|
if data and 'data' in data: |
|
st.success("Job Openings Retrieved!") |
|
jobs = data['data'] |
|
|
|
if jobs: |
|
for idx, job in enumerate(jobs, start=1): |
|
st.subheader(f"{idx}. {job.get('job_title', 'No Title')}") |
|
st.write(f"*Company:* {job.get('employer_name', 'Unknown')}") |
|
st.write(f"*Location:* {job.get('job_city', 'Unknown')}, {job.get('job_country', '')}") |
|
st.write(f"*Type:* {job.get('job_employment_type', 'N/A')}") |
|
st.write(f"*Posted On:* {job.get('job_posted_at_datetime_utc', 'N/A')}") |
|
st.write(f"*Deadline:* {job.get('job_offer_expiration_datetime_utc', 'N/A')}") |
|
st.write(f"[π View Job Posting]({job.get('job_apply_link', '#')})") |
|
st.write("---") |
|
else: |
|
st.warning("No job openings found. Please try different inputs.") |
|
else: |
|
st.warning("No job data found. Please try again.") |
|
else: |
|
st.error("Please enter both job title and location.") |