Прежде всего, это очень хорошая идея.
Ошибка возникает из-за неправильного пути к списку изображений.
Вы сохраняете jpgs в папке (имя главы).
Все, что вам нужно сделать, это указать правильный путь к FPDF.
Я создал набор, чтобы избежать дублирования.
Затем я удалил папку «images» и «icon» -> может быть, вы будете их использовать?
cchapter = set()
for URL in chapter_list:
r = requests.get(URL)
soup = BeautifulSoup(r.text, 'html.parser')
images = soup.findAll('img')
for i in images:
url = i.attrs["src"]
cchapter.add(url.split('/')[-2])
os.makedirs(url.split('/')[-2], exist_ok=True)
download_image(url, os.path.join(url.split('/')[-2], url.split('/')[-1]))
cchapter.remove('images')
cchapter.remove('icons')
chapterlist = list(cchapter)
print(chapterlist[0])
def sortKeyFunc(s):
return int(os.path.basename(s)[:-4])
for chap in chapterlist:
pdf = FPDF()
imageList = glob.glob(chap + "/*.jpg")
imageList.sort(key=sortKeyFunc)
for image in imageList:
pdf.add_page()
pdf.image(image, 10, 10, 200, 300)
pdf.output(chap + ".pdf", "F")
Наконец, я добавил цикл для создания PDF для каждой отдельной папки ...
Затем назовите PDF к названию главы ...
Вы также пропускаете в своем файле расширение (".pdf") ...
Это будет работать :)
EDIT:
glob.glob
вернет список файлов не в правильном порядке.
Ссылка: здесь
Вероятно, он вообще не сортируется и использует порядок, в котором записи
появляются в файловой системе, то есть той, которую вы получаете при использовании ls -U. (В
хотя бы на моей машине это выдает тот же порядок, что и глобус листинга
Матчи).
Для этого вы можете использовать имя файла (в нашем случае это число) в качестве ключа сортировки.
def sortKeyFunc(s):
return int(os.path.basename(s)[:-4])
затем добавьте imageList.sort(key=sortKeyFunc)
в цикл.
ПРИМЕЧАНИЕ. Код обновлен.