Code SnippetsTake 2: Download script for springerlink.com Ebooks Syndicate content

Tue, 02/24/2009 - 22:58

Seems like quite some people are interested in my bash script for downloading ebooks from http://springerlink.com.

That script has some quirks, the greatest of all that it was written in bash which makes it kind of hard to implement new features. And one which was requested was support for books which span multiple pages on SpringerLink.

So here I present springer_download.py - a Python rewrite which should handle all the old links and some more. This is the very first program I’ve written in Python. And since it has to run on the Zedat servers it’s limited to Python 2.4.x without any fancy shmancy additions (a pity, since I’d love to use urlgrabber or pycurl).

the script

You can find the sources on GitHub: http://milianw.github.com/springer_download/

I plan to put all my future code snippets in public repositories on GitHub. That way you can easily track changes and stay up to date. GitHub also has a nice “download” feature which you can use to get the current version. You can find my profile and my repositories at http://github.com/milianw

Note: This script is intended to be run under Linux or other *nix’es which fulfill the requirements (Python 2.4.x, iconv and pdftk). Windows is not supported.

TODO
  • introduce multithreading for faster / simultaneous downloads
  • add speed to progressbar
  • use progressbar in source-downloader
  • use one git-repo per project (makes links work properly)

Comments

Sehr gut - genau was ich Mon, 03/16/2009 - 21:20 — Anonymous (not verified)

Sehr gut - genau was ich gesucht habe! Danke!

weitere Wünsche:

  • Die Seitenzahlen des PDF’s mit den Tatsächlichen synchronisieren.
  • Die einzelnen Kapitel über das PDF-Inhaltsverzeichniss anwählbar machen!

Beides nicht wirklich Mon, 03/16/2009 - 22:29 — Milian Wolff

Beides nicht wirklich möglich, da man dafür die PDFs bearbeiten müsste. Und PDF ist mehr oder weniger ein Read-Only-Dateiformat.

Und was wäre wenn man die Mon, 01/04/2010 - 13:33 — Anonymous (not verified)

Und was wäre wenn man die einzelnen Kapitel mit Namen als Bookmarks in das endgültige PDF einfügen könnte? Ginge das?

Find es raus, ich hab keine Mon, 01/04/2010 - 17:11 — Milian Wolff

Find es raus, ich hab keine Ahnung von PDF-Authoring.

Hello. This software is an Fri, 04/03/2009 - 19:55 — Anonymous (not verified)

Hello. This software is an excellent idea but I get the following error:

4]# ./springer_download.py -l “http://www.springerlink.com/content/h381wp/?sortorder=asc&v=expanded” Please wait, link source is being downloaded… http://www.springerlink.com/content/h381wp/

ERROR: Bad link given ([Errno socket error] (110, ‘Connection timed out’))

The springerlink address is correct because I can paste it into a browser and both the webpage and the pdfs open up properly. I’m using andlinux which runs ubuntu as a service in windows vista. This could be the cause of the problem but the browser, Synaptic Package Manager and pinging from the console work. I’ve also tried to disable my firewall but this did not fix the problem. Thanks in advance for any insight into this problem.

I think I know what is the Fri, 04/03/2009 - 20:40 — Milian Wolff

I think I know what is the cause yet can’t test it myself right now. Try with the following link:

http://www.springerlink.com/content/h381wp/?sortorder=asc

Note the different layout of the page, I think that’s the cause. Hope that helps.

Thanks for the quick reply. Sat, 04/04/2009 - 16:37 — Anonymous (not verified)

Thanks for the quick reply. I think the problem is the university firewall which seems to be blocking the traffic as I can use the script from outside the university. One suggestion is to make this work as a firefox plugin (perhaps with imacros). Thanks for the useful script!

hi milian! ich hab mal Wed, 04/08/2009 - 19:29 — flo (not verified)

hi milian!

ich hab mal schnell ne “just HASH” option eingefügt, wenn du willst ..

  1. try:
  2. opts, args = getopt.getopt(argv, "hlc:", ["help", "link=","content="])
  3. except getopt.GetoptError:
  4. error()
  5.  
  6. link = ""
  7.  
  8. for opt, arg in opts:
  9. if opt in ("-h", "--help"):
  10. usage()
  11. sys.exit()
  12. if opt in ("-l", "--link"):
  13. link = arg
  14. if opt in ("-c", "--content"):
  15. link = "http://springerlink.com/content/" + arg + "/?p="
  16.  
  17. ...
  18.  
  19. # give a usage message
  20. def usage():
  21. print """Usage:
  22. %s [OPTIONS]
  23.  
  24. Options:
  25. -h, --help Display this usage message
  26. -l LINK, --link=LINK using the whole link to start downloading
  27. -c HASH, --content=HASH uses just the HASH to start
  28.  
  29. LINK:
  30. The link to your the detail page of the ebook of your choice on SpringerLink.
  31. It lists book metadata and has a possibly paginated list of the chapters of the book.
  32. It has the form:
  33. http://springerlink.com/content/HASH/STUFF
  34. Where: HASH is a string consisting of lower-case, latin chars and numbers.
  35. STUFF is optional and looks like ?p=...&p_o=... or similar. Will be stripped.

is keine “schöne” lösung, aber ging schnell ^^

Ansonsten, großartig dein Skript!

Hab grad deinen Patch, leicht Wed, 04/08/2009 - 20:32 — Milian Wolff

Hab grad deinen Patch, leicht verändert, zu github geschoben. Danke :)

~~~

just pushed a commit to github with your patch (slightly modified). Thanks!

What about a Windows Tue, 06/02/2009 - 02:43 — Anonymous (not verified)

What about a Windows compatible script to allow download of articles from journals in an organized fashion? Thanks for ur consideration

I don’t use Windows and won’t Tue, 06/02/2009 - 12:59 — Milian Wolff

I don’t use Windows and won’t make the script windows-compatible. Yet I’d happily accept patches. Since python is cross-platform it should’nt be too hard. You’d just have to find alternatives to pdftk and iconv. These two dependencies make the script platform dependent.

Hey, tolles Script! Ich habe Mon, 07/27/2009 - 23:49 — Christian (not verified)

Hey, tolles Script! Ich habe versucht es unter Windows zum laufen zu bekommen - und es auch geschafft!!! Musste jedoch die beiden Abfragen ob pdftk und iconv vorhanden sind abschalten. Beide gibt es für Windows und ich habe sie so integriert, dass sie Platformweit aufrufbar sind.

Herunterladen funktioniert, jedoch folgendes Problem:

  1. D:\Desktop\springerlink download>springer_download.py --link=http://springerlin
  2. .com/content/w6536t/?p=007eb555ebe6438c861aa6ca3f773b5d & pi=3
  3. Please wait, link source is being downloaded...
  4. http://springerlink.com/content/w6536t/
  5.  
  6. The book you are trying to download is called 'Thermodynamik'
  7.  
  8. found 9 chapters
  9. downloading chapter 1/9
  10. http://springerlink.com/content/w6536t/front-matter.pdf 100%
  11. downloading chapter 2/9
  12. http://springerlink.com/content/v0p76175827831r5/fulltext.pdf 100%
  13. downloading chapter 3/9
  14. http://springerlink.com/content/u402v50mx102830w/fulltext.pdf 100%
  15. downloading chapter 4/9
  16. http://springerlink.com/content/t4u767j96639714v/fulltext.pdf 100%
  17. downloading chapter 5/9
  18. http://springerlink.com/content/v125w51816124w22/fulltext.pdf 100%
  19. downloading chapter 6/9
  20. http://springerlink.com/content/vt14m63616714v11/fulltext.pdf 100%
  21. downloading chapter 7/9
  22. http://springerlink.com/content/mr2016q56221t25q/fulltext.pdf 100%
  23. downloading chapter 8/9
  24. http://springerlink.com/content/j0572760j2273063/fulltext.pdf 100%
  25. downloading chapter 9/9
  26. http://springerlink.com/content/w6536t/back-matter.pdf 100%
  27. merging chapters
  28. Traceback (most recent call last):
  29. File "D:\Desktop\springerlink download\springer_download.py", line 231, in <m
  30. dule>
  31. main(sys.argv[1:])
  32. File "D:\Desktop\springerlink download\springer_download.py", line 141, in ma
  33. n
  34. p1 = subprocess.Popen(["echo", bookTitle], stdout=subprocess.PIPE)
  35. File "d:\Programme\Python\lib\subprocess.py", line 595, in __init__
  36. errread, errwrite)
  37. File "d:\Programme\Python\lib\subprocess.py", line 804, in _execute_child
  38. startupinfo)
  39. WindowsError: [Error 2] Das System kann die angegebene Datei nicht finden
  40. Der Befehl "pi" ist entweder falsch geschrieben oder
  41. konnte nicht gefunden werden.

Woran scheitert die weitere Verarbeitung? LG

Naja, ich will den Namen in Tue, 07/28/2009 - 01:51 — Milian Wolff

Naja, ich will den Namen in iconv pipen, weiß nicht ob das auf Windows überhaupt geht. Notfalls einfach auskommentieren und damitleben, dass der dir ggf. versucht ne Datei anzulegen die “ungute” Zeichen im Namen enthält… Oder nen anderen Weg finden iconv unter Windows aufzurufen (ohne echo). Oder vlt. mingw installieren - könnte gehen…

Habe Cygwin installiert, Thu, 07/30/2009 - 17:01 — Anonymous (not verified)

Habe Cygwin installiert, darin läuft es. Habe nur bezüglich iconv auf Folgendes abgeändert:

p2 = subprocess.Popen([“iconv”, “-f”, “UTF-8”, “-t” ,”CP1258”],

Umlaute kommen dann komisch und es gibt ein Problem wenn Fragezeichen drin sind (im Dateinamen)

Eine andere Schwierigkeit kommt auf, wenn ein Buch aus mehreren Untervolumes besteht, da versagt dann das downloaden.

Das Skript ist genial gemacht, besten Dank an den Autor!

i can’t download with script Tue, 08/11/2009 - 14:55 — pappy (not verified)

i can’t download with script now, error here

“Please wait, link source is being downloaded… http://springerlink.com/content/f54k582l0w11xj18/

The book you are trying to download is called ‘Architecture of an LBS Platform to Support Privacy Control for Tracking Moving Objects in a Ubiquitous Environments’

found 1 chapters downloading chapter 1/1 http://springerlink.com/content/f54k582l0w11xj18/fulltext.pdf 100%

ERROR: downloaded chapter http://springerlink.com/content/f54k582l0w11xj18/fulltext.pdf has invalid mime type text/html - are you allowed to download it? “

Plz help :(

You need to be authenticated Tue, 08/11/2009 - 15:18 — Milian Wolff

You need to be authenticated for SpringerLink via VPN. This script does not support any other authentication.

I myself use it from my university where access to springerlink is automatically authenticated. If it is the same for your university, access one of the servers there and run the script from there. Ask your IT department.

I am authenticated via VPN Wed, 02/03/2010 - 23:18 — moohh (not verified)

I am authenticated via VPN and I can manually download the books by using Firefox, but if I want to try this script, I get the same error.

The download of a single pdf via wget doesn’t work either. I got ERROR 403.

update the script, I fixed Thu, 02/04/2010 - 00:45 — Milian Wolff

update the script, I fixed that a few hours ago.

Hi, thank you for this Wed, 02/03/2010 - 01:50 — Vitaly (not verified)

Hi,

thank you for this script.

Since about a week ago, it stopped working though:

………………………………….

$ ./springer_download.py -l http://www.springerlink.com/content/qv89j2/?p=101a335b740a47c7a7578b7d16…

$ Please wait, link source is being downloaded… http://www.springerlink.com/content/qv89j2/

ERROR: Could not evaluate book title - bad link?

Usage: springer_download.py [OPTIONS]

Options: -h, —help Display this usage message -l LINK, —link=LINK defines the link of the book you intend to download -c HASH, —content=HASH builds the link from a given HASH (see below)

………………………………….

This error appears for whatever book I try to download. Is it because they changed directory structure or something else @ Springer?

Thank you, Vitaly

Thanks for the heads up, I Wed, 02/03/2010 - 16:01 — Milian Wolff

Thanks for the heads up, I fixed the code to circumvent this springerlink “protection” (it didn’t accept the default UserAgent that was sent by python…). Should work properly now (assuming you have the rights to access this book, which I / the FU-Berlin) hast not it seems.

Hi, erstmal danke für das Thu, 02/04/2010 - 16:03 — Thomas (not verified)

Hi, erstmal danke für das Script, ich benutze es schon ziemlich lange…Ich habe jetzt allerdings auch Probleme beim downloaden. Ich bekomme folgende Fehlermeldung:
Please wait, link source is being downloaded…
http://www.springerlink.de/content/q28652/

The book you are trying to download is called ‘Regelungstechnik 1’

found 15 chapters
downloading chapter 1/15
http://www.springerlink.de/content/q28652/front-matter.pdf -819200%

ERROR: downloaded chapter http://www.springerlink.de/content/q28652/front-matter.pdf has invalid mime type text/html - are you allowed to download it?

“Per Hand” kann ich die pdfs der einzelnen Kapitel allerdings problemlos herunterladen.

Hm dann stimmt wohl noch was Fri, 02/05/2010 - 00:01 — Milian Wolff

Hm dann stimmt wohl noch was nicht - muss ich mir mal anschauen. Evtl. wird noch der Referer gecheckt oder sowas - mal gucken was die Leute von SpringerLink sich da ausdenken um es uns Studenten zu erschweren an die Bücher zu kommen… seufz

Ich habe mal was probiert, Fri, 02/05/2010 - 13:35 — Thomas (not verified)

Ich habe mal was probiert, scheint sogar geklappt zu haben :)

  1. #! /usr/bin/env python
  2.  
  3. # -*- coding: utf-8 -*-
  4.  
  5. import os
  6. import sys
  7. import getopt
  8. import urllib
  9. import re
  10. import tempfile
  11. import shutil
  12. import subprocess
  13.  
  14. class SpringerDownloader(urllib.URLopener):
  15. version = "Mozilla"
  16.  
  17. # Set some kind of User-Agent so we don't get blocked by SpringerLink
  18. class SpringerURLopener(urllib.FancyURLopener):
  19. version = "Mozilla"
  20.  
  21.  
  22. # validate CLI arguments and start downloading
  23. def main(argv):
  24. if not findInPath("pdftk"):
  25. error("You have to install pdftk.")
  26. if not findInPath("iconv"):
  27. error("You have to install iconv.")
  28.  
  29. try:
  30. opts, args = getopt.getopt(argv, "hl:c:", ["help", "link=","content="])
  31. except getopt.GetoptError:
  32. error()
  33.  
  34. link = ""
  35.  
  36. for opt, arg in opts:
  37. if opt in ("-h", "--help"):
  38. usage()
  39. sys.exit()
  40. elif opt in ("-c", "--content"):
  41. if link != "":
  42. error("-c and -l arguments are mutually exclusive")
  43.  
  44. link = "http://springerlink.com/content/" + arg
  45. elif opt in ("-l", "--link"):
  46. if link != "":
  47. error("-c and -l arguments are mutually exclusive")
  48.  
  49. link = arg
  50.  
  51. if link == "":
  52. error("You have to define a link.")
  53. if not re.match("https?://(www\.)?springerlink.(com|de)/content/[a-z0-9\-]+/?(\?[^/]*)?$", link):
  54. error("Bad link given. See LINK below.")
  55.  
  56. # remove all arguments from link
  57. link = re.sub(r"/?\?[^/]*$", "/", link)
  58.  
  59. #make sure the link ends on a slash
  60. if link[-1] != "/":
  61. link += "/"
  62.  
  63. baseLink = link
  64.  
  65. chapters = list()
  66. hasFrontMatter = False
  67. hasBackMatter = False
  68.  
  69. loader = SpringerURLopener();
  70.  
  71.  
  72. bookTitle = ""
  73.  
  74. while True:
  75. # download page source
  76. try:
  77. print "Please wait, link source is being downloaded...\n\t%s" % link
  78. page = loader.open(link).read()
  79. except IOError, e:
  80. error("Bad link given (%s)" % e)
  81.  
  82. if re.search(r'403 Forbidden', page):
  83. error("Could not access page: 403 Forbidden error.")
  84.  
  85. if bookTitle == "":
  86. match = re.search(r'<h2 class="MPReader_Profiles_SpringerLink_Content_PrimitiveHeadingControlName">([^<]+)</h2>', page)
  87. if not match or match.group(1).strip() == "":
  88. error("Could not evaluate book title - bad link?")
  89. else:
  90. bookTitle = match.group(1).strip()
  91. print "\nThe book you are trying to download is called '%s'\n" % bookTitle
  92.  
  93.  
  94. # get chapters
  95. for match in re.finditer('href="([^"]+.pdf)"', page):
  96. chapterLink = match.group(1)
  97. if chapterLink == "back-matter.pdf":
  98. hasBackMatter = True
  99. continue
  100. if chapterLink == "front-matter.pdf":
  101. hasFrontMatter = True
  102. continue
  103. if chapterLink[:7] == "http://":
  104. continue
  105. chapters.append(chapterLink)
  106.  
  107. # get next page
  108. match = re.search(r'<a href="([^"]+)">Next</a>', page)
  109. if match:
  110. link = "http://springerlink.com" + match.group(1).replace("&amp;", "&")
  111. else:
  112. break
  113.  
  114. if hasFrontMatter:
  115. chapters.insert(0, "front-matter.pdf")
  116.  
  117. if hasBackMatter:
  118. chapters.append("back-matter.pdf")
  119.  
  120. if len(chapters) == 0:
  121. error("No chapters found - bad link?")
  122.  
  123. print "found %d chapters" % len(chapters)
  124.  
  125. # setup
  126. curDir = os.getcwd()
  127. tempDir = tempfile.mkdtemp()
  128. os.chdir(tempDir)
  129.  
  130. i = 1
  131. fileList = list()
  132.  
  133. for chapterLink in chapters:
  134. if chapterLink[0] == "/":
  135. chapterLink = "http://springerlink.com" + chapterLink
  136. else:
  137. chapterLink = baseLink + chapterLink
  138.  
  139. print "downloading chapter %d/%d" % (i, len(chapters))
  140. localFile, mimeType = geturl(chapterLink, "%d.pdf" % i)
  141.  
  142. if mimeType.gettype() != "application/pdf":
  143. os.chdir(curDir)
  144. shutil.rmtree(tempDir)
  145. error("downloaded chapter %s has invalid mime type %s - are you allowed to download it?" % (chapterLink, mimeType.gettype()))
  146.  
  147. fileList.append(localFile)
  148. i += 1
  149.  
  150. print "merging chapters"
  151.  
  152. p1 = subprocess.Popen(["echo", bookTitle], stdout=subprocess.PIPE)
  153. p2 = subprocess.Popen(["iconv", "-f", "UTF-8", "-t" ,"ASCII//TRANSLIT"], stdin=p1.stdout, stdout=subprocess.PIPE)
  154. bookTitlePath = p2.communicate()[0]
  155. bookTitlePath = bookTitlePath.strip()
  156. if bookTitlePath == "":
  157. os.chdir(curDir)
  158. shutil.rmtree(tempDir)
  159. error("could not transliterate book title %s" % bookTitle)
  160.  
  161. bookTitlePath = bookTitlePath.replace("/", "-")
  162. bookTitlePath = re.sub("\s+", "_", bookTitlePath)
  163.  
  164. bookTitlePath = curDir + "/%s.pdf" % bookTitlePath
  165.  
  166. if len(fileList) == 1:
  167. shutil.move(fileList[0], bookTitlePath)
  168. else:
  169. os.system("pdftk %s cat output '%s'" % (" ".join(fileList), bookTitlePath))
  170.  
  171. # cleanup
  172. os.chdir(curDir)
  173. shutil.rmtree(tempDir)
  174.  
  175. print "book %s was successfully downloaded, it was saved to %s" % (bookTitle, bookTitlePath)
  176.  
  177. sys.exit()
  178.  
  179. # give a usage message
  180. def usage():
  181. print """Usage:
  182. %s [OPTIONS]
  183.  
  184. Options:
  185. -h, --help Display this usage message
  186. -l LINK, --link=LINK defines the link of the book you intend to download
  187. -c HASH, --content=HASH builds the link from a given HASH (see below)
  188.  
  189. You have to set exactly one of these options.
  190.  
  191. LINK:
  192. The link to your the detail page of the ebook of your choice on SpringerLink.
  193. It lists book metadata and has a possibly paginated list of the chapters of the book.
  194. It has the form:
  195. http://springerlink.com/content/HASH/STUFF
  196. Where: HASH is a string consisting of lower-case, latin chars and numbers.
  197. It alone identifies the book you intent do download.
  198. STUFF is optional and looks like ?p=...&p_o=... or similar. Will be stripped.
  199. """ % os.path.basename(sys.argv[0])
  200.  
  201. # raise an error and quit
  202. def error(msg=""):
  203. if msg != "":
  204. print "\nERROR: %s\n" % msg
  205. usage()
  206. sys.exit(2)
  207.  
  208. return None
  209.  
  210. # based on http://stackoverflow.com/questions/377017/test-if-executable-exists-in-python
  211. def findInPath(prog):
  212. for path in os.environ["PATH"].split(os.pathsep):
  213. exe_file = os.path.join(path, prog)
  214. if os.path.exists(exe_file) and os.access(exe_file, os.X_OK):
  215. return True
  216. return False
  217.  
  218. # based on http://mail.python.org/pipermail/python-list/2005-April/319818.html
  219. def _reporthook(numblocks, blocksize, filesize, url=None):
  220. #XXX Should handle possible filesize=-1.
  221. try:
  222. percent = min((numblocks*blocksize*100)/filesize, 100)
  223. except:
  224. percent = 100
  225. if numblocks != 0:
  226. sys.stdout.write("\b"*70)
  227. sys.stdout.write("%-66s%3d%%" % (url, percent))
  228.  
  229. def geturl(url, dst):
  230. downloader = SpringerDownloader();
  231. if sys.stdout.isatty():
  232. response = downloader.retrieve(url, dst,
  233. lambda nb, bs, fs, url=url: _reporthook(nb,bs,fs,url))
  234. sys.stdout.write("\n")
  235. else:
  236. response = downloader.retrieve(url, dst)
  237.  
  238. return response
  239.  
  240.  
  241. # start program
  242. if __name__ == "__main__":
  243. main(sys.argv[1:])

Ich habe nur oben das hinzugefügt:

  1. class SpringerDownloader(urllib.URLopener):
  2. version = "Mozilla"

Und die def geturl(url, dst) geändert in:

  1. def geturl(url, dst):
  2. downloader = SpringerDownloader();
  3. if sys.stdout.isatty():
  4. response = downloader.retrieve(url, dst,
  5. lambda nb, bs, fs, url=url: _reporthook(nb,bs,fs,url))
  6. sys.stdout.write("\n")
  7. else:
  8. response = downloader.retrieve(url, dst)
  9.  
  10. return response

Great, thanks for the patch. Fri, 02/05/2010 - 14:16 — Milian Wolff

Great, thanks for the patch. I included it now (slightly different). Does it work with the vanilla source from github again now? I ask since I can still not download that one book ;-)

Thanks a lot for prompt Fri, 02/12/2010 - 08:38 — Vitaly (not verified)

Thanks a lot for prompt response, Milian! It works great now.

By the way, I spotted another Fri, 02/12/2010 - 08:47 — Vitaly (not verified)

By the way, I spotted another glitch: if the book name contains the colon sign (‘:’), the book is downloaded OK but cannot be saved, as file name cannot include colons. You could substitute it with dash or something…

Can you give me an example? I Fri, 02/12/2010 - 13:59 — Milian Wolff

Can you give me an example? I don’t see why a colon should be removed from a filename, it’s perfectly valid imo. At least on Unix:

  1. $> touch "asdf:foobar"
  2. $> ls
  3. asdf:foobar
  4. $> rm asdf\:foobar
  5. rm: remove regular empty file asdf:foobar? y

Hallo, bin alter Windows Fri, 02/05/2010 - 20:54 — RS(15,11) (not verified)

Hallo, bin alter Windows Benutzer und hab mich seit gestern auch wegen deinem Skript in Unix eingearbeitet. Benutze nun Cygwin und mit der neuesten Version des Skriptes läuft alles super. Vielen Dank!!

Nachdem ich es ja unter Mon, 02/22/2010 - 17:26 — Christian (not verified)

Nachdem ich es ja unter Windows teilweise zum laufen bekommen habe sind das meine ersten gehversuche mit Linux, aber trotzdem lädt er es nicht runter…. (VPN ist aktiviert)

vll kann mir ja jemand einen Tipp geben.

  1. ubuntu@ubuntu-desktop:~/Desktop$ ./springer_download.py -l http://springerlink.com/content/h61v67/
  2. Please wait, link source is being downloaded...
  3. http://springerlink.com/content/h61v67/
  4.  
  5. The book you are trying to download is called 'Dubbel'
  6.  
  7. Please wait, link source is being downloaded...
  8. http://springerlink.com/content/h61v67/?sortorder=asc&p_o=10
  9. Please wait, link source is being downloaded...
  10. http://springerlink.com/content/h61v67/?sortorder=asc&p_o=20
  11. found 27 chapters
  12. downloading chapter 1/27
  13. http://springerlink.com/content/h61v67/front-matter.pdf 95%

^^ hier an der stelle hängt er

Ich wollte nur mal Wed, 02/24/2010 - 20:31 — Anonymous (not verified)

Ich wollte nur mal rückmelden, dass das Skript mit Cygwin unter Windows 7 hervorragend und ohne Probleme arbeitet. Bei der Installation von Cygwin muss man natürlich darauf achten, die entsprechenden Pakete auszuwählen. Ein großes Danke an den Autor für die Arbeit!

I get an error as well Mon, 03/01/2010 - 14:26 — Seb (not verified)

I get an error as well “WindowsError: [Error 2] Das System kann die angegebene Datei nicht finden” what I can do?

The book you are trying to download is called ‘Word 2007’

found 14 chapters downloading chapter 1/14 http://www.springerlink.com/content/m5427g/front-matter.pdf 100% downloading chapter 2/14 http://springerlink.com/content/u838718169040815/fulltext.pdf 100% downloading chapter 3/14 http://springerlink.com/content/t347382q85766802/fulltext.pdf 100% downloading chapter 4/14 http://springerlink.com/content/rm4183k750h28k27/fulltext.pdf 100% downloading chapter 5/14 http://springerlink.com/content/q25m417372705567/fulltext.pdf 100% downloading chapter 6/14 http://springerlink.com/content/t7303462187j3t17/fulltext.pdf 100% downloading chapter 7/14 http://springerlink.com/content/n191l36489484284/fulltext.pdf 100% downloading chapter 8/14 http://springerlink.com/content/wp7t1657u28p4774/fulltext.pdf 100% downloading chapter 9/14 http://springerlink.com/content/l3126077869171g2/fulltext.pdf 100% downloading chapter 10/14 http://springerlink.com/content/j6399r4330572128/fulltext.pdf 100% downloading chapter 11/14 http://springerlink.com/content/p2262884852pl1w4/fulltext.pdf 100% downloading chapter 12/14 http://springerlink.com/content/u647377241368kl7/fulltext.pdf 100% downloading chapter 13/14 http://springerlink.com/content/t5h400553644360l/fulltext.pdf 100% downloading chapter 14/14 http://www.springerlink.com/content/m5427g/back-matter.pdf 100% merging chapters Traceback (most recent call last): File “C:\Dokumente und Einstellungen\Sebastian\Desktop\sp\springer_download.py”, line 238, in <module> main(sys.argv[1:]) File “C:\Dokumente und Einstellungen\Sebastian\Desktop\sp\springer_download.py”, line 147, in main p1 = subprocess.Popen([“echo”, bookTitle], stdout=subprocess.PIPE) File “D:\Python26\lib\subprocess.py”, line 621, in init errread, errwrite) File “D:\Python26\lib\subprocess.py”, line 830, in _execute_child startupinfo) WindowsError: [Error 2] Das System kann die angegebene Datei nicht finden

I don’t know, I won’t support Mon, 03/01/2010 - 20:07 — Milian Wolff

I don’t know, I won’t support Windows. Try cygwin as the poster above you said that it works.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • You can use Markdown syntax to format and style the text. Also see Markdown Extra for tables, footnotes, and more.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <pre>. The supported tag styles are: <foo>, [foo]. PHP source code can also be enclosed in <?php ... ?> or <% ... %>.
  • Web page addresses and e-mail addresses turn into links automatically.

More information about formatting options