当前位置: 首页 > news >正文

有爱听《红楼梦》的程同行吗?Python 对红楼梦音频文件排序

背景

2022年从网络公开渠道爬到了蒋勋老师的细说红楼梦80回的音频,爬虫得到的文件命名是乱序的,曾经想排序来的,后来就忘记了。

最近突然想起这套音频资源了,想着做个排序吧。

未排序之前,按爬虫的顺序存储的文件:
在这里插入图片描述

解决办法

找到写了一半的代码,继续完善。主要思路:遍历目标文件,解析每个文件中的章回数,然后再对文件名称拼接上两位数字的章回数后,重命名。

Python 源码:

import os
#目标目录
dir = '/Applications/2022MyTextFiles/80回蒋勋讲红楼梦'
#汉字和数字映射关系
chinese_numbers = {'一':'1','二':'2','三':'3','四':'4','五':'5','六':'6','七':'7','八':'8','九':'9','十': '0'
}# 遍历文件:重命名
for root, dirs, files in os.walk(dir):for file in files:#查找章回的位置,且必须排除掉系统文件if file == '.DS_Store':continueprint(file)indexOfOrder=file.index("回")# 找回数ordNum=file[1:indexOfOrder]#文件名称前拼接两位数的回数,总共就5种情况newName=''if ordNum == '十' : # 第十回newName='10'elif ordNum.endswith('十'):#第十回newName=chinese_numbers[ordNum[0]]+'0'elif len(ordNum) == 1: #第一~九回newName = '0'+chinese_numbers[ordNum[0]]elif ordNum.startswith('十'):#第几十回newName = '1'+chinese_numbers[ordNum[1]]else:#第几十几回newName = chinese_numbers[ordNum[0]]+chinese_numbers[ordNum[2]]#重命名,注意加上文件根路径os.rename(root+'/'+file,root+'/'+newName+file)print('完成')

排序效果:
在这里插入图片描述
按章回序号排序后,顺眼多了!

启示录

2016年在某平台听到《蒋勋细说红楼》音频,相见恨晚,听了一阵,后来音频收费且贵,甚是遗憾。直到2022年发现了蒋勋老师的官号,也找到一个公开渠道。激动之余怕又找不到了,就用爬虫抓下来,偶尔听听。

今年那个公开网址已经不可达了还好当时头脑一热,用 Python 抓到本地了。今年又想起来继续听,打工人的精神食粮啊,妥妥的!

个人用法:青少年文学启蒙,失眠夜里听听,闲暇时光里当作背景乐……曾经高中几个晚自习都没理明白的人物关系,二十年后在这些音频中找到了答案。年少时残存的文学细胞觉醒的中年人,值得一听哦!

有喜欢听《蒋勋细说红楼梦》的程序员吗?需要资源的话,可以分享。


http://www.mrgr.cn/news/16995.html

相关文章:

  • NetSuite AI 图生代码
  • AWS MySQL 升级(二)—— MySQL API逻辑同步升级操作步骤
  • c++11新特性-智能指针
  • vue3 setup基本使用
  • 【赵渝强老师】MongoDB的In-Memory存储引擎
  • Docker容器技术详解
  • 阿里云云盘手动扩展方法
  • 【Redis】Redis 持久化 AOF、RDB—(七)
  • c++11新特性详细解读(未完待续...)
  • 非对称RAID破解SSD异构存储难题
  • JS设计模式之“神奇的魔术师” - 简单工厂模式
  • MySQL密码策略更改(临时+永久)
  • Python 潮流周刊#67:uv 的重磅更新(摘要)
  • 【js逆向专题】4.python调用JS和扣代码
  • 【电子通识】电子元器件可靠性基本概念
  • 大连网站建设手机网页页面设计
  • 指针5.回调函数与qsort
  • JAVA JDBC MYSQL案例
  • Java多线程入门介绍
  • JAVA开源项目 加油站管理系统 计算机毕业设计