Organize comics into folders -- script
2 posters
Page 1 of 1
Organize comics into folders -- script
I think this will make a few users happy...
I made a script, based on the one that makes a folder tree full of links to comics, so that it moves the files instead. It works on Mac OS X 10.10 and I believe in all the other Unix environments, but I can't guarantee.
I organize my comics by Publisher/Series (Volume/StartYear) so that's the folder structure made by this script, but you can easily modify it to suit your needs. Of course files with no metadata will not move.
Usage:
Here's the script, save it to a file and name it move2folder.py
I made a script, based on the one that makes a folder tree full of links to comics, so that it moves the files instead. It works on Mac OS X 10.10 and I believe in all the other Unix environments, but I can't guarantee.
I organize my comics by Publisher/Series (Volume/StartYear) so that's the folder structure made by this script, but you can easily modify it to suit your needs. Of course files with no metadata will not move.
Usage:
- Code:
ComicTagger -S path/to/move2folder.py path/to/your/comics /path/to/your/organized/comics
Here's the script, save it to a file and name it move2folder.py
- Code:
#!/usr/bin/python
"""
Moves comic files based on metadata organizing in a tree by Publisher/Series (Volume)
"""
"""
This script is based on make_links.py by Anthony Beville
Copyright 2015 Fabio Cancedda, Anthony Beville
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""
import sys
import os
import platform
import shutil
from comictaggerlib.comicarchive import *
from comictaggerlib.settings import *
from comictaggerlib.issuestring import *
import comictaggerlib.utils
def make_folder( folder ):
if not os.path.exists( folder ):
try:
os.makedirs(folder)
except Exception as e:
print "{0} Can't make {1} -- quitting".format(e, folder)
quit()
def move_file( source, filename ):
if not os.path.exists( filename ):
shutil.move( os.path.abspath(source) , filename )
def main():
utils.fix_output_encoding()
settings = ComicTaggerSettings()
style = MetaDataStyle.CIX
if platform.system() == "Windows":
print >> sys.stderr, "Sorry, this script works only on UNIX systems"
if len(sys.argv) < 3:
print >> sys.stderr, "usage: {0} comic_root tree_root".format(sys.argv[0])
return
comic_root = sys.argv[1]
tree_root = sys.argv[2]
print "Root is : ", comic_root
if not os.path.exists( comic_root ):
print >> sys.stderr, "The comic root doesn't seem a directory or it doesn't exists. -- quitting"
return
filelist = utils.get_recursive_filelist( [ comic_root ] )
if len(filelist) == 0:
print >> sys.stderr, "The comic root seems empty. -- quitting"
return
make_folder( tree_root )
#first find all comics with metadata
print "Reading in all comics..."
comic_list = []
max_name_len = 2
for filename in filelist:
ca = ComicArchive(filename, settings.rar_exe_path )
if ca.seemsToBeAComicArchive() and ca.hasMetadata( style ):
comic_list.append((filename, ca.readMetadata( style )))
max_name_len = max ( max_name_len, len(filename))
fmt_str = u"{{0:{0}}}".format(max_name_len)
print >> sys.stderr, fmt_str.format( filename ) + "\r",
sys.stderr.flush()
print >> sys.stderr, fmt_str.format( "" )
print "Found {0} tagged comics.".format( len(comic_list))
# walk through the comic list and moves each one
for filename, md in comic_list:
print >> sys.stderr, fmt_str.format( filename ) + "\r",
sys.stderr.flush()
#do publisher/series organizing:
fixed_series_name = md.series
if fixed_series_name is not None:
# some tweaks to keep various filesystems happy
fixed_series_name = fixed_series_name.replace(":", " -")
fixed_series_name = fixed_series_name.replace("/", "-")
fixed_series_name = fixed_series_name.replace("?", "")
series_folder = os.path.join(tree_root, str(md.publisher), unicode(fixed_series_name) + " (" + str(md.volume) + ")")
make_folder( series_folder )
move_file( filename, os.path.join(series_folder, os.path.basename(filename)) )
if __name__ == '__main__':
main()
FCanc- Posts : 6
Join date : 2015-01-10
Re: Organize comics into folders -- script
Un fortunately I had do remove the link to the Apache license in the script comment, due to forum restrictions to new users... I'll put it back in 7 days
FCanc- Posts : 6
Join date : 2015-01-10
Re: Organize comics into folders -- script
this is awesome!! Thanks for sharing!! I had become very lazy organizing my comics, and this did it in a matter of seconds. It works fine with Mac OS 10.8 too.
xnowimcoolx- Posts : 1
Join date : 2015-06-21
Similar topics
» Am I Missing Something? (How to remove comics from the list?)
» ComicTagger not showing any imported comics? (Using ComicTagger 1.1.9 beta MAC)
» Post-download script
» Advice needed on bash script
» ComicTagger not showing any imported comics? (Using ComicTagger 1.1.9 beta MAC)
» Post-download script
» Advice needed on bash script
Page 1 of 1
Permissions in this forum:
You cannot reply to topics in this forum
|
|