cp-unseen: copy unseen files
parent
16295ce071
commit
f9714006d0
@ -0,0 +1,66 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# Copy unseen files
|
||||||
|
|
||||||
|
import sys
|
||||||
|
if sys.version_info < (3, 3):
|
||||||
|
sys.stderr.write("Sorry, requires at least Python 3.3\n")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import collections
|
||||||
|
import os
|
||||||
|
import pickle
|
||||||
|
import shlex
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
|
||||||
|
def read_seen():
|
||||||
|
global seen
|
||||||
|
try:
|
||||||
|
with open(os.path.expanduser('~/.local/share/cp-unseen/seen.pickle'), 'rb') as f:
|
||||||
|
seen = pickle.load(f)
|
||||||
|
except FileNotFoundError:
|
||||||
|
seen = set()
|
||||||
|
|
||||||
|
|
||||||
|
def save_seen():
|
||||||
|
global seen
|
||||||
|
if not os.path.exists(os.path.expanduser('~/.local/share/cp-unseen')):
|
||||||
|
os.mkdir(os.path.expanduser('~/.local/share/cp-unseen'))
|
||||||
|
with open(os.path.expanduser('~/.local/share/cp-unseen/seen.pickle'), 'wb') as f:
|
||||||
|
pickle.dump(seen, f)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
global seen, drive
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description='Copy unseen files')
|
||||||
|
parser.add_argument('folder', type=str, help='folder to copy from')
|
||||||
|
# XXX folder to copy *to*!
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
read_seen()
|
||||||
|
|
||||||
|
file_list = [os.path.join(dp, f) \
|
||||||
|
for dp, _, filenames in os.walk(args.folder) \
|
||||||
|
for f in filenames]
|
||||||
|
|
||||||
|
for file1 in file_list:
|
||||||
|
if file1 in seen:
|
||||||
|
continue
|
||||||
|
|
||||||
|
local_filename = os.path.basename(file1)
|
||||||
|
if not os.path.exists(local_filename):
|
||||||
|
print(file1)
|
||||||
|
shutil.copy(file1, local_filename)
|
||||||
|
seen.add(file1)
|
||||||
|
save_seen()
|
||||||
|
else:
|
||||||
|
print("{} exists locally!".format(shlex.quote(local_filename)))
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
|
|
||||||
|
main()
|
||||||
|
|
||||||
|
# vim:tw=100:
|
Loading…
Reference in New Issue