酷狗音乐的临时缓存文件转换为MP3文件,java源码

本文介绍如何使用Java将酷狗音乐的临时缓存文件,通过MD5命名规则找到对应的歌词文件,并将其转换为标准的MP3格式。程序主要使用ChangeByDir方法处理缓存文件夹和歌词文件夹。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

酷狗临时缓存文件,其实已经是吧MP3文件下载好了,只是名字看上去好像是通过md5算法重命名的。

酷狗在缓存文件的时候会同时缓存歌词。这个程序就是根据md5管理对应的歌词文件和缓存文件,然后把缓存文件改成 歌曲名+.mp3格式。

原谅我取这么长也不知道对不对的类名。

package com.zhou.run;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

public class KugouTempFileToMp3AndModifyNameToTrueName {
	public static String KGTEMP = ".kgtemp";
	public static String KRC = "krc";

	public void Change(String tempPath, String krcPath) {
		File temp = new File(tempPath);
		File krc = new File(krcPath);
		if (temp.exists() && temp.getName().endsWith(KGTEMP)) {
			String filename = temp.getName();
			String filemd5 = filename
					.substring(0, filename.lastIndexOf(KGTEMP));
			if (!krc.exists())
				return;
			String krcname = krc.getName();
			String krcmd5 = krcname.substring(krcname.lastIndexOf("-") + 1,
					krcname.lastIndexOf(KRC) - 1);
			String mp3name = krcname.substring(0, krcname.lastIndexOf("-"));

			if (krcmd5.equals(filemd5)) {
				String path = temp.getPath().substring(0,
						temp.getPath().lastIndexOf("\\"));
				File mp3File = new File(path + "\\" + mp3name + ".mp3");
				temp.renameTo(mp3File);
			}
			System.out.println(filename + "  " + filemd5);
			System.out.println(krcname + "  " + mp3name + "  " + krcmd5);
		}
	}
	
	public void ChangeByDir(String tempPath,String krcPath){
		Map<String,File> temps = fileMd5Map(tempPath);
		Map<String,String> mp3Names = krcNameMd5Map(krcPath);
		for(String key :temps.keySet()){
			File f = temps.get(key);
			if(f.exists()){
				String path = f.getPath().substring(0,
						f.getPath().lastIndexOf("\\"));
				String mp3Name = mp3Names.get(key);
				File mp3File = new File(path + "\\" + mp3Name + ".mp3");
				if(f.renameTo(mp3File)){
					System.out.println(f.getName()+"  to  "+mp3File.getName());
					System.err.print("   SUCCESS");
				}
			}
		}
		
	}

	public Map<String, File> fileMd5Map(String path) {
		File dirFile = new File(path);
		Map<String, File> map = null;
		if (dirFile.isDirectory()) {
			map = new HashMap<String, File>();
			for (File f : dirFile.listFiles()) {
				if (f.exists()&&f.isFile()&& f.getName().endsWith(KGTEMP)) {
					String filename = f.getName();
					String filemd5 = filename.substring(0,
							filename.lastIndexOf(KGTEMP));
					map.put(filemd5, f);
				}
			}
		}
		return map;
	}
	
	public Map<String,String> krcNameMd5Map(String path){
		File dirFile = new File(path);
		Map<String, String> map = null;
		if (dirFile.isDirectory()) {
			map = new HashMap<String, String>();
			for (File f : dirFile.listFiles()) {
				if (f.exists()&&f.isFile()&& f.getName().endsWith(KRC)) {
					String krcname = f.getName();
					if(!krcname.contains("-"))continue;
					
					String krcmd5 = krcname.substring(krcname.lastIndexOf("-") + 1,
							krcname.lastIndexOf(KRC) - 1);
					String mp3name = krcname.substring(0, krcname.lastIndexOf("-"));
					map.put(krcmd5, mp3name);
				}
			}
		}
		return map;
	}
}



public static void main(String[] args) {
		KugouTempFileToMp3AndModifyNameToTrueName ktf = new KugouTempFileToMp3AndModifyNameToTrueName();
		/*String tempPath = "D:/KuGou/mp3/2fad259e357078e89404be12e1fd7ae3.kgtemp";
		String krcPath ="D:/KuGou/Lyric/周杰伦、袁咏琳 - 怎么了-2fad259e357078e89404be12e1fd7ae3.krc";
		ktf.Change(tempPath,krcPath);*/
		
		String tempDir ="D:/KuGou/mp3";
		String krcDir="D:/KuGou/Lyric";
		ktf.ChangeByDir(tempDir, krcDir);
	}


Change(string,string) 方法只是用来测试用的。调一下字符串之类的


主要使用ChangeByDir方法,参数是临时文件的文件夹和歌词文件的文件夹



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值