我一直在寻找继续改善选择颜色的想法,直到我发现重播还活着。对于那些不知道的人,它是一本复古的视频游戏杂志,具有非常有趣的质量内容,可以在一个名为Issuu的阅读平台上获得。
我想要他们!
作为本文的出版,他们有大约35或40个已发布的编号。我决定将它们下载到我的iPad上,但假设(除非出版商本身允许)无法从ISSUU下载。
我只需要复制每个杂志的每个URL ,这是一个由40个迭代组成的重复过程。所有这些,用于重播杂志。
想象我是否一直在搜索下载100没有其他公开。
的
然后我记得我是开发人员,我的道德义务是使事情自动化。
是时候复制诚实的人了
我不想在零开发的解决方案中工作汗水和磨牙,所以我决定从人民那里复制我。
我想在Python中这样做以继续增强自己的技能,因此寻找可以满足我期望的存储库。我发现了这个:
jpyamamoto / Issuu-PDF-Downloader
Python上的程序,该程序以PDF下载为jisuu文件
Issuu-PDF-Downloader
IMPORTANT: dependency package pyfpdf has obsolete version from pip or conda. Please install from its project GitHub page.
Python上的程序,该程序以pdf
下载issuu文件issuu是一个平台,允许用户上传pdf并保护他们免于下载(他们不算我)
但是,在对源代码进行研究时,我能够找到它的弱点。它将PDF的每个页面存储在某个位置中,并将其标记为Page_1 < - 页数。
因此,使用Python中的这个小代码,您可以利用此弱点并下载您想要的任何文件。
您必须运行文件框架。py并粘贴要下载的文件的URL,就是这样。
它将为您提供图像以及PDF。
您可以更改resize.py文件中的图像大小。
,但是像任何开发问题一样,从来没有医疗解决方案。有时似乎有人已经考虑过您的不便了,但也许他们在您认为的更个性化(雄心勃勃的)领域。
是时候为社会做出贡献
首先,我做了一个存储库,因为我知道我可以改善许多事情:
maxwellnewage / Issuu-PDF-Downloader
Python上的程序,该程序以PDF下载为jisuu文件
Issuu-PDF-Downloader
Este fork arregla los problemas de dependencias y la generación de PDFs.
También se reemplaza el input() por una lista de links de Issuu para automatizar el proceso.
Cómo funciona
El script dict_to_json_replay.py在json folder14中生成issuu_urls.jon文件,并具有以下方案:
[
{
“ name” : “ pdf “
“ url” : “ issuu url ”
}
]
您可以使用它来降低重播杂志,或重写自己的JSON,其中包含要转换的杂志的链接。
要运行它,必须执行Abiaoqian脚本15。该过程如下:
然后我评估了相同的内容:
- 可以下载杂志,但自由被打破了。
- 您也不会有要求。
- 通过控制台以及网络上的URL,但是这次您必须执行每个链接的程序,灾难。
- 命名法不是很标准,并且有许多具有罕见名称的变量。
事实是不同的:该程序没有通过依赖关系进行编译。我制作了一对托架,我分发了它们,但是库的所有参数都不同或具有新的参数。我到处都在破裂。我已经把他扭转了几天,但是我可以做到。
我驯服了野兽
首先,我想要一些自动化的东西,以便将URL列表,而不是由控制台输入。但是,为了使其非常动态,我决定构建一个可以填充这些链接的JSON,然后成为Python中的字典列表:
def get_issuu_json_as_dict():
issuu_url_json = os.path.join('./json/', 'issuu_urls.json')
issuu_url_file = open(issuu_url_json, "r").read()
return json.loads(issuu_url_file)
然后,想要使用我的应用程序的人可以简单地在JSON文件夹中创建Issuu_urls.jon,然后以这种格式将其杂志列表放置:
[
{
"name": "name of the pdf",
"url": "issuu url"
}
]
另一方面,旧算法所做的第一件事是降低所有图像,然后将它们变成PDF(例如上面找到更多的网站)。问题是图像存储在项目的射线中,从未消除。
我在downloader.py中解决了它:
def downloader(url):
print('Started download process...')
# List to create the PDF
files = []
formatter = url.replace('page_1.jpg', '')
page_counter = 1
while True:
url_page = formatter + 'page_' + str(page_counter) + '.jpg'
filename = str(page_counter) + '.jpg'
if exists(url_page):
# Save image directory
filename_with_folder = os.path.join(IMAGE_DIR, filename)
# Download images
opener = open(filename_with_folder, 'wb')
opener.write(urllib.request.urlopen(url_page).read())
# Save images
opener.close()
print(f'Correctly saved file {filename} From URI: {url_page}')
# Add filename to list, so we make the pdf later
files.append(filename_with_folder)
# Go for the next one
page_counter += 1
else:
# No more images
break
print('Completed download process...')
# Time to create the pdf
return files
常数 image_dir 包含值。保存每个图像并将其变成pdf之后,有一个mãal
def delete_old_images():
for image in os.listdir(IMAGE_DIR):
if image.endswith(".jpg"):
os.remove(os.path.join(IMAGE_DIR, image))
我必须这样做,因为如果我试图清洁每个PDF创建的PDF,我会抛出一个例外,表明我想删除的文件正在使用。非常罕见。
顺便说一句,创建PDFS使用了一个名为PyFPDF的库,它允许您从零创建它们;甚至阅读文档并从中提取信息。
细节,不喜欢的人
我的叉子功能完全正常。我给了他很多爱,甚至留下了文档,所以您可以克隆它,然后在美丽的Ide Pycharm中尝试而无需戏剧。
但是,我发现了一些可能使他们的执行失败的细节:首先,如果您尝试降低40 pdf(它可以生成我的JSON运行dict_to_to_to_json_replay.py),在15或20号的中间,您会给您一个错误的请求错误。这是因为Issuu对他的服务器如此多的图像不满意,并认为他正在尝试做ataque DDoS。为了避免这种情况,我建议将您的JSON留在每个执行的10个链接中。
另一方面,这无法解决“高级杂志”的封锁:如果发布者认为一半的页面不可用,则您将在文档的那部分中下载非常未关注的图像。认为这不是黑客,而是一个爬网的网站,寻找每个página并将其重新组合在PDF中。
结论
我对结果感到满意。我实现了以完全合法的方式自动化杂志大量下载杂志的目标。我鼓励他们,简单的凡人,向我的存储库分叉,并尝试改进该项目。我敢肯定,他们可以做到更多。