栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java实现酷狗音乐临时缓存文件转换为MP3文件的方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java实现酷狗音乐临时缓存文件转换为MP3文件的方法

本文实例讲述了java实现酷狗音乐临时缓存文件转换为MP3文件的方法。分享给大家供大家参考,具体如下:

酷狗临时缓存文件,其实已经是吧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 temps = fileMd5Map(tempPath);
    Map 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 fileMd5Map(String path) {
    File dirFile = new File(path);
    Map map = null;
    if (dirFile.isDirectory()) {
      map = new HashMap();
      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 krcNameMd5Map(String path){
    File dirFile = new File(path);
    Map map = null;
    if (dirFile.isDirectory()) {
      map = new HashMap();
      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 tempDir ="D:/KuGou/mp3";
    String krcDir="D:/KuGou/Lyric";
    ktf.ChangeByDir(tempDir, krcDir);
}

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

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

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/149417.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号