Nintendo Switch相册整理

NS的相册是按日期命名的,因此会产生很多文件夹,不太好找对应的照片或视频,而且文件名是md5码。

平时整理照片老费劲,所以我用Qt写了段整理NS照片和视频的代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
#include <QAction>

#define FILE_VIDEO "Video"
#define FILE_PHOTO "Picture"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow) { ui->setupUi(this); mapGameCodeToName = { {"0C015090E6C5E3F06D97FEDE95458758","路易鬼屋3"}, {"0DC6ECE91CF3F6F02BAFC002E3FFBAAD","火焰纹章风花雪月"}, {"2AE606B8659FEA852E0ED6470C9814D9","怪物猎人GU"}, {"3C66B776DB1AA06323037049FACD96D3","精灵宝可梦剑"}, {"3D69A7ED02A1FF371048829E22A49194","暗黑破坏神3"}, {"6E673B692CCAB4448DD9F18F4ECB7015","莱莎的炼金工坊"}, {"57B4628D2267231D57E0FC1078C0596D","switch主机页面"}, {"93C1C73A3BAF9123A15B9B24886B634B","歧路旅人"}, {"257FD939428E4BFE6BF9E2F559D5037A","异界锁链"}, {"1850B5D674B98147F1AD7C6693369685","生化危机启示录2"}, {"16851BE00BC6068871FE49D98876D6C5","马里奥赛车8"}, {"9129043EF2AAD7F1157CF852BACB8F7D","塞尔达梦见岛"}, {"B8FAEF4816CAC2B76D11869B05CA7601","精灵宝可梦盾"}, {"B562FBF831DED9A995A48324FB946776","生化危机启示录1"}, {"D3C2627FB3B01DB86CAE617C61BA4BCD","地狱之刃"}, {"EADB78E442C41D91A4E58DE37C69F333","妖怪手表4"}, {"EAF7CD52A6108603A960A810DB55F2D1","巫师3"}, {"ECCAE210FD0AA1E799B6F807E179FB9A","异度之刃2"}, {"1C2A3E293842562AF12D9CDE40615E70","战场女武神"}, {"1CFA4F0AFF14019A30AD91A509EF4A14","乐高世界"}, {"4A0905EBC935600C869393E1102796BF","乐高DC超级坏蛋"}, {"9BF728FB47714897C7A6F67DC609B6D4","噬神者3"}, {"32DCC16A9522010C678790FFCA00ACC5","马里奥疯兔王国之战"}, {"72CA1DED7AF149F87216AAA92ACC6ECE","NBA2K"}, {"251B606CAAE97CD7BB1849E9DAD12C82","雷曼传奇"}, {"5777DA0A4A4401C64F08970B59E4D6F6","哆啦A梦牧场物语"}, {"9768DE0BB7F81754F000E3332E653D8B","龙之信条"}, {"39044917CFF4239A6A8855A4FBFD24A3","猎天使魔女1"}, {"C2B49A475DF5A340494292A1BD398579","星露谷物语"}, {"D10D2AC2AEDE4E2D25CAE46B7E6326A0","Darksiders Warmastered Edition"}, {"E27E5ADA5A86332E7C52B3562FCF5A27","猎天使魔女2"}, {"EEF8E9558A0946A299305EE281E121B4","Mavel Ulitimate Alliance 3: The Black Order"}, {"FF3DC0CC50E33DEA65489FBE36679C77","战场女武神4"}, {"F3AD23231727C66A0A2E8CCB30040335","生化危机 未知"}, {"2262FEF42D66F7291F98BF381C2CF619","歧路旅人试玩版"}, {"6596C20F0074B600C19784F40D93ECEF","Paladins"}, {"1E1800B8D04F999C436DDFE2B8CD0B81","黑暗之魂1"}, {"2FF2ECD3DBCD8F1B42E9361E6B9E85AB","怪物猎人xx"}, {"3B8C834E3D68EB57C34D0DA0B88E4B3B","星际战甲"}, {"5E92066D83C981FCBC05AE4D9711906A","FC游戏"}, {"7D6F548625BC0EB94C235FFE679A3299","分手厨房2"}, {"8AEDFF741E2D23FBED39474178692DAF","马里奥奥德赛"}, {"11B64E28AD7A49CA9EC8AC007BE858C6","我的世界基岩版"}, {"22A4BDEA5363AAA24F931D5AF2926082","空洞骑士"}, {"74EA5D8C57EB2F39A242F585A490F51B","上古卷轴5"}, {"94CAAF6C83EE682D358EB6183EEF7D28","去吧皮卡丘"}, {"132FFFF5F327DE6F279A68813E35AD5D","塞尔达无双"}, {"5175A9E8354E328724729A6641D0F22F","ARMS"}, {"7589FF7625E38498B948C61898499F87","刺客信条3"}, {"A67942211CD1A968913B304D86B5486A","王者荣耀"}, {"E1A7E95F9E577242170CB3869DA3D3AF","未命名"}, {"E106A613E0C1B6AC88570F1871104D66","生化危机4"}, {"EFC27116AB7654BE16347FB0B3BC7375","沙滩排球3"}, {"F1C11A22FAEE3B82F21B330E1B786A39","塞尔达传说荒野之息"}, {"F489C99A244DF57DCBDC4BFD2DB926F1","堡垒之夜"}, //{"",""}, //{"",""},  }; connect(ui->btnPath, SIGNAL(clicked()), this,SLOT(slotBtnPath())); connect(ui->btnDesPath, SIGNAL(clicked()), this,SLOT(slotBtnDesPath())); connect(ui->btnAccept, SIGNAL(clicked()),this, SLOT(slotBtnAccept())); } MainWindow::~MainWindow() { delete ui; } QFileInfoList MainWindow::getFileList(QString strPath) { QDir dir(strPath); QFileInfoList file_list = dir.entryInfoList(QDir::Files | QDir::Hidden | QDir::NoSymLinks); QFileInfoList folder_list = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); for(int i = 0; i != folder_list.size(); i++) { QString name = folder_list.at(i).absoluteFilePath(); QFileInfoList child_file_list = getFileList(name); file_list.append(child_file_list); } return file_list; } QString MainWindow::getGameName(QString strCode) { if(mapGameCodeToName.contains(strCode)) return mapGameCodeToName[strCode]; else return strCode; } void MainWindow::slotBtnPath() { QString fileName = QFileDialog::getExistingDirectory(); ui->lineEditPath->setText(fileName); } void MainWindow::slotBtnDesPath() { QString fileName = QFileDialog::getExistingDirectory(); ui->lineEditDesPath->setText(fileName); } void MainWindow::slotBtnAccept() { QString fileName = ui->lineEditPath->text(); /* 获取文件信息列表 */ QFileInfoList fileInfoListTemp = getFileList(fileName); /* 将文件移动至整理好的文件夹 */ for(QFileInfo fileInfoTemp: fileInfoListTemp) { QDir dir(fileInfoTemp.filePath()); QString strName = fileInfoTemp.fileName(); QStringList strlistNames = strName.split("-"); /* TODO:这里代码写的比较死 */ if(strlistNames.size() != 2) continue; if(strlistNames[1].isEmpty()) continue; QString strGameName = getGameName(strlistNames[1].remove("." + fileInfoTemp.suffix())); if(strlistCodeAll.contains(strGameName)) { QString strCodePath = ui->lineEditDesPath->text() + "/" + strGameName; QString strDesPath = strCodePath + "/" + fileInfoTemp.suffix(); if(!dir.exists(strCodePath)) dir.mkpath(strCodePath); if(!dir.exists(strDesPath)) dir.mkpath(strDesPath); QFile::rename(fileInfoTemp.filePath(), strDesPath + "/" + fileInfoTemp.fileName()); } else { strlistCodeAll.append(strGameName); } } /* 输出到listView */ ui->listWidgetCode->addItems(strlistCodeAll); }

也就花了十来分钟,其实完全可以用C写,嗯,以后有需求再改进。现在遇到的问题是,md5码我是自己整理的。

猜你喜欢

转载自www.cnblogs.com/fengyaoyao/p/12238025.html