lchloride / NeteaseMusicCacheDecode

This project is used to decode music cache file from Netease Music.
24 stars 10 forks source link

请教一下怎么获取到源文件名 #2

Closed ysheaven closed 6 years ago

ysheaven commented 6 years ago

C白痴,看不懂代码,Python没有相关功能。我用java重写了一份

lchloride commented 6 years ago

可以使用java.io.File.listFiles()来获得指定路径的全部文件(包含目录),然后筛选一下

    public static void main(String[]args) {
        File curDir = new File(".");
        getAllFiles(curDir);
    }
    private static void getAllFiles(File curDir) {
        File[] filesList = curDir.listFiles();
        for(File f : filesList){
            if(f.isDirectory())
                System.out.println("DIR "+f.getName());
            if(f.isFile()){
                System.out.println("FILE "+f.getName());
            }
        }
    }

个人觉得Python还是更好写一点,虽然比较慢

ysheaven commented 6 years ago

不不,大概是我没描述清楚,这个应该只是获取当前文件名,比如"34880507-320-2c366efc30f754b6570312459a050fc3.uc"的文件调用getName()方法获取到的还是"34880507-320-2c366efc30f754b6570312459a050fc3.uc" c版本有个功能是”自动获取文件名“,效果是生成文件的文件名是真正的音频文件名,这个要怎么做

lchloride commented 6 years ago

这个功能有点像爬虫,首先获取地址为music.163.com/#/song?id=音乐id(来自文件名)的网页源码,然后从网页源码中利用字符串匹配找到歌手和歌曲名,最后对歌曲名进行简化(去掉多余的描述信息)并和歌手名拼接。java下应该有一些爬虫框架可以使用,自己写也不算很复杂。另外注意一些获取不到歌曲信息的情况。

ysheaven commented 6 years ago

原来如此 非常感谢