目錄
前言
一、appleMusic支持的音頻格式有什么?
二、在CSDN上尋求幫助并加入自己的想法
1.找大神的現成代碼
2.因為我突然想找點其他新鮮的(有沒有小白用的exe)哈哈哈
3.發現如果不用大佬的py代碼的話,得想辦法把flac格式再轉化
1.如標題所說,然后我寫了轉化方法:
2.但是我畢竟是是需要批量轉換所以寫了個單個檔案夾下的所有flac轉換為MP3
3. 因為中間測驗,好多檔案都有重復,所以找了一個大佬的去重代碼
4. 又因為中間測驗,好多檔案都亂套了,所以就寫了一個分類的方法
總結
前言
出于想從網易云轉換成appleMusic的user,發現網易云下載下來的檔案格式都是ncm的,問題來了,無法匯入到appleMusic,然后就有了后面的故事,,,,
一、appleMusic支持的音頻格式有什么?
AAC、Apple 保真壓縮、MP3 及其他,很明顯最常見的就是MP3,所以我就開始想辦法轉換格式為MP3
二、在CSDN上尋求幫助并加入自己的想法
1.找大神的現成代碼
經過不懈的努力終于找到一位大佬的代碼!(你是俺哥)
傳送門哈哈哈哈
2.因為我突然想找點其他新鮮的(有沒有小白用的exe)哈哈哈
找了好久發現,只有免費的把ncm轉換為flac格式的exe,這是我下載用的exe
3.發現如果不用大佬的py代碼的話,得想辦法把flac格式再轉化
1.如標題所說,然后我寫了轉化方法:
# 單個檔案轉換
def file_transform(filepath):
if '.flac' in filepath:#識別是不是flac格式檔案
song = AudioSegment.from_file(filepath)#flac轉MP3轉換后存在song變數里
filepath_new = filepath.replace('.flac', '.mp3')#為下一句輸出本地改目錄檔案后綴名
song.export(filepath_new, format="mp3")#存于本地,格式是MP3
if os.path.exists(filepath_new):#在本地查找是否存在剛存于本地的檔案,有的也就成功了,
# 沒有的話,看一下輸出地址是不是有問題
print('file completed!')
else:
print('failed!')
2.但是我畢竟是是需要批量轉換所以寫了個單個檔案夾下的所有flac轉換為MP3
我用的函式嵌套,filepath是完整的路徑+檔案名, disfilepath只需要你想要的目標路徑,自認為這段代碼的優點是避免重復勞動(篩選出目的檔案夾里沒有的檔案,再對這些檔案轉換)
# 一個檔案夾下所有flac格式檔案批量轉換成MP3
def folder_all(filepath,disfilepath):
sum = 0 # 用于計數需要轉換的總任務量
count = 0 #已經進行的任務數
success=0# 用于計數轉換成功的個數
failnum = 0 # 轉換失敗的個數
name_file_fail = []#存放失敗的檔案名
# 轉化函式方法
def flac2mp3(filepath, name, after_filepathName, success, failnum,name_file_fail):
name_new = name.replace('.flac', '.mp3')#更改轉換后的檔案后綴名
file_namepath_before = os.path.join(filepath, name)#拼接轉換前檔案的路徑和檔案名
song = AudioSegment.from_file(file_namepath_before)#老樣子轉換
song.export(after_filepathName, format="mp3")#匯出到本地
if os.path.exists(after_filepathName):#存在,成功數+1
success +=1
else:
failnum+=1
name_file_fail.append(name)#否則,失敗數+1,并加入失敗串列
filenames = os.listdir(filepath)#獲取檔案夾下所有檔案的名字(包含后綴名)
"""
先計算總共需要轉換多少個檔案,防止重復轉換,畢竟批量處理需要的時間也不短
用于轉換時知道轉換總進度的進展,我一開始覺得這段回圈無所謂,但是當我轉換
300多個檔案時,發現,這真他媽香!!!
"""
for filename in filenames:#遍歷每個檔案名
if '.flac' in filename:#如果檔案名后綴為.flac,則進入一下回圈體
after_filename= filename.replace('.flac', '.mp3')#更改原檔案的后綴名為.mp3
after_filepathName= os.path.join(disfilepath, after_filename)#再把目標檔案路徑和改后的檔案名組合拼接起來
if os.path.exists(after_filepathName):#核查你的目的檔案夾里是否存在這個檔案mp3格式的檔案存在
pass
else:
sum += 1#不存在那就總任務量+1
for filename in filenames:#遍歷每個檔案名
if '.flac' in filename:#如果檔案名后綴為.flac,則進入一下回圈體
after_filename= filename.replace('.flac', '.mp3')#更改原檔案的后綴名為.mp3
after_filepathName= os.path.join(filepath, after_filename)#再把檔案路徑和改后的檔案名組合拼接起來
if os.path.exists(after_filepathName):#如果存在則跳過,進行下一個
continue
else:
flac2mp3(filepath, filename, after_filepathName,
success, failnum, name_file_fail)#不存在則呼叫flac2mp3方法;初始檔案路徑,檔案名,
# 目的檔案路徑(包含檔案名),成功數,失敗數,失敗的陣列 這5個引數給它踢過去
count += 1
f = count / sum * 100#計算任務進度
print('進度{}%'.format('%.2f' % f))#輸出是保留小數點后2位(四舍五入)
else:
continue#如果檔案名后綴不是.flac,則進行下一個檔案
print('檔案夾下共{}個'.format(len(filenames)))#報告這個檔案夾下所有檔案數
print('總任務數:{}個'.format(sum))#報告總任務數
print('轉換全部完成')
print('共轉換成功{}個'.format(success))
if failnum !=0: #如果有失敗的,就輸出失敗數量,及失敗名單
print('失敗{}個'.format(failnum))
';'.join(name_file_fail)
3. 因為中間測驗,好多檔案都有重復,所以找了一個大佬的去重代碼
傳送門哈啊哈
4. 又因為中間測驗,好多檔案都亂套了,所以就寫了一個分類的方法
#篩選flac和MP3檔案歸類到各自檔案夾
def file_sift(filepath, disfilepath1, disfilepath2):#引數:想要分類的檔案夾,目的檔案路徑1,目的檔案路徑2
filenames = os.listdir(filepath)
for filename in filenames:#獲取所有檔案名
if '.flac' in filename:
shutil.move(os.path.join(filepath,filename), os.path.join(disfilepath1,filename))#組合路徑和檔案名,后移動
elif '.mp3' in filename:
shutil.move(os.path.join(filepath,filename), os.path.join(disfilepath2,filename))
else:
continue
總結
對于網易云的操作能理解,畢竟里面有著作權而且也要鎖住用戶,搬磚人搬磚魂,一切源于好奇,和對python的強烈的興趣,如果對你有用,那是我的榮幸之至;如果沒啥用,我就只是哈哈哈哈啊哈哈,分享一下我解決我實作想法難題的程序,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/357009.html
標籤:其他
上一篇:【演算法】異或演算法找缺失的數-力扣兩道經典題目的講解
下一篇:周報的記錄
