http://serials.flib.sci.am/openreader/jox_heqiatner_1/book/Մյուս հատորների համար պարզապես 1-15 միջակայքում փոխվում է «
jox_heqiatner_
» պանակի համարը։Գրեցի մի սկրիպտ, որի արգումենտում պետք է տալ, թե որ հատորն եմ ուզում ներբեռնել և այն կստեղծի առանձին պանակ ու դրա մեջ կներբեռնի տրված հատորի էջերի բոլոր JPG ֆայլերը։ Սկրիպտի սկզբում նախ ստուգում եմ, որ տրված լինի միայն մեկ արգումենտ և այդ արգումենտը լինի ամբողջ թիվ։
#!/bin/bash if [[ $# -ne 1 ]] then echo Enter book number, an integer between 1 and 15. exit 1 fi if ! [[ $1 =~ ^[0-9]+$ ]] then echo Argument is not an integer. exit 2 fiՀետո ձևավորում եմ երկու հասցե՝
bookurl
- էջերի հասցեն, և destdir
- ներբեռնված ֆայլերի հասցեն։ Եթե արդեն գոյություն ունի destdir
պանակը, ապա այն ջնջում եմ ու ստեղծում եմ նորը։
bookurl="http://serials.flib.sci.am/openreader/jox_heqiatner_$1/book/" destdir=$(pwd)$(printf "/T-%.3d/" $1) rm -rf ${destdir} mkdir ${destdir}Էջերը հերթականությամբ ներբեռնելու համար
page
փոփոխականը արժեքավորում եմ 1 սկզբնական արժեքով․ այն ցույց է տալու հերթական էջը։ Հետո կազմակերպում եմ անվերջ ցիկլ, որի մարմնում wget
ծրագրով բեռնում եմ հերթական ֆայլը։ Ցիկլի կատարում ընդհատվում է այն ժամանակ, երբ wget
ծրագիրը չի կարողանում բեռնել ֆայլը և վերադարձնում է զրոյից տարբեր ավարտի կոդ։
page=1 while true do # էջի համարը դարձնել եռանի num=$(printf "%.3d.jpg" ${page}) # բեռնել հերթական էջը wget -q ${bookurl}${num} -O ${destdir}${num} # ստուգել wget-ի ավարտի կոդը if [[ $? -ne 0 ]] then # ընդհատել ցիկլը echo Done # ջնջել զրոյական ֆայլը rm -rf ${destdir}${num} break fi echo -n ${page} ' ' # հաշվել հաջորդ էջի համարը page=$(expr ${page} + 1) doneԱյսքանը։ Հիմա արդեն մնում է ստացված էջերը միացնել իրար ու կազմել ամբողջական գրքի ֆայլը։
Լավն էր, շնորհակալություն կիսվելու համար
ReplyDeleteՀրաշալի է, շնորհակալութիւն։
ReplyDeleteԱհա այսպէս հնարաւոր է կպցնել իրար եւ մէկ PDF ստանալ․
$ cd T-001
$ convert -verbose *․jpg +compress T-001.pdf
Միայն առաջին էջի հետ խնդիր կայ․ բոլոր էջերը ունեն 300x300 խտութիւն, իսկ առաջին էջի համար այդ յատկութիւնը նշած չէ՝
$ identify -verbose 001.jpg | grep -i resolution
$ identify -verbose 002.jpg | grep -i resolution
Resolution: 300x300
exif:ResolutionUnit: 2
exif:XResolution: 300/1
exif:YResolution: 300/1
$
Արդիւնքում ստացուած PDF֊ում առաջին էջը միւսներից էապէս աւելի մեծ է ստացուում, ինչպէս այստեղ․ ահա առաջին տաս էջը․
https://metax.leviathan.am:7071/db/get?id=ab4cc821-3269-4bf0-9209-7c026b1c2431#fc58dd5d-fd69-437e-9be8-e919036d8793
Շտկելու համար կարելի է PDF փոխակերպումից առաջ այսպէս անել․
$ mv 001.jpg orig_001.jpg
$ convert -resample 300x300 -resize "789x1200+0+0" orig_001.jpg 001.jpg
այստեղ հաշուի ենք առել որ երկրաչափութիւնը բոլոր էջերի 789x1200 է․
$ identify -verbose orig_001.jpg | grep -i geometry
Geometry: 789x1200+0+0
Page geometry: 789x1200+0+0
Սրանից յետոյ փոխակերպումը PDF֊ի աւելի յաջող է ստացուում։
$ mv orig_001.jpg ..
$ convert -verbose *․jpg +compress T-001.pdf
Ահա առաջին տաս էջը․
https://metax.leviathan.am:7071/db/get?id=ab4cc821-3269-4bf0-9209-7c026b1c2431#d794aef9-dfab-476c-af59-92f1b2bbe5dd
Վերոնշեալ երկու հրահանգները՝ convert եւ identify՝ imagemagic փաթեթից են։
Փորձն արուել է Raspbian 9.1 ՕՀ֊ում։