File size: 4,710 Bytes
8c40a7c
995bd60
851c6af
fd6e650
851c6af
ab78615
851c6af
3990d00
f0837ca
851c6af
 
fd6e650
851c6af
 
fd6e650
dc944de
851c6af
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f0837ca
851c6af
dc944de
995bd60
851c6af
995bd60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dc944de
995bd60
 
 
 
dc944de
995bd60
 
fd6e650
 
 
 
 
 
 
 
 
 
995bd60
f0837ca
995bd60
 
851c6af
995bd60
 
 
 
 
 
 
 
 
 
 
 
851c6af
995bd60
851c6af
995bd60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
851c6af
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import asyncio
import os
import streamlit as st
from googletrans import Translator
from groq import Groq

# Initialize the Groq API client
client = Groq(api_key="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")

# Async function for translation
async def translate_text(text, target_language):
    translator = Translator()
    # Translate text asynchronously
    translated = await translator.translate(text, dest=target_language)
    return translated.text

# Fetch opportunities based on user input (interests, skills, location)
def get_opportunities(interests, skills, location):
    # Placeholder for real opportunity fetching logic
    # In your case, this would use Groq or another API to get dynamic data
    return {
        'scholarships': 'Here are some scholarship opportunities...',
        'internships': 'Here are some internship opportunities...',
        'courses': 'Here are some courses you can explore...'
    }

# Async function to get translated opportunities
async def get_translated_opportunities(opportunities, selected_language):
    translated_opportunities = {}
    
    # Translate each opportunity
    for opportunity_type, opportunity_list in opportunities.items():
        translated_opportunities[opportunity_type] = await translate_text(opportunity_list, selected_language)

    return translated_opportunities

# Streamlit App Interface
def main():
    st.set_page_config(page_title="AI-Powered Opportunity Finder", page_icon=":bulb:", layout="wide")
    st.title("AI-Powered Opportunity Finder for Youth")

    # Custom CSS for improving the UI
    st.markdown("""
        <style>
            .css-1v0mbdj {padding-top: 30px; font-size: 1.5rem;}
            .css-1wa3m6h {padding: 10px; background-color: #f0f0f5;}
            .css-1w4t6pm {border: 1px solid #ccc; padding: 10px; background-color: #fff;}
            .css-1f4y1re {font-size: 1.2rem;}
        </style>
    """, unsafe_allow_html=True)

    # Sidebar for input fields
    st.sidebar.header("Provide your details to find opportunities")

    # Collect user input for interests, skills, and location in the sidebar
    interests = st.sidebar.text_input("Your Interests (e.g., AI, Robotics, Software Engineering):")
    skills = st.sidebar.text_input("Your Skills (e.g., Python, Data Science, Web Development):")
    location = st.sidebar.text_input("Your Location (e.g., Gujrat, Pakistan):")

    # Language selection
    languages = {
    "English": "English",
    "Spanish": "Spanish",
    "French": "French",
    "German": "German",
    "Italian": "Italian",
    "Chinese": "Chinese",
    "Japanese": "Japanese",
    "Urdu": "Urdu"  # Full word for Urdu
}

    selected_language = st.sidebar.selectbox("Select your preferred language:", list(languages.keys()))

    # Container to display results
    results_container = st.container()

    # Button to fetch opportunities
    if st.sidebar.button("Find Opportunities"):
        if interests and skills and location:
            with st.spinner("Fetching opportunities..."):
                # Fetch recommendations using the Groq API
                opportunities = get_opportunities(interests, skills, location)
                
                # Async translation of opportunities
                translated_opportunities = asyncio.run(get_translated_opportunities(opportunities, languages[selected_language]))
            
            # Display the opportunities
            results_container.subheader(f"Recommended Opportunities in {selected_language}")
            for opportunity_type, translated_text in translated_opportunities.items():
                results_container.markdown(f"**{opportunity_type.capitalize()}**: {translated_text}")
        else:
            st.sidebar.error("Please fill all fields.")

    # Add a footer with contact info and clickable links
    st.markdown("""
        <footer style="text-align:center; padding: 20px; font-size: 1rem; background-color: #f0f0f5;">
            <p>Powered by Groq, Google Translate, and Streamlit</p>
            <p>For more opportunities, visit:</p>
            <ul style="list-style-type:none; padding: 0;">
                <li><a href="https://www.groq.com" target="_blank">Groq - AI Solutions</a></li>
                <li><a href="https://www.scholarships.com" target="_blank">Scholarships.com</a></li>
                <li><a href="https://www.coursera.org" target="_blank">Coursera - Online Courses</a></li>
                <li><a href="https://www.linkedin.com/jobs" target="_blank">LinkedIn Jobs</a></li>
            </ul>
            <p>Contact: [email protected]</p>
        </footer>
    """, unsafe_allow_html=True)

# Run the app
if __name__ == "__main__":
    main()