Skip to content
Open

nw #2

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified apka/app/__pycache__/main.cpython-310.pyc
Binary file not shown.
Binary file modified apka/app/backend/__pycache__/__init__.cpython-310.pyc
Binary file not shown.
Binary file modified apka/app/backend/__pycache__/calendar_integration.cpython-310.pyc
Binary file not shown.
Binary file modified apka/app/backend/__pycache__/note.cpython-310.pyc
Binary file not shown.
Binary file modified apka/app/backend/__pycache__/recording.cpython-310.pyc
Binary file not shown.
Binary file modified apka/app/backend/__pycache__/routes.cpython-310.pyc
Binary file not shown.
15 changes: 13 additions & 2 deletions apka/app/backend/calendar_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from dateutil import parser

SCOPES = ["https://www.googleapis.com/auth/calendar.readonly"]

Expand Down Expand Up @@ -51,10 +52,20 @@ def get_calendar_events():
print("No upcoming events found.")
return

formatted_events = []
for event in events:
start = event["start"].get("dateTime", event["start"].get("date"))
print(start, event["summary"])
summary = event.get("summary", "Brak nazwy wydarzenia")

# Konwertuj datę i godzinę na czytelny format
if "T" in start: # Jeśli jest pełna data i godzina
start_time = parser.parse(start).strftime("%Y-%m-%d %H:%M")
else: # Jeśli tylko data
start_time = start

return events
formatted_events.append({"start": start_time, "summary": summary})

return formatted_events
except HttpError as error:
print(f"An error occurred: {error}")
return []
12 changes: 8 additions & 4 deletions apka/app/backend/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,15 @@
def index():
return render_template("index.html")

@main.route("/record")
def record():
return render_template("record.html")

@main.route('/events')
def events():
try:
events = get_calendar_events()
return jsonify(events)
return render_template('events.html', events=events)
except Exception as e:
return jsonify({"error": str(e)}), 500

Expand All @@ -38,7 +41,7 @@ def ms_calendar():
return {"error": str(e)}, 400


@main.route("/list_windows", methods=["GET"])
@main.route("/record/list_windows", methods=["GET"])
def list_windows():
"""Zwróć listę okien."""
windows = gw.getAllTitles()
Expand All @@ -49,7 +52,7 @@ def list_windows():
UPLOAD_FOLDER = os.path.join(os.getcwd(), 'recordings')
ALLOWED_EXTENSIONS = {'webm', 'mp4', 'avi'}

@main.route("/record_window", methods=["POST"])
@main.route("/record/record_window", methods=["POST"])
def record_window_route():
setup_upload_folder()
data = request.get_json()
Expand All @@ -64,7 +67,7 @@ def record_window_route():
return jsonify({"message": f"Rozpoczęto nagrywanie okna: {window_title}"})


@main.route("/stop_recording", methods=["POST"])
@main.route("/record/stop_recording", methods=["POST"])
def stop_recording_route():
try:
stop_recording()
Expand All @@ -75,6 +78,7 @@ def stop_recording_route():

@main.route('/save', methods=['POST'])
def save_recording_route():
setup_upload_folder()
"""Zapisz nagranie i przekonwertuj na MP4."""
try:
file = request.files['file']
Expand Down
2 changes: 1 addition & 1 deletion apka/app/backend/token.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"token": "ya29.a0ARW5m75h88wxJ8YFSOCf6tpgYqPdJvAe2PP_QHdbgfRgxclBnTtS3kpluOImGqF_td_6d06JaFHPjmITYbLa30BczxCK2vxyb8ChRseog6gpCJD2yRXkasZhq3NrZgd-mYZBjxS3L1UnHUwduLJabHLNbZ_qoywHILYBQSO1aCgYKAZwSARASFQHGX2Mi9EQNr9y1ykhWQGgv4pPFIw0175", "refresh_token": "1//09kZ-OciEzm48CgYIARAAGAkSNwF-L9IrofyzMMtoOqTCpoDNr2T1Du2NptYDb_kvm1rnrbVy9Ixp7g3y76BzYT-vsPOAhGhIxB4", "token_uri": "https://oauth2.googleapis.com/token", "client_id": "907999041253-2eqttdeuvd1inb1oh6a81vptdk1sh9ao.apps.googleusercontent.com", "client_secret": "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", "scopes": ["https://www.googleapis.com/auth/calendar.readonly"], "expiry": "2024-12-25T22:06:16.447179Z"}
{"token": "ya29.a0ARW5m764vEOEkfIn1gw-Tj-CYwdM3YlQ76UyQvP0AGAI4q4kPRETts4qYOWQk4byIh6Jm2s3dhEEHazFk0KyMqw34XX8buhE41AZQTySYSIn_Iw9WyLudCYv-t3-LJ3zbT5oHRd_xaSC7kGfNr3fgo27OaA_9bOnQVmrtxkJaCgYKAVgSARASFQHGX2MiNmwVn6SrV9cyTjYLOO6iFA0175", "refresh_token": "1//09XXH8kYJJSi8CgYIARAAGAkSNwF-L9Ir9s5XxNraWHNpxg8FNrXfIvjsvgW1vgMs7lBb726Tar22_NKHa-lWs9fXGM7lf0o0nnM", "token_uri": "https://oauth2.googleapis.com/token", "client_id": "907999041253-2eqttdeuvd1inb1oh6a81vptdk1sh9ao.apps.googleusercontent.com", "client_secret": "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", "scopes": ["https://www.googleapis.com/auth/calendar.readonly"], "universe_domain": "googleapis.com", "account": "", "expiry": "2025-01-12T17:36:16.892920Z"}
47 changes: 13 additions & 34 deletions apka/app/frontend/static/record.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ function showNotification(message, type = "info") {

setTimeout(() => {
notification.remove();
}, 5000);
}, 1000);
}

const recordBtn = document.getElementById("record-btn");
Expand All @@ -17,53 +17,29 @@ const titleInput = document.getElementById("recording-title");
const see_events = document.getElementById("events-btn");
const timerDisplay = document.getElementById("timer");
const see_recordings = document.getElementById("recordings-btn");


const windowSelection = document.getElementById("window-selection");
const selectedWindow = document.getElementById("selected-window");
const selectedWindowName = document.getElementById("selected-window-name");
const changeWindowBtn = document.getElementById("change-window-btn");

let mediaRecorder;
let recordedChunks = [];
let stream; // Przechowujemy odniesienie do strumienia
let recordingStartTime;
let timerInterval;

see_events.addEventListener("click", () => {
window.location.href = "/events"; // Przenosi użytkownika na podstronę /events
});

see_recordings.addEventListener("click", () => {
window.location.href = "/my_recordings"; // Przenosi użytkownika na podstronę /recordings
});


// Funkcja do pobrania okna
async function selectWindow() {
try {
const stream = await navigator.mediaDevices.getDisplayMedia({
stream = await navigator.mediaDevices.getDisplayMedia({
video: true,
audio: true
});
handleStream(stream);
document.getElementById("window-selection").querySelector("h2").style.display = "none";
windowSelection.style.display = "block";
recordBtn.style.display = "none";
selectedWindow.style.display = "block"; // Pokażemy wybrane okno
changeWindowBtn.style.display = "inline-block"; // Pokażemy przycisk do zmiany okna
})
handleStream(stream);
} catch (error) {
console.error("Błąd podczas wybierania okna:", error);
showNotification("Błąd podczas wybierania okna", "error");
}
}

// Funkcja zmieniająca okno do nagrywania
changeWindowBtn.onclick = () => {
selectedWindow.style.display = "none"; // Ukrywamy obecne okno
selectWindow(); // Ponownie wybieramy okno
}

// Obsługa strumienia
function handleStream(stream) {
mediaRecorder = new MediaRecorder(stream);
Expand Down Expand Up @@ -147,6 +123,7 @@ async function saveRecording(blob) {
showNotification("Nagranie zapisane!", "success");
if (stream) {
stream.getTracks().forEach(track => track.stop());
stream = null; // Wyczyszczenie strumienia
console.log("Strumień zatrzymany.");
showNotification("Strumień zatrzymany", "success");

Expand All @@ -161,15 +138,17 @@ async function saveRecording(blob) {
}
if (stream) {
stream.getTracks().forEach(track => track.stop());
stream = null; // Wyczyszczenie strumienia
console.log("Strumień zatrzymany.");
showNotification("Strumień zatrzymany.", "success");
}

timerDisplay.style.display = "none"; // Ukrycie zegara
document.getElementById("window-selection").style.display = "none"; // Ukrycie sekcji wyboru okna
recordBtn.style.display = "block"; // Pokazanie przycisku do wyboru okna
titleInput.value = ""; // Czyszczenie tytułu nagrania
saveButton.disabled = true; // Wyłączenie przycisku zapisz

clearInterval(timerInterval);
timerDisplay.textContent = "00:00"; // Zresetowanie zegara
timerDisplay.style.display = "none"; // Ukrycie zegara
recordBtn.style.display = "block"; // Pokazanie przycisku do wyboru okna
titleInput.value = ""; // Czyszczenie tytułu nagrania
saveButton.disabled = true; // Wyłączenie przycisku zapisz
}

// Inicjalizacja funkcji
Expand Down
63 changes: 6 additions & 57 deletions apka/app/frontend/static/styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -61,31 +61,14 @@ button:disabled {
background-color: gray;
}

#record-btn {
background-color: #800080;
color: white;
font-size: 20px;
border-radius: 20px;
transition: transform 0.2s ease, background-color 0.2s ease;
}

#record-btn:hover {
background-color: #6a006a;
transform: scale(1.2);
}

#record-btn:active {
background-color: #4c034c;
}

.start-button {
background-color: #4CAF50;
color: white;
}

.start-button:hover:not(:disabled) {
background-color: #45a049;
transform: scale(1.05);
transform: scale(1.2);
}

.stop-button {
Expand All @@ -94,63 +77,29 @@ button:disabled {
}

.stop-button:hover:not(:disabled) {
transform: scale(1.05);
transform: scale(1.2);
}

#events-btn {
background-color: rgb(226, 178, 212);
margin-bottom: 10px;
color: black;
padding: 10px 20px;
font-size: 20px;
cursor: pointer;
transition: background-color 0.3s, transform 0.3s;
}
#recordings-btn {
background-color: rgb(226, 178, 212);
#events-btn, #recordings-btn, #notes-btn, #record-btn{
background-color: rgb(226, 199, 218);
margin-top: 10px;
color: black;
padding: 10px 20px;
font-size: 20px;
cursor: pointer;
transition: background-color 0.3s, transform 0.3s;
}
#notes-btn {
background-color: rgb(226, 178, 212);
margin-bottom: 10px;
color: black;
padding: 10px 20px;
font-size: 20px;
cursor: pointer;
transition: background-color 0.3s, transform 0.3s;
}

#events-btn:hover {
#record-btn:hover, #events-btn:hover, #notes-btn:hover,#recordings-btn:hover {
background-color: #ea72c8;
transform: scale(1.2);
}

#events-btn:active {
background-color: #9e4f8a;
}

#notes-btn:hover {
background-color: #ea72c8;
transform: scale(1.2);
}

#notes-btn:active {
#record-btn:active, #events-btn:active, #notes-btn:active, #recordings-btn:active {
background-color: #9e4f8a;
}

#recordings-btn:hover {
background-color: #ea72c8;
transform: scale(1.2);
}

#recordings-btn:active {
background-color: #9e4f8a;
}

input[type="text"] {
padding: 10px;
Expand Down
81 changes: 81 additions & 0 deletions apka/app/frontend/static/stylesEvents.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: flex-start; /* Ustawienie zawartości po lewej stronie */
align-items: flex-start;
height: 100vh;
margin: 0;
background-image: url('tlo.png');
background-size: cover;
background-position: center;
background-attachment: fixed;
}

.container {
width: 60%; /* 2/3 szerokości */
height: 50vh; /* 1/2 wysokości */
overflow-y: auto; /* Dodanie przewijalności */
position: relative;
top: 15%; /* 15% od góry */
left: 7%; /* Pozycjonowanie od lewej krawędzi */
background-color: rgba(139, 98, 149, 0.6);
box-shadow: 0 0 10px rgba(167, 17, 201, 0.204);
padding: 20px;
border-radius: 10px;
margin: 20px;
text-align: center;
}

h1 {
font-size: 2rem;
margin-bottom: 20px;
}

.events-list {
display: flex;
flex-direction: column;
gap: 10px;
margin-top: 20px;
}

.event {
background-color: #e9e9e9;
padding: 15px;
border-radius: 8px;
text-align: left;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.event-time {
font-size: 1.1rem;
color: #555;
}

.event-summary {
font-size: 1.3rem;
font-weight: bold;
color: #333;
}

/* Przyciski w górnym rogu */
.top-nav {
position: absolute;
top: 20px;
right: 20px;
}

.back-to-home {
background-color: #572468;
color: white;
padding: 10px 20px;
text-decoration: none;
border-radius: 15px;
font-size: 16px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2);
transition: transform 0.2s ease, background-color 0.2s ease;
}

.back-to-home:hover {
background-color: #7f4598;
transform: scale(1.2);
}
Loading