개발하는 리프터 꽃게맨입니다.

코드코치 파이썬 8월 2번째 과제 본문

스터디 자료/코드코치 파이썬

코드코치 파이썬 8월 2번째 과제

파워꽃게맨 2024. 8. 25. 11:55

1. 난이도 하

  1. https://www.acmicpc.net/problem/5800
  2. https://www.acmicpc.net/problem/2822
  3. https://www.acmicpc.net/problem/16435

 

2. 난이도 중

  1. https://www.acmicpc.net/problem/2615
  2. https://www.acmicpc.net/problem/13305

 

3. 난이도 상

https://www.acmicpc.net/problem/11729

 

4. 개체 지향 프로그래밍

 

MP3 프로그램 만들기

 

1. Music 클래스

(1) 음악
(2) 작곡가

(3) 음악의 총 길이

(4) 음악 경로

 

2. MP3 클래스

- 변수 -

(1) 음악 리스트

 

- 기능 -

(1) 음악 불러오기

(2) 음악 재생

(3) 음악 종료

(4) 저장된 전체 음악 리스트 보기

(5) 다음 음악 재생

(6) 이전 음악 재생

 

pip install simpleaudio
pip install pydub

 

실제로 음악을 재생하는 코드

from pydub import AudioSegment
import simpleaudio as sa
import threading
import time

# 재생 컨트롤러를 위한 전역 변수
play_obj = None

# 음악 재생 함수
def play_audio(file_path):
    global play_obj
    audio = AudioSegment.from_wav(file_path)
    wave_obj = sa.WaveObject(audio.raw_data, num_channels=audio.channels, bytes_per_sample=audio.sample_width, sample_rate=audio.frame_rate)
    play_obj = wave_obj.play()

# 스레드로 실행될 함수
def play_audio_thread(file_path):
    threading.Thread(target=play_audio, args=(file_path,)).start()

# 사용자 입력을 기다리는 함수
def input_listener():
    global play_obj
    while True:
        command = input("음악을 멈추려면 'stop'을 입력하세요: ")
        if command.lower() == 'stop':
            if play_obj:
                play_obj.stop()
                print("음악 재생이 멈췄습니다.")
                break
        else:
            print("알 수 없는 명령어입니다. 'stop'을 입력하세요.")

# 오디오 파일 경로 설정
file_path = r'C:\Users\Ahnjiwoo\Desktop\Projects\windowAPIProject(24.02.05)\Client\Output\Binaries\Resources\Sounds\Stage1_BGM.wav'

# 비블로킹 형태로 음악 재생 시작
play_audio_thread(file_path)
print("음악 재생 시작")

# 사용자 입력 시작
input_thread = threading.Thread(target=input_listener)
input_thread.start()

# 메인 스레드는 입력 스레드가 종료될 때까지 대기
input_thread.join()
print("프로그램이 종료됩니다.")