google driveの重複をハイライトするブックマークレットを書いた
google driveの無限ストレージが無くなってしまうのでNasを買ってrcloneで移そうと思ったら NOTICE: xxx/yyy.mp3: Duplicate object found in source - ignoring
と言われてgoogle drive上に同じファイルが複数あることがわかった。
どうもアップロードする際にミスして同じファイルを別のものとしてアップロードしてしまったみたい。一応コピーはできているっぽいので方っておいてもいい気もするけど、整理も兼ねて消したい。仕方ないので手作業で削除しようにもめんどくさかったので同名のファイルをハイライトするブックマークレットを書いた*1
tl;dr
以下のものをコピーして、ブックマークとして保存し、google drive上で実行
javascript:(()=>{(()=>{function a(n){let t=n,l=t.querySelector('[role="gridcell"] div:nth-child(2)').innerText;return{elm:t,title:l}}function i(){let n=document.querySelectorAll('[data-target="doc"]'),t=Array.from(n).map(a).reduce((e,{elm:r,title:o})=>{var c;return e.set(o,[...(c=e.get(o))!=null?c:[],r]),e},new Map),l=!1;t.forEach(e=>{e.length>=2&&(l=!0,e.forEach(r=>{r.style.backgroundColor="rgb(255, 255, 0)"}))}),l&&alert("found duplicate!!")}i()})();})();
使い方
- リポジトリをcloneし
yarn build
を実行するか、上記のコードをコピー - google driveをブラウザで開き、確認したいフォルダを開く
- 画面をスクロールし、全てのファイルを表示させる
- コードをbookmarkletか、コンソールを開いて実行
塗りつぶしているのでわかりにくいが、重複しているファイルが画像のように黄色くハイライトされる
雑感
久しぶりにbookmarklet書いたけど、esbuildでビルドする段階でminifyまですることが可能なのでとても簡単になったな
*1:rcloneのログがリストとしてあるんだけどなんとなく削除を自動化するのは怖かった