On Friday 17 April 2009 3:02:07 pm Michael Walma wrote:
> Hi Bruce,
>
> If I understand you correctly, the name of the image files are the
> current ISBN 10 and you want to rename the files to the correct ISBN 13
> while retaining a symbolic link named the ISBN 10?
>
> That actually would not be that hard to do with a perl script if you
> know the algorithm for calculating the checksum digit that is the last
> digit of the ISBN 13, which I just found on wikipedia. If you are not
> in a rush, I could do it for you in the next week of so in my spare
> time. If you want to try it, it would look something like
>
> nine_digits = substring(isbn10, 0, 8)
> twelve_digits = concat( "978", nine_digits)
> 13th_digit = calculate_checksum( twelve_digits)
> isbn13 = concat(twelve_digits, 13th_digit)
> ln -s isbn10 isbn13
>
> If the files are to remain on the same filesystem, you could also use
> hard links instead of symbolic links.
>
> Michael
>
> Bruce Harding wrote:
> > I'm slowly working to move our website 13 ISBN compatible. I've got a
> > directory with 20,000 plus images. Most of those are 10 digit ISBNs. I
> > want to convert them all to 13 ISBN. My web programmer wants me to
> > retain a symbolic link to retain 10 digit ISBN name to avoid breaking
> > anything in his progamming that is hardcode.
> >
> > I googled for this and all that I'm finding is man page kind of thing. I
> > makes me think this is not possilbe?
> >
> > Any suggestions.
Michael,
No not to much of a hurry. Right all images prior to mid-2008 are named with
there 10 digit ISBN.
I found this attached script as well. Also find this one below.
def check_digit_10(isbn):
assert len(isbn) == 9
sum = 0
for i in range(len(isbn)):
c = int(isbn[i])
w = i + 1
sum += w * c
r = sum % 11
if r == 10: return 'X'
else: return str(r)
def check_digit_13(isbn):
assert len(isbn) == 12
sum = 0
for i in range(len(isbn)):
c = int(isbn[i])
if i % 2: w = 3
else: w = 1
sum += w * c
r = 10 - (sum % 10)
if r == 10: return '0'
else: return str(r)
def convert_10_to_13(isbn):
assert len(isbn) == 10
prefix = '978' + isbn[:-1]
check = check_digit_13(prefix)
return prefix + check
--
Bruce Harding, Member: IEEE, SPIE, IACR
Manager,
Computer Books for Less
210 Bank St.
Ottawa ON K2P 1W2
Phone: 613-233-7357
Fax: 613-233-6823