长久未登录CSDN了,发现之前的博文,批量修改喜马拉雅下载节目的文件名下有很多朋友留言,需要代码的人很多,看来有困难的人还不少。

在此,贴出代码,有需要的朋友可以下载使用。

用法:

cd 下载目录 (喜马拉雅App里可以看到这个下载目录设置)

python Himalaya-TitleName.py

之后目录名和文件名就自动修改好了,重复执行好像存在一点问题,其它问题请遇到的朋友告诉我。

Python源码下载链接: https://pan.baidu.com/s/10UruUhPptxqPAxBvCHUvqw 提取码: hcc8

#!/usr/bin/python
# -*- coding: UTF-8 -*-#Author: xDoom (李洪伟)import os, json, string
import re#Windows文件名中的非法字符. 注意这里的\\和\"是用了转义符
illegal_Char = re.compile(r"[/\\:*?\"<>|]")   #
#读取目录中的所有文件,返回列表
#
def getfileList( p ):p = str( p )if p=="":return [ ]p = p.replace( "/","\\")if p[ -1] != "\\":p = p+"\\"a = os.listdir( p )b = [ x   for x in a if os.path.isfile( p + x ) ]return b#
#修改目录下的所有文件名
#
def ren_files(dir):updir = os.getcwd()subdir =  ".\\"+dir  if not os.path.exists(subdir):return os.chdir(subdir)   print(os.getcwd())#####修改文件######获取上级目录下的list文件,是个多维JSON,包括了目录下所有节目信息infofilepath = updir + "\\" + dir + "list.json"infofile = open(infofilepath,'r',encoding = "utf-8")playlist = json.load(infofile)#print(playlist) #print(len(playlist))   for i in range(len(playlist)):print(playlist[i]["uid"])#some item not real file if (playlist[i]["uid"] == 0):         continueold =  str(playlist[i]["id"]) + ".m4a"new = playlist[i]["title"] + ".m4a"   new = re.sub(illegal_Char,"x",new)#同一目录下会有同名文件,奇葩的喜马拉雅if (os.path.exists(new)):new = new = playlist[i]["title"] + str(playlist[i]["trackId"]) + ".m4a"new = re.sub(illegal_Char,"x",new)#print总是要按控制台的默认编码打印,有些节目名包含“0xc2a0”这个字符,是特殊的“-”符号,#GBK无法编码这个字符,所以我们这里先主动编码一下,对无法解释的字符选择ignore,然后解码,print(old,"==>", new.encode("gbk","ignore").decode("gbk"))try:os.rename(old, new);     except Exception as e:print(e)      infofile.close()    #####修改文件结束#####    os.chdir(updir)#####修改目录名#####infofilepath = updir + "\\" + dir + "info.json"   print(infofilepath)infofile = open(infofilepath,'r',encoding = "utf-8")playlist = json.load(infofile)old =  dir new = playlist["title"]  new = re.sub(illegal_Char,"x",new)#改变目录名,如果重复执行if (os.path.exists(new)):new = new + "-1"print("dir: ",old,"==>", new)try:os.rename(old, new);except Exception as e:print(e)infofile.close()#####修改目录名结束#####returnif __name__ == '__main__':dirlist =  getfileList(os.getcwd())#喜马拉雅的节目名都是字符编码pattern = re.compile(r"\d*\d")# 每个节目有xxxinfo.json和xxxlist.json两个文件,只进一个即可visitdir = []for album in dirlist:dirindex = pattern.findall(album)#print(dirindex)  if  not ( dirindex in visitdir ) and (dirindex != []):try:visitdir.append(dirindex)ren_files(dirindex[0])  except IOError as msg:print("IOError. Msg=", msg)print("Done!")

源码:批量修改喜马拉雅下载节目的文件名相关推荐

  1. android系统源码7.1.2_r8下载,编译,运行到nexus5X上,修改源码并编译SDK进行测试

    一,学习android系统源码下载,编译的作用 1,可以自己 DIY 自己的rom系统,从系统层面,宏观的加深理解 android系统 2,编译自己的 userdebug(原生root权限) rom, ...

  2. 源码|批量执行invokeAll()多选一invokeAny()

    ExecutorService中定义了两个批量执行任务的方法,invokeAll()和invokeAny(),在批量执行或多选一的业务场景中非常方便.invokeAll()在所有任务都完成(包括成功/ ...

  3. 520表白网站(附源码与修改教程)

    520网站(附源码与修改教程) 一.前言 二.作品简介 三.表白小网站的修改 四.总结及其获取方式 一.前言 马上520了,有男朋友或者女朋友的小伙伴呢,可能又带来一个烦恼了,又是一个烦人的520,我 ...

  4. 超好看的辅助网站html源码 记事本修改即可

    介绍: 纯html源码记事本修改就好了用途我就不说了大家都知道 安装步骤: 记事本修改好上传服务器或主机根目录参考修改教程和搭建教程 网盘下载地址: http://kekewl.net/lWmTchu ...

  5. 反编译apk修改v7包_微信Android SDK反编译还原源码 进行修改重新编译

    一.介绍 微信sdk,做开发的都应该用过,微信分享.支付,都要用到的. 接下来,跟着我,把他的sdk源码还原为一个module可编译的形式. 用到的工具: jadx: 这是一款反编译apk和jar包的 ...

  6. java 官网下载jdk源码_openJDK之如何下载各个版本的openJDK源码

    如果我们需要阅读openJDK的源码,那么需要下载,那么该去哪下载呢? 现在JDK已经发展到版本10了,11已经处于计划中,如果需要特定版本的openJDK,它们的下载链接在哪呢? 1.openJDK ...

  7. jdk下没有java源码_openJDK之如何下载各个版本的openJDK源码

    如果我们需要阅读openJDK的源码,那么需要下载,那么该去哪下载呢? 现在JDK已经发展到版本10了,11已经处于计划中,如果需要特定版本的openJDK,它们的下载链接在哪呢? 1.openJDK ...

  8. 2022最新oneNav导航系统源码全开源版本下载总裁导航

    介绍 2022最新导航系统源码全开源版本下载 导航系统2022最新开源版,所有文件均已开源,用户可自行更改二开,没有授权代码 没有后门 用户可自行D盾扫描,响应式布局,支持搜索框弹窗,支持暗夜模式,文 ...

  9. python 操作键盘,鼠标 。我这个是自动企业微信加好友的,源码可以修改成别的。挺好使!

    python 操作键盘,鼠标 .我这个是自动企业微信加好友的,源码可以修改成别的.挺好使! 键盘的按键码可以去百度搜,大体就是这么操作的 import win32con import win32api ...

最新文章

  1. 大话RxJava:一、初识RxJava与基本运用
  2. 作幼儿教育软件的感受(2005-05-09)
  3. php检测函数是否存在函数 function_exists
  4. NTU课程笔记 MAS714(2) Big-O notations
  5. 程序员面试题精选100题(55)-不用+、-、×、÷做加法[算法]
  6. 速卖通代运营靠谱吗?招人做对比代运营,找代运营经验分享
  7. 内核kernel以及根文件系统rootfs是如何映射到对应的nand flash的
  8. AOE网的关键路径的计算
  9. Entropay(欧贝通)
  10. 上海交通大学2002年数学分析考研试题
  11. Mysql中有哪些数据类型(建议收藏)
  12. 基于深度学习的人脸表情识别实现
  13. php一句话跨域,php跨域怎么解决
  14. 大米云主机首批优秀体验师新鲜出炉——软件服务篇
  15. java md5加密 jar包,java md5加密工具类学习示例
  16. POI(兴趣点)抓取工具
  17. 《中国历史2000问》读后笔记
  18. 跑跑卡丁车rush服务器维护,跑跑卡丁车rush+每日必做事情整理得丰富奖励
  19. C语言 Sn=a+aa+aaa+……之值,其中a是一个数字,n表示a的位数,n由键盘输入。
  20. uniapp登陆页面功能

热门文章

  1. Excel PivotTable 使用心得手顺分享(五)
  2. iTween那些事儿(二)
  3. c语言k1什么意思啊,一张图告诉你斐讯路由器K1S、K2,K2C的区别-路由器交流
  4. Windows10 深度美化
  5. 最新微信公众号文章数据导出软件工具
  6. 如何查询微信安全情况?域名被微信拦截的因素?
  7. 宏碁掠夺者Predator首款RGB内存条即将发售,特挑三星B-Die颗粒
  8. python中时间模块datetime总结
  9. DW1000学习之路(三)--------DW1000的中断处理问题
  10. HA高可用与负载均衡入门到实战(四)---- 配置nginx防盗链和HTTPS