Whatsup - לינוקס, תוכנה חופשית וקוד פתוח בעברית

אוף טופיק - הוצאת ספרינגר מאפשרת הורדה חינם של מאות ספרים באנגלית

דוביקס - 26/04/2020 - 08:54
נושא ההודעה: הוצאת ספרינגר מאפשרת הורדה חינם של מאות ספרים באנגלית
הוצאת ספרינגר מאפשרת הורדה חינם של מאות ספרים באנגלית בנושאים שונים, כולל למשל פייתון ולינוקס.

מקור:

https://twitter.com/hananc/status/1254280154723090432?s=20

לינק ישיר לרשימת הספרים:

https://docs.google.com/spreadsheets/d/1HzdumNltTj2SHmCv3SRdoub8SvpIEn75fa4Q23x0keU/htmlview
Anonymous - 26/04/2020 - 10:53
נושא ההודעה:
תודה רבה!
מצאתי ספר בנושא שהייתי צריך (לא מדעי מחשב/תכנות)
Anonymous - 26/04/2020 - 11:13
נושא ההודעה:
https://pastebin.com/zxzwxbiX

הרשימה מכאן, תורידו הכל עם הסקריפט
קוד:

#!/bin/bash

cat books_list.csv | while read line; do
   IFS=',' read -a array <<< "$line"
   FILE_NAME=${array[0]}
   TOPIC=${array[1]}
   URL=${array[2]}
   echo Download $FILE_NAME
   
   #find the real url
   REAL_URL=`curl $URL  -s -L -I -o /dev/null -w '%{url_effective}'`
   BOOK_ID=`echo ${REAL_URL##*/}`
   DOWNLOAD_URL='https://link.springer.com/content/pdf/'${BOOK_ID}.pdf
   curl $DOWNLOAD_URL --create-dirs -o "${TOPIC}"/"${FILE_NAME}".pdf
 done





Anonymous - 26/04/2020 - 13:09
נושא ההודעה:
ראשית תודה ליוזם השרשור וגם לכותב הסקריפט!
רק יש לי בעיה קטנה - אני לא מכיר סקריפטים ואולי יש כאן הזדמנות..

אפשר הסבר קצר, מה אני אמור לעשות בכמה מילים?
מניח שצריך להעתיק את הסקריפט לקובץ - עם סיומת sh?
לשמור את הקובץ בתיקיית home ואז לכתוב את שם הקובץ והסיומת וזה כבר רץ לבד?
דרך אגב: מבין שהסקריפט פותח תיקיה בעצמו ושומר את כל הספרים בפורמט PDF. האם מוריד גם קבצי EPUB ? (למה טוב הפורמט הזה?). אם לא אז אקח את זה כתרגיל לעשות בעצמי..
Anonymous - 26/04/2020 - 13:46
נושא ההודעה:
הוראות לסקריפט ושיפור מסויים:
תעתיק את הסקריפט לקובץ (לא משנה הם והסיומת, תתן לסקריפט הרשאות ריצה ותריץ
הרשאות ריצה: chmod u+x filename
הרצה:
קוד:
./filename


את רשימת הספרים תעתיק המ patebin שצירפתי לתוך קובץ בשם books_list.csv ושיהיה באותה תיקייה
בתיקייה שתריץ את הסקריפט זה יוריד לך את כל הקבצים, עשיתי שזה יוריד לתיקיות לפי נושא, כלומר בתיקיה של הסקריפט יווצרו לך תיקיות לפי נושא.

אתה יכול קצת לשחק עם הדברים אם בא לך אחרת זה די פשוט, עשיתי את זה לעצמי בחפיף וראיתי שי שעניין אז פרסמתי. אם תרצה להוריד epub זה קצת לשנות את הלינק של ההורדה.

ראיתי שיש שם הרבה קטגוריות שלא ממש רלוונטיות בשבילי וזה תופס די נפח אז שיפרתי שיוריד רק מתוך רשימה


קוד:

#!/bin/bash
topics=("Physics and Astronomy" "Mathematics and Statistics" "Computer Science")
cat books_list.csv | while read line; do
   IFS=',' read -a array <<< "$line"
   FILE_NAME=${array[0]}
   TOPIC=${array[1]}
   URL=${array[2]}

   if [[ " ${topics[@]} " =~ " ${TOPIC} " ]]
   then
      echo Download $FILE_NAME
      #find the real url
      REAL_URL=`curl $URL  -s -L -I -o /dev/null -w '%{url_effective}'`
      BOOK_ID=`echo ${REAL_URL##*/}`
      DOWNLOAD_URL='https://link.springer.com/content/pdf/'${BOOK_ID}.pdf
      curl $DOWNLOAD_URL --create-dirs -o "${TOPIC}"/"${FILE_NAME}".pdf
   fi   
 done


Anonymous - 27/04/2020 - 00:32
נושא ההודעה:
ה CSV מתוקן:

https://pastebin.com/rmP5ZRzW
Anonymous - 27/04/2020 - 07:16
נושא ההודעה:
עוד סקרפיט למי שרוצה בשימוש ב csv המקורי מ google docs ללא שינוי.

קוד:

import csv
import os

CATEGORIES = ('Computer Science',
              'Business and Economics',
              'Business and Management',
              'Mathematics and Statistics',
              'Engineering')

with open("./data.csv", "r") as fp:
    reader = csv.reader(fp)

    for row in reader:
        if row[0] == "Book Title":
            continue
        category = row[11]
        if not category in CATEGORIES:
            continue
        id = row[17].replace("http://doi.org/", "")
        link = f"https://link.springer.com/content/pdf/{id}.pdf"
        fn = f"{category}/{row[0]} - {row[1]} ({row[4]}).pdf"

        cmd=f"curl -SL --create-dirs -o '{fn}' '{link}'"
        os.system(cmd)

Anonymous - 27/04/2020 - 08:04
נושא ההודעה:
Anonymous :
עוד סקרפיט למי שרוצה בשימוש ב csv המקורי מ google docs ללא שינוי.

קוד:

import csv
import os

CATEGORIES = ('Computer Science',
              'Business and Economics',
              'Business and Management',
              'Mathematics and Statistics',
              'Engineering')

with open("./data.csv", "r") as fp:
    reader = csv.reader(fp)

    for row in reader:
        if row[0] == "Book Title":
            continue
        category = row[11]
        if not category in CATEGORIES:
            continue
        id = row[17].replace("http://doi.org/", "")
        link = f"https://link.springer.com/content/pdf/{id}.pdf"
        fn = f"{category}/{row[0]} - {row[1]} ({row[4]}).pdf"

        cmd=f"curl -SL --create-dirs -o '{fn}' '{link}'"
        os.system(cmd)

זה לא קוד python? איך אני אמור להריץ את זה?
benu - 27/04/2020 - 08:51
נושא ההודעה:
Anonymous :
https://pastebin.com/zxzwxbiX

הרשימה מכאן, תורידו הכל עם הסקריפט
קוד:

#!/bin/bash

cat books_list.csv | while read line; do
   IFS=',' read -a array <<< "$line"
   FILE_NAME=${array[0]}
   TOPIC=${array[1]}
   URL=${array[2]}
   echo Download $FILE_NAME
   
   #find the real url
   REAL_URL=`curl $URL  -s -L -I -o /dev/null -w '%{url_effective}'`
   BOOK_ID=`echo ${REAL_URL##*/}`
   DOWNLOAD_URL='https://link.springer.com/content/pdf/'${BOOK_ID}.pdf
   curl $DOWNLOAD_URL --create-dirs -o "${TOPIC}"/"${FILE_NAME}".pdf
 done





הסקריפט מוריד לי תיקיות ריקות ומחזיר שגיאות בלי הפסקה:
קוד:

curl: (3) URL using bad/illegal format or missing URL
./4.txt: line 28: $'\r': command not found
./4.txt: line 5: $'\r': command not found
./4.txt: line 6: $'\r': command not found
./4.txt: line 8: $'\r': command not found
./4.txt: line 10: $'\r': command not found
./4.txt: line 12: $'\r': command not found
./4.txt: line 14: $'\r': command not found
Download "Clinical Methods in Medical Family Therapy
./4.txt: line 16: $'\r': command not found
./4.txt: line 17: $'\r': command not found
./4.txt: line 18: $'\r': command not found
./4.txt: line 20: $'\r': command not found

Anonymous - 27/04/2020 - 09:10
נושא ההודעה:
הייתה שגיאה בקוד !

זה הקוד המתוקן :

קוד:
#!/bin/bash
topics=("Physics and Astronomy" "Mathematics and Statistics" "Computer Science")
cat data.csv | while read line; do
   IFS=',' read -a array <<< "$line"
   FILE_NAME=${array[0]}
   TOPIC=${array[1]}
   URL=${array[2]}

   if [[ " ${topics[@]} " =~ " ${TOPIC} " ]]
   then
      echo Download $FILE_NAME
      #find the real url
      REAL_URL=`curl $URL  -s -L -I -o /dev/null -w '${URL}'`
      BOOK_ID=`echo ${REAL_URL##*/}`
      DOWNLOAD_URL='https://link.springer.com/content/pdf/'${BOOK_ID}.pdf
      curl $DOWNLOAD_URL --create-dirs -o "${TOPIC}"/"${FILE_NAME}".pdf
   fi   
 done

benu - 27/04/2020 - 10:36
נושא ההודעה:
Anonymous :
הייתה שגיאה בקוד !

זה הקוד המתוקן :

קוד:
#!/bin/bash
topics=("Physics and Astronomy" "Mathematics and Statistics" "Computer Science")
cat data.csv | while read line; do
   IFS=',' read -a array <<< "$line"
   FILE_NAME=${array[0]}
   TOPIC=${array[1]}
   URL=${array[2]}

   if [[ " ${topics[@]} " =~ " ${TOPIC} " ]]
   then
      echo Download $FILE_NAME
      #find the real url
      REAL_URL=`curl $URL  -s -L -I -o /dev/null -w '${URL}'`
      BOOK_ID=`echo ${REAL_URL##*/}`
      DOWNLOAD_URL='https://link.springer.com/content/pdf/'${BOOK_ID}.pdf
      curl $DOWNLOAD_URL --create-dirs -o "${TOPIC}"/"${FILE_NAME}".pdf
   fi   
 done

תודה על ההתייחסות אבל כעת הוא מחזיר לי
קוד:
./4.txt: line 2: $'\r': command not found
./4.txt: line 4: $'\r': command not found
./4.txt: line 17: syntax error in conditional expression
'/4.txt: line 17: syntax error near `]]
'/4.txt: line 17: `   if [[ " ${topics[@]} " =~ " ${TOPIC} " ]]

Anonymous - 27/04/2020 - 11:06
נושא ההודעה:
אצלי זה כאילו עובד אבל יוצר קבצים קטנים בגודל 7.3k עבור כל ספר..
העתקתי את קובץ הספרים מהקישור שצויין בפוסט קודם https://pastebin.com/rmP5ZRzW
mksoft - 27/04/2020 - 13:59
נושא ההודעה:
לדעתי זה לא מוריד את הספר עצמו, אלא עמוד html שאומר שהמשאב לא קיים.
Anonymous - 27/04/2020 - 14:05
נושא ההודעה:
לי עבדו שני הסקריפטים עם ה CSV המתוקן. שיניתי טיפה את הסקריפט השני שיוריד הכל אז יש לי עכשיו מאגר קריאה לדורות... Dancing
Anonymous - 27/04/2020 - 14:43
נושא ההודעה:
אצלי כאמור מוריד רק עמוד html בגודל 7.3k - זה עם הסקריפט הרגיל..
אבל עם הסקריפט של פייתון משהו חסר - העתקתי את הקוד לקובץ עם סיומת py אבל נראה שחסר הקובץ cvs - איך אני מוריד אותו ומקשר לפייתון? הקובץ רץ אך מודיע על שגיאה:
קוד:
$ ./springer_python.py
./springer_python.py: line 8: syntax error near unexpected token `('
./springer_python.py: line 8: `CATEGORIES = ("Computer Science",'

Anonymous - 27/04/2020 - 14:48
נושא ההודעה:
זו בעצם הודעת השגיאה הנכונה עם גרש על הקטגוריות (ניסיתי גם עם גרשיים..)
קוד:
$ ./springer_python.py
./springer_python.py: line 8: syntax error near unexpected token `('
./springer_python.py: line 8: `CATEGORIES = ('Computer Science','

benu - 27/04/2020 - 15:30
נושא ההודעה:
בסוף יצרתי תוכנית פייתון בעצמי למי שמעונין, התוכנית יוצרת קישורים ומחזירה קובץ טקסט עבור תוכנות הורדה כמו IDM
קוד:
s = open(r'source.txt', 'r')
d = ''
m = open(r'result.txt', 'w')
for row in s:
    q = row.split('isbn=')
    w = q[1]
    r = "%2F"
    d = 'https://link.springer.com/content/pdf/10.1007{}{}.pdf\n'.format(r, w)
    m.write(d)

Anonymous - 27/04/2020 - 15:32
נושא ההודעה:
לאלו שהיו בעיות עם הסקריפט BASH - רוב הסיכויים שלא שמרתם נכון את הקובץ CSV - הורידו RAW מ PASTEBIN - והשתמשו בקובץ CSV המתוקן כי בקובץ המקורי יש פסיקים בשמות בספרים וזה דופק את ההורדות שלהם.
Anonymous - 27/04/2020 - 16:05
נושא ההודעה:
ציטוט:
לאלו שהיו בעיות עם הסקריפט BASH - רוב הסיכויים שלא שמרתם נכון את הקובץ CSV - הורידו RAW מ PASTEBIN - והשתמשו בקובץ CSV המתוקן כי בקובץ המקורי יש פסיקים בשמות בספרים וזה דופק את ההורדות שלהם.

ניסיתי ואצלי זה לא עובד. או ששיניתם משהו ולא עדכנם גם כאן או שאני לא יודע..
Anonymous - 27/04/2020 - 19:44
נושא ההודעה:
Anonymous :
הייתה שגיאה בקוד !

זה הקוד המתוקן :

קוד:
#!/bin/bash
topics=("Physics and Astronomy" "Mathematics and Statistics" "Computer Science")
cat data.csv | while read line; do
   IFS=',' read -a array <<< "$line"
   FILE_NAME=${array[0]}
   TOPIC=${array[1]}
   URL=${array[2]}

   if [[ " ${topics[@]} " =~ " ${TOPIC} " ]]
   then
      echo Download $FILE_NAME
      #find the real url
      REAL_URL=`curl $URL  -s -L -I -o /dev/null -w '${URL}'`
      BOOK_ID=`echo ${REAL_URL##*/}`
      DOWNLOAD_URL='https://link.springer.com/content/pdf/'${BOOK_ID}.pdf
      curl $DOWNLOAD_URL --create-dirs -o "${TOPIC}"/"${FILE_NAME}".pdf
   fi   
 done


אני כותב הסקריפט המקורי, ולפני שאתה מתקן כדי שתבדוק מה אתה מתקן
https://stackoverflow.com/questions/3074288/get-final-url-after-curl-is-redirected
עשיתי את זה כי יש שם redirect
מי שיש לו בעיה זה כנראה בגלל העתקה לא נכונה, שמירה לא נכונה או משהו כזה, הייתי מעלה נורמלי לגיטהאב אבל לא רוצה להיחשף עם זה, לא יודע כמה הם יאהבו את העניין הזה.
Anonymous - 27/04/2020 - 21:42
נושא ההודעה:
יש מספיק שירשורים שנפתחו עם שלל פתרונות. רק חפשו...

https://gist.github.com/bishboria/8326b17bbd652f34566a
mksoft - 28/04/2020 - 01:11
נושא ההודעה:
מהקישור שהדבקת:
ציטוט:
These links no longer work. Springer have pulled the free plug.

Anonymous - 28/04/2020 - 03:35
נושא ההודעה:
שיט. טוב, שמח שהספקתי להוריד לפני. ספק אם אי פעם אקרא את כל זה...
Anonymous - 28/04/2020 - 10:31
נושא ההודעה:
ספרינגר לא משכו כלום. תיכנסו לקישור המקורי ותנסו להוריד ספר
Anonymous - 29/04/2020 - 15:37
נושא ההודעה: More research resources…
Thanks.
Also, just a reminder, there are millions more (books and articles, research, fiction…) in LibGen.{is,lc}, Z-Library (b-ok.cc, booksc.xyz), BookFI.net, wikisource.org, etc.
כל הזמנים הם GMT + 2 שעות