因為不想給小朋友和手機使用,所以買了一台帶螢幕的播放器。
這台老人播放器很低階
只支援 Dvix / mp4 / 360P 的mp4(mp4,avi,rmvb,mp3影音格式都「有限」的支援)
先不講,為了要解決unsupport format測試了很久才找到上面的參數。
音檔來源:線上發音課整個播放清單,使用yt-dlp整個下載回來,內含metadata等相關說明
因為,來源,有的是zoom錄影,有的是手機拍攝,所有解析度從1080P(手機)到480P(Zoom)都有
而且播放清單的順序,是從A~Z,但是拍攝的時間卻不是全都依序
另外,用播放器播放時,播放順序不是檔名,而是建立/修改日期
所以…
我寫了一隻python以檔名,排序,取得當時時間,依序修改每個檔案建立日期和修改日期。
但是…對岸來的,所以播放檔名如果是正體中文,是看不到的,所以修改這隻python在改檔名時,順便做了簡繁轉換。
利用ChatGPT和Google Gemini來做測試,對同一隻程式進行修改
import os
import datetimedef change_file_times(directory):
# 獲取目錄下的所有 mp4 文件,依檔案名稱排序
files = sorted([f for f in os.listdir(directory) if f.endswith(‘.mp4′)])# 獲取當前時間
now = datetime.datetime.now()# 遍歷每個文件,修改建立時間和修改時間
for index, file in enumerate(files):
file_path = os.path.join(directory, file)# 設置新的建立時間和修改時間,每個文件加上一分鐘
new_time = now + datetime.timedelta(minutes=index + 1)
new_timestamp = new_time.timestamp()# 修改建立時間和修改時間
os.utime(file_path, (new_timestamp, new_timestamp))# 顯示檔名和修改的日期
print(f’檔名:{os.path.basename(file_path)},修改的日期:{new_time}’)if __name__ == “__main__”:
# 設置需要處理的目錄,這裡使用當前執行腳本的目錄
directory = os.getcwd()
change_file_times(directory)修改這隻程式,檔名從uft8正體中文,改名成簡體中文
ChatGPT寫出來的程式,可以執行,沒有任何的問題
要修改這隻程式,將檔名從 UTF-8 正體中文改為簡體中文,你可以使用 opencc 庫來實現這個功能。這裡我們會在程式中加入對檔名的轉換步驟。
首先,確保你已經安裝了 opencc 庫。你可以使用以下命令來安裝:
bash
pip install opencc-python-reimplemented
安裝完成後,我們來修改程式碼:
import os
import datetime
from opencc import OpenCC# 初始化 OpenCC 轉換器,將繁體轉換為簡體
cc = OpenCC(‘t2s’)def change_file_times(directory):
# 獲取目錄下的所有 mp4 文件,依檔案名稱排序
files = sorted([f for f in os.listdir(directory) if f.endswith(‘.mp4’)])# 獲取當前時間
now = datetime.datetime.now()# 遍歷每個文件,修改建立時間和修改時間
for index, file in enumerate(files):
file_path = os.path.join(directory, file)# 將檔名從正體中文改成簡體中文
simplified_filename = cc.convert(os.path.splitext(file)[0])
output_filename = simplified_filename + ‘.mp4′
output_path = os.path.join(directory, output_filename)# 設置新的建立時間和修改時間,每個文件加上一分鐘
new_time = now + datetime.timedelta(minutes=index + 1)
new_timestamp = new_time.timestamp()# 修改建立時間和修改時間
os.utime(file_path, (new_timestamp, new_timestamp))# 重命名檔案
os.rename(file_path, output_path)# 顯示檔名和修改的日期
print(f’檔名:{os.path.basename(output_path)},修改的日期:{new_time}’)if __name__ == “__main__”:
# 設置需要處理的目錄,這裡使用當前執行腳本的目錄
directory = os.getcwd()
change_file_times(directory)
但是Gemini 寫出來的,卻完全不能用
mport os import datetime def change_file_times(directory): # 獲取目錄下的所有 mp4 文件,依檔案名稱排序 files = sorted([f for f in os.listdir(directory) if f.endswith(‘.mp4′)]) # 獲取當前時間 now = datetime.datetime.now() # 遍歷每個文件,修改建立時間和修改時間 for index, file in enumerate(files): file_path = os.path.join(directory, file) # 設置新的建立時間和修改時間,每個文件加上一分鐘 new_time = now + datetime.timedelta(minutes=index + 1) new_timestamp = new_time.timestamp() # 修改建立時間和修改時間 os.utime(file_path, (new_timestamp, new_timestamp)) # 顯示檔名和修改的日期 print(f’檔名:{os.path.basename(file_path)},修改的日期:{new_time}’) if __name__ == “__main__”: # 設置需要處理的目錄,這裡使用當前執行腳本的目錄 directory = os.getcwd() change_file_times(directory)
修改這隻程式,檔名從uft8正體中文,改名成簡體中文
顯示草稿
Sure, here is the modified code that changes the filenames from Traditional Chinese to Simplified Chinese:
import os
import datetimedef change_file_names(directory):
# Get all mp4 files in the directory, sorted by filename
files = sorted([f for f in os.listdir(directory) if f.endswith(‘.mp4′)])# Get the current time
now = datetime.datetime.now()# Iterate through each file and modify the creation and modification time
for index, file in enumerate(files):
file_path = os.path.join(directory, file)# Get the filename and extension
filename, extension = os.path.splitext(file)# Convert the filename from Traditional Chinese to Simplified Chinese
simplified_filename = convert_to_simplified_chinese(filename)# Create the new filename
new_filename = simplified_filename + extension# Set the new creation and modification time, adding one minute for each file
new_time = now + datetime.timedelta(minutes=index + 1)
new_timestamp = new_time.timestamp()# Rename the file
os.rename(file_path, os.path.join(directory, new_filename))# Print the filename and modified date
print(f’Filename: {new_filename}, Modified Date: {new_time}’)def convert_to_simplified_chinese(traditional_text):
# Use a library or online tool to convert Traditional Chinese to Simplified Chinese
simplified_text = traditional_text # Replace this line with the actual conversion codereturn simplified_text
if __name__ == “__main__”:
# Set the directory to process, here we use the current directory
directory = os.getcwd()change_file_names(directory)
convert Traditional Chinese to Simplified Chinese, you can use a library like hanzi2hant or an online tool like Baidu Translate [已移除無效網址].
Here is an example of how to use the hanzi2hant library:
import hanzi2hant
def convert_to_simplified_chinese(traditional_text):
simplified_text = hanzi2hant.convert(traditional_text)
return simplified_text
Once you have installed the hanzi2hant library, you can replace the # Replace this line with the actual conversion code comment in the convert_to_simplified_chinese function with the code above.
Please note that this code assumes that the filenames are valid UTF-8 encoded Traditional Chinese characters. If the filenames contain any invalid characters, you may need to handle them differently.
先不確定百度的方案能不能用,光是不能離線處理,這個功能就不算完全,於是我給Gemini一個新的修改方向
==>修改這隻程式,不要使用百度的方案,採用opencc-python-reimplemented來做正簡體轉換。
import os
import datetime
import opencc
def change_file_names(directory):
# Get all mp4 files in the directory, sorted by filename
files = sorted([f for f in os.listdir(directory) if f.endswith('.mp4')])
# Get the current time
now = datetime.datetime.now()
# Create an OpenCC converter for Traditional Chinese to Simplified Chinese conversion
converter = opencc.OpenCC('t2s')
# Iterate through each file and modify the creation and modification time
for index, file in enumerate(files):
file_path = os.path.join(directory, file)
# Get the filename and extension
filename, extension = os.path.splitext(file)
# Convert the filename from Traditional Chinese to Simplified Chinese using OpenCC
simplified_filename = converter.convert(filename)
# Create the new filename
new_filename = simplified_filename + extension
# Set the new creation and modification time, adding one minute for each file
new_time = now + datetime.timedelta(minutes=index + 1)
new_timestamp = new_time.timestamp()
# Rename the file
os.rename(file_path, os.path.join(directory, new_filename))
# Print the filename and modified date
print(f'Filename: {new_filename}, Modified Date: {new_time}')
if __name__ == "__main__":
# Set the directory to process, here we use the current directory
directory = os.getcwd()
change_file_names(directory)
pip install opencc-python-reimplemented
python filename.py
相關的說明完整,而且能正常使用,和ChatGPT產出的程式碼品質相同。
說在後面
其實我有想過,把小孩裝的APP全部移掉,相關影片放在內存,,上網封起來,應該就OK了,但是我們家的女王大人不同意,只好搞死我自己
小朋友還不會善用工具前,要給他足夠的限制,但是大人就會做好控制嗎?昨天女王大人快十一點回家,追劇追到早上五點被我趕去睡,好像也沒有比較好。
20240703 影片的格式,我原本是用ffmpeg去轉檔,結果轉檔出來的影片,播放器還是不支援。
我是使用格式工廠做轉檔,在快速參數硬換上,格式工廠,還是比使用ffmpeg來的簡易一些。
隨機文章
- php5連接Oracle資料庫 (2008-07-09)
- 20170524 PTT 目前暫不開放手動認證 (2017-05-25)
- 華碩力護EeePC 反擊宏碁 (2007-11-09)
- php/mysql 更新安裝 @ CentOS 5.4 (2010-03-31)
- 連財金媒體都在追駙馬爺的資料 媒體真的是夠了 (2013-03-15)