본문 바로가기

TODAY/Journal

[일기] 파이썬 실전 일기! - 음악 플레이리스트 파싱(parsing)하기

안녕하세요.

클라이밍 덕후 친구 덕분에 저는 저번 주에 실내 클라이밍 7일 체험권을 구매하여 이용했습니다. 팔 힘이 너무 없어서 제대로 매달려 있을까라는 걱정이 무색하게 생각보다 재미있었어요. 오히려 힘으로 매달려 있다는 얘기를 듣기도 했습니다. ㅋㅋ 잔머리를 조금 더 굴려서 쉬운 루트를 찾았더라면 많은 힘을 들이지 않았어도 될 텐데요.. ㅎㅎ 저는 아직 감이 없어서 그런지 루트를 찾는 것도 나름 난관이었습니다. 그래도 한 문제씩 풀어 나갈 때마다 느끼는 쾌감이 매우 컸어요~ 친구 두 명이 이래서 클라이밍에 중독됐구나 새삼 느꼈습니다. ㅋㅋ덕분에 저번 주는 오랜만에 활기 있는 한 주가 되었습니다. 

 

제가 체험했던 오르고 클라이밍의 센터장님이 수원의 클라임 바운스라는 실내 암벽장을 같이 운영하고 계서서 목요일에는 친구들과 수원에 다녀왔습니다. 하나의 이용권으로 수원과 이천 센터 두 곳을 체험할 수 있어서 엄청 알짜배기 패키지라고 생각했어요.ㅎㅎ 수원에서는 이천에서처럼 강습도 받고, 새로운 문제들도 풀어보고 재밌는 시간을 보냈습니다. 그런데 수원센터의 좋은 시설과 꿀잼 문제들보다도 저의 마음을 사로잡은 것은.. ㅋㅋㅋ 배경음악이었습니다. 갑자기 주제가 클라이밍에서 약간 벗어나버렸지만ㅋㅋ, 수원 클라임 바운스에서 틀어주는 노래가 너무 좋은 거예요. 암벽 시설 못지않게 좋아 보이는 음향시설로 빵빵하게 틀어주는 노래 한 곡 한 곡 모두 제 취향이었어요. 약간 페스티벌에 온 것 같은 노래부터, 스페인어 불어 가사의 음악까지 ㅋㅋ '여기 노래 국적 참 다양하다'라고 생각하고 있었어요.

 

코치님한테 노래가 너무 좋다고~ 나중에 노래 리스트를 받고 싶다고 부탁했어요. 그랬더니 정말 그자리에서 이메일로 노래를 보내주셨습니다. 

압축된 노래는 무려 576곡...! 

제가 원했던건 음악 리스트였지만, 클라임 바운스에서는 스트리밍이 아니라 음원 재생을 하고 있었습니다. 그래서 코치님이 음악 파일명을 리스트로 추출해서 제게 주시는 것보다 파일을 통째로 압축해서 보내주시는게 훨씬 쉬웠습니다. . 그 큰 용량을 기꺼이 손수 압축해서 보내주시다니 무한 감동~!!ㅋㅋ

 

집에 와서 zip파일을 열어보는데 정말 예상대로 용량이 너무 컸습니다.ㅠ 저는 맥북을 쓰고 있기 때문에 특히 zip 파일 추출이 쉽지 않았어요. 이거 다 추출해서 파일로 갖고 있는 것도 무리라고 생각했습니다 ㅜㅜ 그래서 우선 zip extractor 프로그램을 사용해서 안에 있는 음악 목록을 복붙 해서 txt 파일로 만들었어요. 

 

 

 

 

위 텍스트로도 스트리밍사이트에 하나하나 검색해가며 음악을 들을 순 있겠지만..

cloud_upload, audiotrack등 보기 거슬렸습니다. 제가 원하는 순수 '아티스트-노래' 정보로만 구성된 리스트를 만들고 싶었어요. 이건 제 파이썬 실력(왕초보)으로도 충분히 할 수 있다고 생각해서 한 번 도전해 봤습니다!

 

 

 

 

문제 정의 : 

- 'cloud_upload', 'audiotrack', '**MB' 등 불필요한 정보들을 제외한 '아티스트 - 노래 제목'으로 구성된 텍스트 출력물을 얻고 싶다.

 

사용할 프로그래밍 언어 & 프로그램 :

파이썬3 

 

구현

input : playlist.txt 

 

 

코드 : 

musicFileList = list()
with open("playlists.txt") as fhand:
    for line in fhand:
        line = line.strip()
        if line == '':
            continue
        if line == "cloud_upload" or line == "audiotrack" or line == "cloud_done":
            continue
        else:
            musicFileList.append(line.rstrip('.mp3'))
musicFileList = musicFileList[::2]
with open("PlayList.txt","w") as wf:
    wf.write(str(len(musicFileList))+'songs from climb_bounce!\n\n')
    for music in musicFileList:
        wf.write(music+'\n')

 

output : PlayList.txt

짠~ 

혹시나 해서 맨 첫 줄에 몇 곡인지 찍어봤는데 예상대로 576곡이 나왔습니다. 축하축하~!

그리고 '여기 음악 좋다~!' 라고 같은 생각을 한 친구에게도 이 리스트를 보내줬습니다. 완전 뿌듯 ㅎㅎ

 

 

'흑흑 내 파이썬 스킬은 왕초보수준이야... 이 정도 수준으론 어디 가서 파이썬 쓸 줄 안다고 말하지도 못해'라는 생각을 갖고 있습니다. 이런 생각은 변함이 없지만, 그래도 파이썬을 배운 게 완전 쓸모없는 일은 아니었다는 생각에 내심 기분이 좋아져서 오랜만에 일기로 남겨봤습니다. 사소하지만 강력하고 사용이 쉬웠어요. 게다가 직접 필요에 의해 프로그래밍을 짜 본다는 게 정말 유익한 경험이었습니다. 앞으로도 느리지만 꾸준하게 파이썬 언어 사용을 잘 연마해서, 사소하게 도움받는 일이 종종 있기를 바라고 있습니다. ;)   

 

흠흠.. 이 다음에는 저 리스트로부터 내 apple music playlist를 구성해주는 매크로를... 만들 수 있을까?