Giter Site home page Giter Site logo

yann0917 / dedao-dl Goto Github PK

View Code? Open in Web Editor NEW
535.0 535.0 104.0 2.93 MB

得到 APP 课程下载工具,可在终端查看文章内容,可生成 PDF,音频文件,markdown 文稿,可下载电子书。

License: MIT License

Shell 0.29% Go 98.08% Dockerfile 1.05% Makefile 0.59%
dedao iget

dedao-dl's Introduction

Hi there 👋

Typing SVG

trophy

yann's GitHub stats

yann's github activity graph

Top Langs

Top Langs

dedao-dl's People

Contributors

butterfly2sea avatar dependabot[bot] avatar kidylee avatar yann0917 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dedao-dl's Issues

电子书排版成ePub

首先多谢作者辛苦写了电子书SVG转HTML的代码。

试用了一下以后有一点排版的建议。供作者参考。首先,很多章节内部有多个SVG文件,但是其实是在句中断开的。所以直接SVG转换成HTML的时候,就会出现句中换行。不知道有没有可能考虑同个章节里合并属性一致的span.

然后是如果有可能直接输出处理好的按章节的html文件的话,会比较方便制作相应的ePub文件。

最后是注释,一般是这样的形式:
《晋书》卷117《姚兴载记上》,第2985~2986页。
如果能保留下来就好了。

多谢作者!

epub 电子书排版问题

首先感谢作者一直坚持开发这个。有了epub生成很多书籍都很完美了。我看了一下有两个小问题供作者参考。

都以这本书
忧患:边事、党争与北宋政治 为例。查看第二章,惊悸:庆历增币与宋夏和议

问题一:HTML Escape
第二章开篇有一幅地图。地图下的Caption是PingFang SC。似乎Unescape没有处理好,‘变成了&#39

问题二:加粗
第二章第二节,西夏使者也来了这里。有这么一段
蹊跷的是,这次李元昊还提出了一个诡异要求,要将“兀卒”这一称号改为“吾祖”。这意味着,以后宋朝以皇帝名义颁发给西夏国主的诏书中,要称对方为“吾祖”。元昊提出更改的理由是什么呢?文献中没有直接记载,但从欧阳修的回应中可以窥见端倪:“今自元昊以下,名称、官号皆用本国。若蕃语‘兀卒’,华言‘吾祖’,则今贼中每事自用蕃礼,安得惟于此号,独用华言,而不称‘兀卒’?” 《长编》卷142,仁宗庆历三年七月癸巳,第3409—3410页。 所谓“蕃语‘兀卒’,华言‘吾祖’”,是说党项语“兀卒”,翻译为汉语即“吾祖”。欧阳修当然不懂党项语,此说从何而来?从“若”一字看,这应当就是西夏提出更改的官方理由。欧阳修对这一解释并不满意,对其动机深表怀疑,因为西夏政权所用种种名号、官称,全都来自本民族语言,为何独独于国主尊称,一定要用汉语意译?
其中
若蕃语‘兀卒’,华言‘吾祖’
独用华言
这两处在网页阅读器里是加粗的。但是在电子书中没有。

举一个斜体的例子。
以这本书 有所不为的反叛者:批判、怀疑与想象力
有所不为的反叛者一章为例

The Scientist as Rebel
The Historian as Rebel

两个地方的书名都应该是斜体。

举一个字下加点表示着重的例子,以海边的卡夫卡这本书为例。第三章有这么一段:

“我也有个差不多和你同龄的弟弟。”她忽然想起似的说,“倒是因故很久没见了……对了,是的,你很像很像那孩子。没给人这么说过?”

•••

“那孩子?”

•••

“在那支乐队里唱歌来着,那孩子。在车上看见时我就一直那样想,但名字想不出来。想得很认真,脑袋差点儿想出窟窿,可就是不行。你也有这种情况吧——快要想出来了却想不出来。过去没给人说过长得像谁?”

••

这一段中加点的数量是正确的,但是没有加偏移。应该分别在“那孩子” “那孩子”和“那支”三处下加点。

目前没有看到其他复杂的排版例子比如说粗斜体,下划线,波浪线,框框等的例子。如果看到了会提供给作者。

写完了这个Issue发现还有一些问题
例子书是东晋门阀政治这一本,以释“王与马共天下”一章为例。

首先每章开头第一页是一个图文章首页。其中的页面深色背景在抓取的时候似乎丢失了。

类似的排版问题在海边的卡夫卡中也有。比如说每章的首页也有图文章首页。比如说第三章开头。鱼的图案和第三章应该在背景图的中上方,但是偏移完全没有,鱼,“第三章”,背景图是分别显示的。

然后是尾注。在释“王与马共天下”一章中[1] [2]这些点击了都是会跳到章末的注释。但是抓取以后直接就没了链接。

不好意思提交好多Bug。总之十分十分感谢作者!

docker login -c <panic: runtime error: invalid memory address or nil pointer dereference>

docker 运行登录的时,出现如下错误:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0xa01011]

goroutine 1 [running]:
github.com/yann0917/dedao-dl/cmd.who()
	/build/cmd/login.go:110 +0xd1
github.com/yann0917/dedao-dl/cmd.glob..func11(0x1188720?, {0xb38709?, 0x2?, 0x2?})
	/build/cmd/login.go:44 +0x17
github.com/spf13/cobra.(*Command).execute(0x1188720, {0xc000072de0, 0x2, 0x2})
	/go/pkg/mod/github.com/spf13/[email protected]/command.go:883 +0x6d0
github.com/spf13/cobra.(*Command).ExecuteC(0x11889a0)
	/go/pkg/mod/github.com/spf13/[email protected]/command.go:990 +0x3bd
github.com/spf13/cobra.(*Command).Execute(...)
	/go/pkg/mod/github.com/spf13/[email protected]/command.go:918
github.com/yann0917/dedao-dl/cmd.Execute(...)
	/build/cmd/root.go:29
main.main()
	/build/main.go:17 +0x25

训练营课程下载

得到有训练营项目,使用IDM下载后,无法播放,内容被加密了,请教是否有增加这个功能的排期?

能不能出个 MAC 版?

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

下载音频文件出现认证失败 Server returned 401 Unauthorized (authorization failed)

Describe the bug

可以下载课程的 pdf 和 md, 下载音频文件时会出现认证失败。

(前段时间是可以下载音频文件的)

To Reproduce
Steps to reproduce the behavior:

  1. 命令行扫码正确登陆后(dedao-dl login -q)
  2. dedao-dl dl 301 -t 1
  3. 出现该认证失败错误

Expected behavior

可以正确下载音频文件

Screenshots
If applicable, add screenshots to help explain your problem.

image

ffmpeg version 6.0 Copyright (c) 2000-2023 the FFmpeg developers
  built with Apple clang version 14.0.3 (clang-1403.0.22.14.1)
  configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/6.0_1 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox --enable-neon
  libavutil      58.  2.100 / 58.  2.100
  libavcodec     60.  3.100 / 60.  3.100
  libavformat    60.  3.100 / 60.  3.100
  libavdevice    60.  1.100 / 60.  1.100
  libavfilter     9.  3.100 /  9.  3.100
  libswscale      7.  1.100 /  7.  1.100
  libswresample   4. 10.100 /  4. 10.100
  libpostproc    57.  1.100 / 57.  1.100
https://m.igetget.com/ddmedia/public/v1/m3u8/3403242570514724/52/m.m3u8: Server returned 401 Unauthorized (authorization failed)

Desktop (please complete the following information):

  • OS: MacOS 13.5.2 (22G91)
  • shell: Terminal zsh
  • Version dedao-dl V1.2.0

下载电子书时runtime error

dle bookid 显示完chapter ID以后出错

panic: runtime error: index out of range [1] with length 1

goroutine 1 [running]:
github.com/yann0917/dedao-dl/utils.parseFootNoteDelimiter(0xc003aed590?)
	/Users/yabo/wwwroot/dedao-dl/utils/svg2html.go:728 +0x2bb
github.com/yann0917/dedao-dl/utils.GenLineContentByElement(0xc0031358c0)
	/Users/yabo/wwwroot/dedao-dl/utils/svg2html.go:595 +0x4b
github.com/yann0917/dedao-dl/utils.OneByOneHtml({0xbcdc21, 0x4}, 0x14, 0xc000320460, {0xc000119000?, 0x203000?, 0x2?})
	/Users/yabo/wwwroot/dedao-dl/utils/svg2html.go:311 +0x259
github.com/yann0917/dedao-dl/utils.AllInOneHtml({0xc000118800, 0xa5, 0xc000133dc0?}, {0xc000119000, 0xa4, 0x100})
	/Users/yabo/wwwroot/dedao-dl/utils/svg2html.go:272 +0xc5
github.com/yann0917/dedao-dl/utils.Svg2Html({0xc00003c180, 0x56}, {0xc000118800?, 0xd003d0?, 0xc00018d400?}, {0xc000119000?, 0xc00018bb98?, 0x0?})
	/Users/yabo/wwwroot/dedao-dl/utils/svg2html.go:84 +0x5d
github.com/yann0917/dedao-dl/cmd/app.(*EBookDownload).Download(0xc0004f3d50)
	/Users/yabo/wwwroot/dedao-dl/cmd/app/download.go:181 +0x3b0
github.com/yann0917/dedao-dl/cmd/app.Download(...)
	/Users/yabo/wwwroot/dedao-dl/cmd/app/download.go:207
github.com/yann0917/dedao-dl/cmd.glob..func8(0x12878e0?, {0xc000229040?, 0x1, 0x1?})
	/Users/yabo/wwwroot/dedao-dl/cmd/download.go:88 +0xd4
github.com/spf13/cobra.(*Command).execute(0x12878e0, {0xc000228ff0, 0x1, 0x1})
	/Users/yabo/go/pkg/mod/github.com/spf13/[email protected]/command.go:916 +0x862
github.com/spf13/cobra.(*Command).ExecuteC(0x1285380)
	/Users/yabo/go/pkg/mod/github.com/spf13/[email protected]/command.go:1044 +0x3bd
github.com/spf13/cobra.(*Command).Execute(...)
	/Users/yabo/go/pkg/mod/github.com/spf13/[email protected]/command.go:968
github.com/yann0917/dedao-dl/cmd.Execute(...)
	/Users/yabo/wwwroot/dedao-dl/cmd/root.go:29
main.main()
	/Users/yabo/wwwroot/dedao-dl/main.go:17 +0x25

已购课程share

自购了一些课程,看看有没有需要的。

直接给账号登录APP,不收费。

image

IMG_3843

go get失败

go get失败,貌似依赖库的接口变了:

$ go get -u github.com/yann0917/dedao-dl
# github.com/yann0917/dedao-dl/utils
workspace/go/src/github.com/yann0917/dedao-dl/utils/chromedp.go:101:17: assignment mismatch: 2 variables but network.SetCookie(key, value).WithExpires(&expr).WithDomain(".dedao.cn").WithHTTPOnly(true).Do returns 1 values
workspace/go/src/github.com/yann0917/dedao-dl/utils/cookier.go:15:36: launcher.NewBrowser().LookPath undefined (type *launcher.Browser has no field or method LookPath)

Can't download pdf books

Describe the bug
pdfg create err: &errors.errorString{s:"Loading pages (1/6)\r\n[> ] 0%\r[===> ] 5%\r[======> ] 10%\r[============> ] 20%\r[============> ] 21%\r[==============> ] 24%\r[===============> ] 26%\r[===================> ] 32%\r[===================> ] 33%\r[=====================> ] 35%\r[=====================> ] 36%\r[=====================> ] 36%\r[======================> ] 38%\r[=======================> ] 39%\r[========================> ] 40%\r[========================> ] 41%\rError: Failed to load http://file//D:\\360Downloads\\output\\Ebook\\cover.html, with network status code 3 and http status code 0 - Host file not found\r\nError: Failed loading page http://file//D:\\360Downloads\\output\\Ebook\\cover.html (sometimes it will work just to ignore this error with --load-error-handling ignore)\r\n[========================> ] 41%\r[=========================> ] 42%\r[=========================> ] 42%\r[=========================> ] 43%\r[==========================> ] 44%\r[==========================> ] 44%\r[===========================> ] 45%\r[===========================> ] 45%\r[===========================> ] 46%\r[===========================> ] 46%\r[============================> ] 47%\r[=============================> ] 49%\r[=============================> ] 49%\r[=================================> ] 55%\rExit with code 1 due to network error: HostNotFoundError\r\n"}
Error: Loading pages (1/6)
Error: Failed to load http://file//D:\360Downloads\output\Ebook\cover.html, with network status code 3 and http status code 0 - Host file not found
Error: Failed loading page http://file//D:\360Downloads\output\Ebook\cover.html (sometimes it will work just to ignore this error with --load-error-handling ignore)
Exit with code 1 due to network error: HostNotFoundError ] 55%
**Failed to load http://file//D:\360Downloads\output\Ebook\cover.html**, The reasons of the above problem might be that the cover's loadpath is fault, the loadpath might be missed the ':' before the file word

能否增加电子书下载为md格式的选项

建议增加电子书的md格式,默认的html格式没有目录结构。
我看到下载电子书的过程中,有输出章节信息的。
是否可以将这些章节目录添加到md文件里,这样子看书会更加方便(有目录结构的书,阅读起来会更方便)。
如果增加了,还请发布到新release版本里,谢谢您。

Error: XML syntax error on line 10376: invalid UTF-8

Describe the bug
some books raise Error: XML syntax error on line 10376: invalid UTF-8 while downloading:

eg:

book id: 58874
bookname: 苏东坡新传(李一冰)

Really appreciate to author's great efforts.

讲数比较多的时候下载会卡住。能不能提供单独下载章节或者讲数的接口

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

锦囊下载功能

购买了一个锦囊,结果发现只能解锁1周,所有想问下能否增加锦囊下载功能?

有些电子书的下载只有前两章内容,后面的内容缺失

比如这本书:
https://www.dedao.cn/ebook/detail?id=AnKgjNlArlXVNGKD1yL2Ek6YaogQv0YAZb0bZ4RBn7j589zJpMxmdPeqOYDxqL4y
下载后,只有前两章内容。如下图所示:
image

但是下载信息里有12章内容,下载信息如下:
image

这个问题在其他一些书籍上也会出现,经过测试一些技术类的书籍上,这个问题出现的频率较高。

修复以后,还请发布一个新的release版本,感谢。

电子书下载不全

感谢作者费心。我这也是第一次遇到这样的问题。即一本书的章节还有剩余的内容,但是下载下来的版本里就没有了。

一个例子是:
https://d.dedao.cn/E4UcXsop8aYBVyDc

在最后一章,下载下来的版本到第五小节为止,但是实际上这一章还有差不多一般的内容。总是多谢作者。

下载电子书出错“Error: XML syntax error on line 25492: invalid UTF-8”

Describe the bug
1.2.0版本dedao-windows-amd64.exe,尝试下载电子书“中华二千年史(全九册)”,结果出错

To Reproduce
步骤如下:
1)dedao-windows-amd64 login -q 扫码正常登录
2)dedao-windows-amd64 ebook 列出已购买的电子书也正常
3)dedao-windows-amd64 dle 28048 -t 1 输出如下
chapterID:"PART1_chapter-7.xhtml"
chapterID:"Section0001.xhtml"
chapterID:"cover.xhtml"
chapterID:"copyright.xhtml"
chapterID:"PART1_chapter-3.xhtml"
chapterID:"PART1_chapter-1.xhtml"
chapterID:"PART1_chapter-2.xhtml"
chapterID:"PART1_chapter-5.xhtml"
chapterID:"PART1_chapter-4.xhtml"
chapterID:"PART1_chapter-6.xhtml"
chapterID:"PART1_chapter-8.xhtml"
chapterID:"PART1_chapter-9.xhtml"
chapterID:"PART1_chapter-10.xhtml"
chapterID:"PART1_chapter-11.xhtml"
chapterID:"Section0002.xhtml"
chapterID:"PART2_chapter-1.xhtml"
chapterID:"PART2_chapter-2.xhtml"
chapterID:"PART2_chapter-3.xhtml"
chapterID:"PART2_chapter-4.xhtml"
chapterID:"PART2_chapter-5.xhtml"
chapterID:"PART2_chapter-6.xhtml"
chapterID:"Section0003.xhtml"
chapterID:"PART3_chapter-1.xhtml"
chapterID:"PART3_chapter-2.xhtml"
chapterID:"PART3_chapter-3.xhtml"
chapterID:"PART3_chapter-4.xhtml"
chapterID:"PART3_chapter-5.xhtml"
chapterID:"PART3_chapter-6.xhtml"
chapterID:"Section0004.xhtml"
chapterID:"PART4_chapter-1.xhtml"
chapterID:"PART4_chapter-2.xhtml"
chapterID:"PART4_chapter-3.xhtml"
chapterID:"PART4_chapter-4.xhtml"
chapterID:"PART4_chapter-5.xhtml"
chapterID:"PART4_chapter-6.xhtml"
chapterID:"PART4_chapter-7.xhtml"
chapterID:"PART4_chapter-8.xhtml"
chapterID:"Section0005.xhtml"
chapterID:"PART5_chapter-1.xhtml"
chapterID:"PART5_chapter-2.xhtml"
chapterID:"PART5_chapter-3.xhtml"
chapterID:"PART5_chapter-4.xhtml"
chapterID:"PART5_chapter-5.xhtml"
chapterID:"PART5_chapter-6.xhtml"
chapterID:"PART5_chapter-7.xhtml"
chapterID:"PART5_chapter-8.xhtml"
chapterID:"PART5_chapter-9.xhtml"
chapterID:"PART5_chapter-10.xhtml"
chapterID:"PART5_chapter-11.xhtml"
chapterID:"PART5_chapter-12.xhtml"
chapterID:"PART5_chapter-13.xhtml"
chapterID:"Section0006.xhtml"
chapterID:"PART6_chapter-1.xhtml"
chapterID:"PART6_chapter-2.xhtml"
chapterID:"PART6_chapter-3.xhtml"
chapterID:"PART6_chapter-4.xhtml"
chapterID:"PART6_chapter-5.xhtml"
chapterID:"PART6_chapter-6.xhtml"
chapterID:"PART6_chapter-7.xhtml"
chapterID:"PART6_chapter-8.xhtml"
chapterID:"PART6_chapter-9.xhtml"
chapterID:"PART6_chapter-10.xhtml"
chapterID:"Section0007.xhtml"
chapterID:"PART7_chapter-1.xhtml"
chapterID:"PART7_chapter-2.xhtml"
chapterID:"PART7_chapter-3.xhtml"
chapterID:"PART7_chapter-4.xhtml"
chapterID:"PART7_chapter-5.xhtml"
chapterID:"PART7_chapter-6.xhtml"
chapterID:"PART7_chapter-7.xhtml"
chapterID:"Section0008.xhtml"
chapterID:"PART8_chapter-1.xhtml"
chapterID:"PART8_chapter-2.xhtml"
chapterID:"PART8_chapter-3.xhtml"
chapterID:"PART8_chapter-4.xhtml"
chapterID:"PART8_chapter-5.xhtml"
chapterID:"PART8_chapter-6.xhtml"
chapterID:"Section0009.xhtml"
chapterID:"PART9_chapter-1.xhtml"
chapterID:"PART9_chapter-2.xhtml"
chapterID:"PART9_chapter-3.xhtml"
chapterID:"PART9_chapter-4.xhtml"
chapterID:"PART9_chapter-5.xhtml"
chapterID:"PART9_chapter-6.xhtml"
chapterID:"PART9_chapter-7.xhtml"
Error: XML syntax error on line 25492: invalid UTF-8
Usage:
dedao-dl dle [flags]

Examples:
dedao-dl dle 123 -t 1

Flags:
-t, --downloadType int 下载格式, 1:html, 2:PDF文档, 3:epub (default 1)
-h, --help help for dle

这本书“中华二千年史(全九册)”相对是比较长的。但是从程序的输出中实在看不出是哪里出错了?

Expected behavior

Screenshots

Desktop (please complete the following information):

  • OS: Win10 22H2 19045.3570
  • Browser : chrome 118.0.5993.71(正式版本) (64 位)
  • Version dedao-dl 是 1.2.0

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
如果可能的话,希望添加一个开关,可以输出程序运行的log,也方便后续定位问题。
另外,下载电子书过程中出错,可否把前面没出错的先下载下来?现在这种出错了output目录里面啥都没有的情况,让人比较有挫败感 谢谢!

下载课程93失败

非常感谢您花时间来维护工具。

可能是因为93是比较早期的课程,在数据格式上有些不同,导致下载失败。

PS C:\Users\ali\workspace> docker run -v "C:\Users\ali\workspace\config.json:/app/config.json" -v "C:\Users\ali\workspace\output:/app/output" -it --rm dedao dl 93
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0xbdc3e3]

goroutine 1 [running]:
github.com/yann0917/dedao-dl/cmd.extractCourseDownloadData(0xc0003b6050, 0x0, 0xc, 0x1e, 0x1e)
        /build/cmd/download.go:200 +0x383
github.com/yann0917/dedao-dl/cmd.extractDownloadData(0xc0000f7100, 0xc0003b6050, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
        /build/cmd/download.go:182 +0xf1
github.com/yann0917/dedao-dl/cmd.download(0xdca529, 0x8, 0x5d, 0x0, 0x0, 0xc000235d58)
        /build/cmd/download.go:78 +0x5cc
github.com/yann0917/dedao-dl/cmd.glob..func7(0x1522dc0, 0xc0000edd20, 0x1, 0x1, 0x0, 0x0)
        /build/cmd/download.go:36 +0x8b
github.com/spf13/cobra.(*Command).execute(0x1522dc0, 0xc0000edcf0, 0x1, 0x1, 0x1522dc0, 0xc0000edcf0)
        /go/pkg/mod/github.com/spf13/cobra@v1.3.0/command.go:856 +0x47c
github.com/spf13/cobra.(*Command).ExecuteC(0x15241c0, 0x0, 0x0, 0xc000088058)
        /go/pkg/mod/github.com/spf13/cobra@v1.3.0/command.go:974 +0x375
github.com/spf13/cobra.(*Command).Execute(...)
        /go/pkg/mod/github.com/spf13/cobra@v1.3.0/command.go:902
github.com/yann0917/dedao-dl/cmd.Execute(...)
        /build/cmd/root.go:29
main.main()
        /build/main.go:17 +0x2e

导出PDF文件内容有遮挡,md 文件windows系统保存出错

Describe the bug
1、Pdf文件会有banner在下方,挡住一部分文字,每一页都是如此,如
image

2、311课程MD下载不了,mp3 pdf正常。提示如下

C:\Users\Y>dedao-dl dl 311 -t 3
正在生成文件:【�[37;1m发刊词 | xxxxxx�[0m】 �[31;1m失败open output\XXX\MD/发刊词 | XXX.md: The filename, directory name, or volume label syntax is incorrect.�[0m
Error: open output\XXX\MD/发刊词 | XXX.md: The filename, directory name, or volume label syntax is incorrect.
Usage:
dedao-dl dl [flags]

ebook html 文件生成失败

52998 | 管理大师德鲁克经典收藏版(共25册)

/go/bin/dedao-dl dle 52998 -t 3
chapterID:"Section0010.xhtml"
chapterID:"Section0005.xhtml"
chapterID:"Section0001.xhtml"
chapterID:"Section0007.xhtml"
chapterID:"Section0006.xhtml"
chapterID:"Section0008.xhtml"
chapterID:"cover.xhtml"
chapterID:"Section0009.xhtml"
chapterID:"Section0004.xhtml"
chapterID:"Section0002.xhtml"
chapterID:"Section0011.xhtml"
chapterID:"Section0012.xhtml"
chapterID:"Section0013.xhtml"

…………

chapterID:"Section1416.xhtml"
chapterID:"Section1417.xhtml"
chapterID:"Section1418.xhtml"
正在生成文件:【output/Ebook/52998_管理大师德鲁克经典收藏版(共25册)_【美】彼得·德鲁克;那国毅 审订.epub】 失败parse utils.HtmlContent{Content:"\n\n\n\t<meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n\t<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\n\t<style>\n\t\t@font-face { font-family: "FZFangSong-Z02"; src:local("FZFangSong-Z02"), url("https://imgcdn.umiwi.com/ttf/fangzhengfangsong_gbk.ttf\"); }\n\t\t@font-face { font-family: "FZKai-Z03"; src:local("FZKai-Z03"), url("https://imgcdn.umiwi.com/ttf/fangzhengkaiti_gbk.ttf\"); }\n\t\t@font-face { font-family: "PingFang SC"; src:local("PingFang SC"); }\n\t\t@font-face { font-family: "DeDaoJinKai"; src:local("DeDaoJinKai"), url("https://imgcdn.umiwi.com/ttf/dedaojinkaiw03.ttf\");}\n\t\t@font-face { font-family: "Source Code Pro"; src:local("Source Code Pro"), url("https://imgcdn.umiwi.com/ttf/0315911806889993935644188722660020367983.ttf\"); }\n\t\ttable, tr, td, th, tbody, thead, tfoot {page-break-inside: avoid !important;}\n\t\timg { page-break-inside: avoid; max-width: 100% !important;}\n\t\timg.epub-footnote { padding-right:5px;}\n\t</style>\n\n

<span id="sigil_toc_id_132" style="font-size:16px;font-weight: bold;color:rgb(0, 0, 0);font-family:'PingFang SC';">

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">从技术上看,目前的“现代”产业仍有很大发展空间。从经济上看,这些产业作为投资渠道极具吸引力,而且回报丰厚,甚至可能未来几年会成长得很好。然而,就进一步推动发达经济体大幅增长的动力而言,这些产业虽然尚未停滞但已相当成熟。不管它们自身的发展和繁荣程度如何,在增加国民收入、扩大就业和创造新职业机会方面的能力将逐步丧失,越来越无法为发达国家提供经济增长动力。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">为了证明这一结论,我将简要回顾一下三个行业:农业、钢铁和汽车。这些行业共同驱动了过去20年西方发达国家(包括日本)经济的巨大增长。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">(1)农业一直是增长速度最引人注目的行业。在美国,1900年每20名劳动力中就有10人还在农田工作,1945年“二战”结束时,美国仍有近1/3的人口在农场。现在只有不到1/10的劳动力是农民。然而,他们生产的粮食和农作物比60年前多得多。农业对于国民生产总值、国民收入和生活水平的间接贡献可能更大。那些不必在农田里劳作的人,就可成为日益增长的制造业、服务业以及信息和知识行业的劳动力。处于边缘地位的农民和农业工人转为城市劳动力,这可能就是生产率提高的最大影响因素。许多这样的农场工人从农田到城市后并没有从事高产出的工作,但在许多情况下,他们本来在农场中就没有生产力可言,那么到城市后就是当服务生或打零工,也可以使其生产力和经济收入有明显提高。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">在日本,过去20年巨大的经济增长,也主要得益于劳动力从低生产力农业就业转移到高生产力的城市就业。日本的农业人口在“二战”结束时几乎占总人口的60%,现在仅为20%。德国和法国的农场人口虽然比20年前少得多,但人数仍然相当高。德国和法国(也包括意大利北部和瑞士)的生产力水平大幅提升,主要原因是来自意大利南部、西西里岛、希腊、土耳其、西班牙和葡萄牙等地方,都将居民从毫无生产力的农场转移到了工业化地区从事高生产力的工作。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">过去20年来英国经济困难的原因之一,就是缺乏这样可以转移到新产业的低生产力农民储备,这种从农村到城市的转移出现在英国是100年前。但在过去20年里,英国根本就没有人愿意离开这片土地。这在很大程度上解释了为什么英国新兴的高生产力行业一直备受劳动力短缺的困扰。因此,英国整个经济缺乏其他西方工业国家那样的内生和自发增长的激励机制。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">在苏联,未充分就业的农村劳动力资源非常庞大,但是集体农场让人们留在了农村。这样既抑制了农业生产力水平,又造成了城市劳动力短缺,尤其对服务业的影响更大。因此,新兴产业只有通过攫取消费者的利益,才能实现快速成长。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">虽然现有数据没有太大帮助,但这些数据仍表明,整体生产力增加的一半以上可能源于人口转移。无论是“二战”后20多年间美国生产力年均3%的增长,还是日本同一时期年均6%或7%的增长,都可能如此。现有产业发展良好并非生产力提高的主要原因,通常是高生产力的新兴行业比低生产力的老工业增速快,这种“组合”上的变化才是生产力提高的主要原因。过去20年,这种“组合”上的变化大部分缘于工人从低生产力农场转向更高生产力的城市。而这一变化又得益于农业技术的迅速发展,让为数极少但训练有素、装备精良的“商业化”农民能创造了非常高的产出。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">农业技术仍在进步,发达国家农业生产力快速增长的阶段就在眼前。许多现有技术尚未普及,“系统方法”刚刚开始应用于高价值作物,如水果、蔬菜和肉类等,在许多方面,这些作物仍采用过去低生产力的劳动密集型方式生产。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">例如,我们现在第一次开发种植番茄的“系统”,从种植秧苗到成熟水果包装都包括在内。同时,利用基因技术筛选和开发适合机械栽培的番茄新品种,也研究能够促进番茄生长的机器。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">农业生产力的增速几乎是制造业的两倍,未来10年这种增速甚至更快也并非不可能。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">然而,这种扩张对发达经济体的影响并不大。现在的农业人口太少了,即便是美国农民10年内实现了生产力倍增,这在经济史上几乎是前所未有的壮举,但对国民生产总值而言,也只是增加了四或五个百分点。更何况这种增长只局限于少数商业化农民,规模也许不超过100万,而且几乎所有生产的东西都销往市场。其他发达国家的情况也差不多如此。就目前情况而言,能实现高产的商业化农民数量也太少了,即使生产力大幅提高,毫无疑问可以让自己获利,但不太可能对整个国民经济产生重大影响。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">同时,低生产力的农场可雇用的人几乎已经消失。这是美国近几年中年轻人从农村转移到城市后失业的主要原因之一。毫无疑问,这些年轻人原来生活在一个毫无生产力的农场,也没有接受任何学校教育或职业训练。即使是最简单的低生产力工作,也需要在习惯、基本素养和技能方面花大量的钱进行培训。换句话说,这些“低生产力”的农民在雇用之前都需重新培训。同样,在日本,剩余下来的大量务农者很大一部分仍是老年人或还在上学的孩童。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">西欧国家的人力资源储备似乎比较多。许多身强力壮的男女仍在小农场工作,使用的还是过时的工具和落后的手段,比如,巴伐利亚山区或布列塔尼的大片石地就是如此。然而,劳动力从农场转移出去,在社会上遭遇的抵制相当大,大家认为务农是一种生活方式,而不只是谋生手段。法国戴高乐将军意识到,就算是让身强力壮的劳动力从事高生产力的工作,对于国民经济有很大的好处,任何一届政府也还是要保留葡萄酒业和牛奶业,即便这些行业毫无生产力,也需要保护。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">意大利南部和西西里岛失业率仍然居高不下。不过,在人口大规模迁移到北方工业区后,留下的劳动力主要是老年人、妇女和儿童。年轻的男女大都搬走了,那些留下来的人不容易找到工作。这些农村剩余人口不仅不是资源,反而是一个社会问题。要让他们进入任何就业岗位,需要在教育、健康和技能方面进行大量投资。这就解释了为什么北方工业区劳动力严重短缺也不愿意在南部增设工厂。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">所有工业发达地区,只有苏联及其欧洲附属国是例外。那里的农业人口几乎与“一战”时一样多,即使是最好的“商业化农民”和一群体格健壮、聪明上进的人,生产力也很低。要充分利用这些资源需要政治上的改革,但政府不愿意冒风险。政府首先要将巨额资金投入农场经济,如住房、信贷、教育、卫生等,然后才能投入农业现代化,大幅减少农业人口。从经济上看,这似乎是政府能做的最明智之事。但就政治上来说,却需要修改政策才行,而这些政策是苏联政权的基础,也是其维持权力所不可缺的。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">因此,发达国家的情况是这样:从现在起,即使是农业技术和农业生产力有巨大进步,也不会对整个经济产生重大影响。相反,在某种程度上,这种进步如果让毫无生产力的农村人(这些人虽然在人口普查中按规定也叫“农民”,但并不生产农产品)不得不离开农田,反而可能会阻碍经济增长。农场的无产者到城市后失业带来的社会问题,可能会成为整个经济的拖累,并阻碍农业生产力提高带来的进步——至少在未来10年或20年之内会如此。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">农业在发达国家已成为最富生产力、资本最密集、机械化程度最高,而且是所有现代产业中最“工业化”的产业。按每个生产单位来算,这也是一个技术和知识密集型的产业。在发达国家,农业已从最传统的部门变成最先进的部门,未来的现代农业能够生产比今天多得多的农产品。事实上,10年后,每一个发达国家所能生产的农产品都应该比自身消费的多。这不仅是北美和西欧国家的独特现象,在日本也是如此。即使美国、日本最优秀的农业经济学家,在20年前都预测将面临无法解决的长期饥荒。英国农业之所以能够实现最大程度的增长,就是因为没有像其他国家一样受到毫无生产力的少数农民带来的社会问题的困扰。换句话说,发达国家农业之所以有这么明显的“精神分裂”现象:一方面预测全世界将闹饥荒,另一方面又拼命为自己的过剩农产品找出路,就不难解释了。但是,即使是农业和农业生产力有非常突出的表现,也无法像过去20年一样为发达国家经济增长提供动力。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">(2)“二战”期间,全球第二、第三钢铁大国分别为德国和苏联,其钢铁工业完全被战争摧毁。然而,现在全球炼钢能力大约是1939年的5倍。就吨位而言,增长最多的是美国和其他传统产钢国。如果考虑人口和经济规模,发达国家中增长率最高的是苏联和日本,这两个国家的钢铁业在25年前还“不发达”。“二战”前几乎没人会将之视为炼钢国的日本,现在产量超过德国和英国,成为第三大钢铁生产国。25年前完全没有钢铁的国家,比如拉丁美洲的国家,现在却表现最为抢眼,即使是小国也有相当大的炼钢厂。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">过去没有或只有很少钢铁产能、现在开始扩张的国家,是老牌钢铁生产国经济增长与繁荣的基础,对于美国尤其如此。因为炼钢厂是钢材最初也是最重要的消费工厂。生产1吨钢材必须先消耗许多钢铁,生产钢材又要购买大量钢材来建炼钢厂。当然,这些钢材只能来自现有工厂。在“二战”后的头十年里,只有美国的钢铁生产没有遭到破坏,因而可以大批量生产并供应德国重建,及全世界新建钢铁厂所需的钢材。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">不过,这种源自钢铁产能激增的繁荣景象,掩盖了钢铁产业的浪费问题。在发达国家尤其是美国,自“二战”以来,钢铁业已经失去了1/4的传统市场,取而代之的是玻璃、塑料、混凝土和纸张等材料。容器和包装是最主要的方面,塑胶、纸质容器已经可以承受重物。几十年前,仅使用钢铁制造重容器——油桶,现在已被塑胶制品取代。渐渐地,越来越多的用塑料、铝和纸制造的容器取代了传统的“锡”罐头,再一次吞噬了被钢铁垄断的市场;预应力混凝土在桥梁和建筑施工中已成为钢铁的竞争对手,等等。尽管如此,钢铁仍是应用最广泛、功能最多的材料,但是现在很少用它做唯一材料。对于每一类用途,至少有一个可替代的材料,这些材料不仅符合规程,而且其制成品往往比钢铁制品更好用。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">在早期的工业革命中,4个产业中有棉花、煤炭和铁路3个产业在20世纪急剧衰退,第4个产业——钢铁业被19世纪中叶的技术革新拯救了。尤其贝塞麦发明的转炉炼钢法和西门子-马丁发明的平炉炼钢法能生产更廉价的钢材,取代了工业化第一个百年生产的钢铁。然而,在过去25年,钢铁业已越来越无利可图,与当今世界的其他基础产业一样,逐渐陷入被取代的危机。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">实际上,50多年来大家已经知道其中缘由。炼钢工艺的发明已经超过一个世纪,直到最近才有所改变。从物理学和经济学角度看,这种工艺非常不经济。改变温度是最昂贵的操作之一。然而,在炼钢过程中,为了立即淬火,会产生三次高温,这和加热过程一样昂贵。从成本和付出的努力看,移动重物也是最昂贵的操作之一。然而,在炼钢过程中,热熔钢在高腐蚀环境下一次又一次长距离搬动,就算再怎么巧思妙计,也难以让这一过程具有经济性。这种工艺本身就是高成本。钢铁业要使产能增速高于经济增速,或至少差不多快,就必须设计出更低成本的生产工艺。为了恢复钢铁业的增长动力,可能至少要把生产成本降低1/3。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">如今,炼钢方面的技术革命已经开始了。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">“二战”时奥地利人发明了新式氧气工艺,这一工艺在近十年中已足以处理大吨位的钢铁,也是把钢铁由机械工业转变成化学工业的主要步骤。连续铸造工艺的改变也同样重要,可以减少温度控制上的浪费,而且原材料钢铁可以通过重力流向最后成型的设备,进而取代分批次进行的既昂贵而危险的托举、运输和移动。还有,英国人发明了一种新的喷射方法,目前尚处于试验阶段。这种工艺一旦应用,就可能淘汰原有工艺,代之以连续性化学工艺,由原料钢直接产出成型钢。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">如果利用新工艺能让钢铁业重新具有竞争力,那么即使在发达国家钢铁业仍可成为主导产业。然而,钢铁工业必须先经过一个严重的财务危机。因为目前几乎所有在运营的钢铁厂都是按旧工艺建造的,这样必须全部拆除或重建。事实上,许多未来的工厂如果利用新的工艺生产钢铁,则不会建在现有厂址,而要建在深水港边,这样铁矿就可方便卸下来。欧洲钢铁厂的选址就非常不合适,还有许多苏联的工厂及美国在匹兹堡最老的工厂也是如此。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">即使不搬迁工厂,只是把原来的大型炼钢厂耗费巨资的旧技术转变成未来的新技术,就需要相当庞大的投资(虽然个别单位所需的投资少得多),这一过程将是漫长而痛苦的,欠发达国家与发展**家也许可以避免这种命运。首先,这些国家原来没有什么钢铁生产量,因此可以很容易利用新的技术来开办新厂。其次,这些工厂不必与人竞争,而且由于可以节省外汇,即使多花一点钱也是说得过去(虽然这种说法还有争议)。不过,在发达国家钢铁工业必须经得起竞争。即使受到法律保护、禁止进口,也必须能以最低价格来供应本国的产业。因为发达国家的用户可以改用其他各式各样的材料。因此,没有任何保护政策能真正扭转这种情形,只不过各地钢铁从业者对贸易保护的作用深信不疑。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">即使新的昂贵技术能降低钢铁业的成本,发达国家的钢铁业也只能收复部分失地。过去20年世界对钢铁的巨大需求所带来的钢铁业繁荣景象恐怕不会再现。在印度、拉丁美洲、**、南非,这种情况显而易见。这些国家的钢铁业已到达1885年美国的光景,不再需要新进口钢铁来建炼钢厂。自此,贫乏国家的钢铁制造商要进口的是专用机器和设备,而不再是钢材本身。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">因此,尽管技术发生了变化,成本也大大降低,但在未来的10年或20年内,钢铁仍可能成为一个长期低迷的行业。其他传统材料不可能像钢铁一样受到新“材料”产业的威胁(在下一节中讨论)。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">(3)汽车工业是过去20年发达国家经济增长的第三大动力。在西欧国家和日本的经济发展中,汽车工业扮演了主要角色,也许是<span style="font-size:16px;font-weight: bold;font-family:'PingFang SC';">的角色。另外,汽车工业在美国也有相当大的发展。在发达国家中,汽车工业可能还大有可为。在地理条件与美国相仿的苏联,汽车工业的繁荣只不过刚刚开始,最重要的是,汽车工业对经济社会的间接影响——道路、加油站、观光旅行和旅馆,才陆续起步。在欠发达国家,如果其经济有任何发展,汽车工业必定是支撑发展的<span style="font-size:16px;font-weight: bold;font-family:'PingFang SC';">工业。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">汽车代表了现代人的主要价值选择,代表了流动性与自由。汽车不但是现代社会的主要动力,而且本身也是经济增长的推进器。汽车使国家能够链接成为一个整体,也让偏远农村的低生产力就业转向高生产力的工作。如果没有汽车,大量劳动力从低生产力的农场移转到城市工作就不可能发生,至少没有那么快实现。而且,也许汽车最重要的影响是创造了需求,因为汽车是一个经济资产,连最偏僻乡村中最自给自足部落里的人也为之垂涎。巴西在过去几年已建立起能满足本国需求的大型汽车工业,便是令人印象深刻的证据。其实,巴西这个国家正在接近并确实已达到经济发展的起飞点,产业和经济发展已达到自给自足的状态。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">但在发达国家(苏联除外),无论汽车还有多少成长空间,总体上已处于守势。城市中日益增加的拥挤,使汽车越来越不适合作为运输工具。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">我们越来越重视寻找客运和货运等大众运输的替代方法,否则拥堵的交通会让我们难以动弹,空气污染也令我们窒息。如果不是因为有了内燃机,汽车将会在城市中心绝迹,这只是时间问题。几年前,只要提到这件事,市民就大为愤怒。然而,当纽约空气污染防治局局长最近声明,汽车不久将禁止在纽约市最重要的四到五条大街如时代广场等地通行时,每个人都认为这是显而易见的事,如果为时未晚的话。在英国和德国,虽然交通部部长关于禁止重型卡车上高速公路,否则就要给予重罚的建议,由于卡车司机的抗议而不得不修改,但普通民众,尤其是两国议会显然是默认这一建议的。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">西欧国家和日本的汽车产量可能到了饱和状态,日本也许程度较轻。若以每平方英里的汽车数来计算,西欧比美国任何地方的密度更高。即使按户均拥有汽车数这个更合适的方法计算,西欧国家和日本在最近20年内(日本也许晚几年)汽车密度增长迅速,以后势必会逐渐减缓。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">在发展**家,男人与汽车的恋爱也许刚刚开始(苏联的情况的确是如此)。各地的年轻人都想买车。不过,在发达国家,尤其对成年人,汽车从一种喜好变成一种方便实用之物。汽车成为一件必需品,但也不再是自我表现的必需品或地位的象征。近年来,在美国出现的汽车安全争议,很可能是老夫老妻之间长期婚姻后的一场热烈争吵。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">我再重申一遍,完全可以想象,这些“现代产业”仍将有大规模增长空间,当然应该可以为印度、巴基斯坦、南美、东南亚等发展**家和地区提供迅速增长的动力。实际上,现代产业是这些国家经济增长的基础。因为这些产业的技术是现成的,可由发达国家进口。发展**家需要推动社会和文化的巨大变革,以至于无法承担在此基础上进行的既冒险又苛刻的技术创新。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">此外,例如农业、汽车、石化等主要“现代”产业,是发展**家经济快速增长的良好基础。这些产业将直接经济影响与巨大的乘数效应结合起来。一个迅速现代化的农业不但生产经济增长所必需的食物,而且可以创造其他新产业的需求——从化肥到农业设备,从修理厂到农业信贷,从运输、公路到食品加工,这些新产业反过来又提供了高收入的就业机会。同样,汽车工业为工厂中的每一个工人创造了8个就业机会——筑路、养路、加油站、修理站、经销商等。同时,这些产业很好地满足了消费者的需求,因此可以由全体民众中产生巨大的发展潜能。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">这些产业在发展**家的迅速发展,也能为发达国家带来机会,比如,世界各地建造的钢铁厂可以创造出口市场,也为发达国家钢铁业带来繁荣的机遇。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">即使目前没有新产业出现,发达国家也不会出现经济不景气的现象。从发展**家对于器材、物资和高端产品的需求看,发达国家可以享有一段高水平经济活动、大量就业机会和繁荣富裕的时期。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">不过,这段时间尽管经济境况很好,却太像英国最近三四十年来的繁荣时期。英国人已发现,这个表面看起来繁荣与安逸的情形表明经济正处于缓慢衰退中。发展**家迅速建立起自己的经济是十分重要的事,而且发展**家只有依靠最近50年兴起的“现代”产业,才能发展经济。虽然这样做对发展**家是足够了,而且比过去20年做的还要多,但对发达国家是不够的。发达国家需要一个继续增长的动力,而这些已逐渐衰老的现代产业无法提供。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">因此,我们听到“技术成熟”或“技术停滞”等的预言时并不十分吃惊。最近几年,大家讨论最多的书——约翰·肯尼斯·加尔布雷思的《新工业国》(The New Industrial State),正是完全基于这一预言的。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">20世纪30年代末,我们也听到了同样的预言,那时所有经济学家都在热议西方——尤其是美国的“经济成熟”,以及随之而来的“经济停滞”。然而,几乎紧跟这个预言的是西方世界从未有过的一个长周期经济增长。如今,同样的预言之后,很可能也是一场巨大的技术变革和经济增长。当然,就算是最灿烂的前景也可能因人类的愚蠢而毁坏。人类在20世纪已屡次表现出自残的能力。不过,除非西方再犯下发动战争的罪恶行径或遭遇经济大萧条,否则以新技术为基础的新产业迅速崛起是可以预测的。

\n\n", ChapterID:"Section0138.xhtml", PathInEpub:"/OEBPS/Text/Section0138.xhtml", TocLevel:3, TocHref:"Section0138.xhtml#sigil_toc_id_132", TocText:"日渐式微的“现代”产业"} failed: Parent with the internal filename Section0137.xhtml does not exist
完成
Error: parse utils.HtmlContent{Content:"\n\n\n\t<meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n\t<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\n\t<style>\n\t\t@font-face { font-family: "FZFangSong-Z02"; src:local("FZFangSong-Z02"), url("https://imgcdn.umiwi.com/ttf/fangzhengfangsong_gbk.ttf\"); }\n\t\t@font-face { font-family: "FZKai-Z03"; src:local("FZKai-Z03"), url("https://imgcdn.umiwi.com/ttf/fangzhengkaiti_gbk.ttf\"); }\n\t\t@font-face { font-family: "PingFang SC"; src:local("PingFang SC"); }\n\t\t@font-face { font-family: "DeDaoJinKai"; src:local("DeDaoJinKai"), url("https://imgcdn.umiwi.com/ttf/dedaojinkaiw03.ttf\");}\n\t\t@font-face { font-family: "Source Code Pro"; src:local("Source Code Pro"), url("https://imgcdn.umiwi.com/ttf/0315911806889993935644188722660020367983.ttf\"); }\n\t\ttable, tr, td, th, tbody, thead, tfoot {page-break-inside: avoid !important;}\n\t\timg { page-break-inside: avoid; max-width: 100% !important;}\n\t\timg.epub-footnote { padding-right:5px;}\n\t</style>\n\n

<span id="sigil_toc_id_132" style="font-size:16px;font-weight: bold;color:rgb(0, 0, 0);font-family:'PingFang SC';">

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">从技术上看,目前的“现代”产业仍有很大发展空间。从经济上看,这些产业作为投资渠道极具吸引力,而且回报丰厚,甚至可能未来几年会成长得很好。然而,就进一步推动发达经济体大幅增长的动力而言,这些产业虽然尚未停滞但已相当成熟。不管它们自身的发展和繁荣程度如何,在增加国民收入、扩大就业和创造新职业机会方面的能力将逐步丧失,越来越无法为发达国家提供经济增长动力。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">为了证明这一结论,我将简要回顾一下三个行业:农业、钢铁和汽车。这些行业共同驱动了过去20年西方发达国家(包括日本)经济的巨大增长。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">(1)农业一直是增长速度最引人注目的行业。在美国,1900年每20名劳动力中就有10人还在农田工作,1945年“二战”结束时,美国仍有近1/3的人口在农场。现在只有不到1/10的劳动力是农民。然而,他们生产的粮食和农作物比60年前多得多。农业对于国民生产总值、国民收入和生活水平的间接贡献可能更大。那些不必在农田里劳作的人,就可成为日益增长的制造业、服务业以及信息和知识行业的劳动力。处于边缘地位的农民和农业工人转为城市劳动力,这可能就是生产率提高的最大影响因素。许多这样的农场工人从农田到城市后并没有从事高产出的工作,但在许多情况下,他们本来在农场中就没有生产力可言,那么到城市后就是当服务生或打零工,也可以使其生产力和经济收入有明显提高。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">在日本,过去20年巨大的经济增长,也主要得益于劳动力从低生产力农业就业转移到高生产力的城市就业。日本的农业人口在“二战”结束时几乎占总人口的60%,现在仅为20%。德国和法国的农场人口虽然比20年前少得多,但人数仍然相当高。德国和法国(也包括意大利北部和瑞士)的生产力水平大幅提升,主要原因是来自意大利南部、西西里岛、希腊、土耳其、西班牙和葡萄牙等地方,都将居民从毫无生产力的农场转移到了工业化地区从事高生产力的工作。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">过去20年来英国经济困难的原因之一,就是缺乏这样可以转移到新产业的低生产力农民储备,这种从农村到城市的转移出现在英国是100年前。但在过去20年里,英国根本就没有人愿意离开这片土地。这在很大程度上解释了为什么英国新兴的高生产力行业一直备受劳动力短缺的困扰。因此,英国整个经济缺乏其他西方工业国家那样的内生和自发增长的激励机制。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">在苏联,未充分就业的农村劳动力资源非常庞大,但是集体农场让人们留在了农村。这样既抑制了农业生产力水平,又造成了城市劳动力短缺,尤其对服务业的影响更大。因此,新兴产业只有通过攫取消费者的利益,才能实现快速成长。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">虽然现有数据没有太大帮助,但这些数据仍表明,整体生产力增加的一半以上可能源于人口转移。无论是“二战”后20多年间美国生产力年均3%的增长,还是日本同一时期年均6%或7%的增长,都可能如此。现有产业发展良好并非生产力提高的主要原因,通常是高生产力的新兴行业比低生产力的老工业增速快,这种“组合”上的变化才是生产力提高的主要原因。过去20年,这种“组合”上的变化大部分缘于工人从低生产力农场转向更高生产力的城市。而这一变化又得益于农业技术的迅速发展,让为数极少但训练有素、装备精良的“商业化”农民能创造了非常高的产出。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">农业技术仍在进步,发达国家农业生产力快速增长的阶段就在眼前。许多现有技术尚未普及,“系统方法”刚刚开始应用于高价值作物,如水果、蔬菜和肉类等,在许多方面,这些作物仍采用过去低生产力的劳动密集型方式生产。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">例如,我们现在第一次开发种植番茄的“系统”,从种植秧苗到成熟水果包装都包括在内。同时,利用基因技术筛选和开发适合机械栽培的番茄新品种,也研究能够促进番茄生长的机器。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">农业生产力的增速几乎是制造业的两倍,未来10年这种增速甚至更快也并非不可能。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">然而,这种扩张对发达经济体的影响并不大。现在的农业人口太少了,即便是美国农民10年内实现了生产力倍增,这在经济史上几乎是前所未有的壮举,但对国民生产总值而言,也只是增加了四或五个百分点。更何况这种增长只局限于少数商业化农民,规模也许不超过100万,而且几乎所有生产的东西都销往市场。其他发达国家的情况也差不多如此。就目前情况而言,能实现高产的商业化农民数量也太少了,即使生产力大幅提高,毫无疑问可以让自己获利,但不太可能对整个国民经济产生重大影响。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">同时,低生产力的农场可雇用的人几乎已经消失。这是美国近几年中年轻人从农村转移到城市后失业的主要原因之一。毫无疑问,这些年轻人原来生活在一个毫无生产力的农场,也没有接受任何学校教育或职业训练。即使是最简单的低生产力工作,也需要在习惯、基本素养和技能方面花大量的钱进行培训。换句话说,这些“低生产力”的农民在雇用之前都需重新培训。同样,在日本,剩余下来的大量务农者很大一部分仍是老年人或还在上学的孩童。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">西欧国家的人力资源储备似乎比较多。许多身强力壮的男女仍在小农场工作,使用的还是过时的工具和落后的手段,比如,巴伐利亚山区或布列塔尼的大片石地就是如此。然而,劳动力从农场转移出去,在社会上遭遇的抵制相当大,大家认为务农是一种生活方式,而不只是谋生手段。法国戴高乐将军意识到,就算是让身强力壮的劳动力从事高生产力的工作,对于国民经济有很大的好处,任何一届政府也还是要保留葡萄酒业和牛奶业,即便这些行业毫无生产力,也需要保护。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">意大利南部和西西里岛失业率仍然居高不下。不过,在人口大规模迁移到北方工业区后,留下的劳动力主要是老年人、妇女和儿童。年轻的男女大都搬走了,那些留下来的人不容易找到工作。这些农村剩余人口不仅不是资源,反而是一个社会问题。要让他们进入任何就业岗位,需要在教育、健康和技能方面进行大量投资。这就解释了为什么北方工业区劳动力严重短缺也不愿意在南部增设工厂。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">所有工业发达地区,只有苏联及其欧洲附属国是例外。那里的农业人口几乎与“一战”时一样多,即使是最好的“商业化农民”和一群体格健壮、聪明上进的人,生产力也很低。要充分利用这些资源需要政治上的改革,但政府不愿意冒风险。政府首先要将巨额资金投入农场经济,如住房、信贷、教育、卫生等,然后才能投入农业现代化,大幅减少农业人口。从经济上看,这似乎是政府能做的最明智之事。但就政治上来说,却需要修改政策才行,而这些政策是苏联政权的基础,也是其维持权力所不可缺的。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">因此,发达国家的情况是这样:从现在起,即使是农业技术和农业生产力有巨大进步,也不会对整个经济产生重大影响。相反,在某种程度上,这种进步如果让毫无生产力的农村人(这些人虽然在人口普查中按规定也叫“农民”,但并不生产农产品)不得不离开农田,反而可能会阻碍经济增长。农场的无产者到城市后失业带来的社会问题,可能会成为整个经济的拖累,并阻碍农业生产力提高带来的进步——至少在未来10年或20年之内会如此。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">农业在发达国家已成为最富生产力、资本最密集、机械化程度最高,而且是所有现代产业中最“工业化”的产业。按每个生产单位来算,这也是一个技术和知识密集型的产业。在发达国家,农业已从最传统的部门变成最先进的部门,未来的现代农业能够生产比今天多得多的农产品。事实上,10年后,每一个发达国家所能生产的农产品都应该比自身消费的多。这不仅是北美和西欧国家的独特现象,在日本也是如此。即使美国、日本最优秀的农业经济学家,在20年前都预测将面临无法解决的长期饥荒。英国农业之所以能够实现最大程度的增长,就是因为没有像其他国家一样受到毫无生产力的少数农民带来的社会问题的困扰。换句话说,发达国家农业之所以有这么明显的“精神分裂”现象:一方面预测全世界将闹饥荒,另一方面又拼命为自己的过剩农产品找出路,就不难解释了。但是,即使是农业和农业生产力有非常突出的表现,也无法像过去20年一样为发达国家经济增长提供动力。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">(2)“二战”期间,全球第二、第三钢铁大国分别为德国和苏联,其钢铁工业完全被战争摧毁。然而,现在全球炼钢能力大约是1939年的5倍。就吨位而言,增长最多的是美国和其他传统产钢国。如果考虑人口和经济规模,发达国家中增长率最高的是苏联和日本,这两个国家的钢铁业在25年前还“不发达”。“二战”前几乎没人会将之视为炼钢国的日本,现在产量超过德国和英国,成为第三大钢铁生产国。25年前完全没有钢铁的国家,比如拉丁美洲的国家,现在却表现最为抢眼,即使是小国也有相当大的炼钢厂。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">过去没有或只有很少钢铁产能、现在开始扩张的国家,是老牌钢铁生产国经济增长与繁荣的基础,对于美国尤其如此。因为炼钢厂是钢材最初也是最重要的消费工厂。生产1吨钢材必须先消耗许多钢铁,生产钢材又要购买大量钢材来建炼钢厂。当然,这些钢材只能来自现有工厂。在“二战”后的头十年里,只有美国的钢铁生产没有遭到破坏,因而可以大批量生产并供应德国重建,及全世界新建钢铁厂所需的钢材。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">不过,这种源自钢铁产能激增的繁荣景象,掩盖了钢铁产业的浪费问题。在发达国家尤其是美国,自“二战”以来,钢铁业已经失去了1/4的传统市场,取而代之的是玻璃、塑料、混凝土和纸张等材料。容器和包装是最主要的方面,塑胶、纸质容器已经可以承受重物。几十年前,仅使用钢铁制造重容器——油桶,现在已被塑胶制品取代。渐渐地,越来越多的用塑料、铝和纸制造的容器取代了传统的“锡”罐头,再一次吞噬了被钢铁垄断的市场;预应力混凝土在桥梁和建筑施工中已成为钢铁的竞争对手,等等。尽管如此,钢铁仍是应用最广泛、功能最多的材料,但是现在很少用它做唯一材料。对于每一类用途,至少有一个可替代的材料,这些材料不仅符合规程,而且其制成品往往比钢铁制品更好用。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">在早期的工业革命中,4个产业中有棉花、煤炭和铁路3个产业在20世纪急剧衰退,第4个产业——钢铁业被19世纪中叶的技术革新拯救了。尤其贝塞麦发明的转炉炼钢法和西门子-马丁发明的平炉炼钢法能生产更廉价的钢材,取代了工业化第一个百年生产的钢铁。然而,在过去25年,钢铁业已越来越无利可图,与当今世界的其他基础产业一样,逐渐陷入被取代的危机。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">实际上,50多年来大家已经知道其中缘由。炼钢工艺的发明已经超过一个世纪,直到最近才有所改变。从物理学和经济学角度看,这种工艺非常不经济。改变温度是最昂贵的操作之一。然而,在炼钢过程中,为了立即淬火,会产生三次高温,这和加热过程一样昂贵。从成本和付出的努力看,移动重物也是最昂贵的操作之一。然而,在炼钢过程中,热熔钢在高腐蚀环境下一次又一次长距离搬动,就算再怎么巧思妙计,也难以让这一过程具有经济性。这种工艺本身就是高成本。钢铁业要使产能增速高于经济增速,或至少差不多快,就必须设计出更低成本的生产工艺。为了恢复钢铁业的增长动力,可能至少要把生产成本降低1/3。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">如今,炼钢方面的技术革命已经开始了。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">“二战”时奥地利人发明了新式氧气工艺,这一工艺在近十年中已足以处理大吨位的钢铁,也是把钢铁由机械工业转变成化学工业的主要步骤。连续铸造工艺的改变也同样重要,可以减少温度控制上的浪费,而且原材料钢铁可以通过重力流向最后成型的设备,进而取代分批次进行的既昂贵而危险的托举、运输和移动。还有,英国人发明了一种新的喷射方法,目前尚处于试验阶段。这种工艺一旦应用,就可能淘汰原有工艺,代之以连续性化学工艺,由原料钢直接产出成型钢。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">如果利用新工艺能让钢铁业重新具有竞争力,那么即使在发达国家钢铁业仍可成为主导产业。然而,钢铁工业必须先经过一个严重的财务危机。因为目前几乎所有在运营的钢铁厂都是按旧工艺建造的,这样必须全部拆除或重建。事实上,许多未来的工厂如果利用新的工艺生产钢铁,则不会建在现有厂址,而要建在深水港边,这样铁矿就可方便卸下来。欧洲钢铁厂的选址就非常不合适,还有许多苏联的工厂及美国在匹兹堡最老的工厂也是如此。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">即使不搬迁工厂,只是把原来的大型炼钢厂耗费巨资的旧技术转变成未来的新技术,就需要相当庞大的投资(虽然个别单位所需的投资少得多),这一过程将是漫长而痛苦的,欠发达国家与发展**家也许可以避免这种命运。首先,这些国家原来没有什么钢铁生产量,因此可以很容易利用新的技术来开办新厂。其次,这些工厂不必与人竞争,而且由于可以节省外汇,即使多花一点钱也是说得过去(虽然这种说法还有争议)。不过,在发达国家钢铁工业必须经得起竞争。即使受到法律保护、禁止进口,也必须能以最低价格来供应本国的产业。因为发达国家的用户可以改用其他各式各样的材料。因此,没有任何保护政策能真正扭转这种情形,只不过各地钢铁从业者对贸易保护的作用深信不疑。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">即使新的昂贵技术能降低钢铁业的成本,发达国家的钢铁业也只能收复部分失地。过去20年世界对钢铁的巨大需求所带来的钢铁业繁荣景象恐怕不会再现。在印度、拉丁美洲、**、南非,这种情况显而易见。这些国家的钢铁业已到达1885年美国的光景,不再需要新进口钢铁来建炼钢厂。自此,贫乏国家的钢铁制造商要进口的是专用机器和设备,而不再是钢材本身。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">因此,尽管技术发生了变化,成本也大大降低,但在未来的10年或20年内,钢铁仍可能成为一个长期低迷的行业。其他传统材料不可能像钢铁一样受到新“材料”产业的威胁(在下一节中讨论)。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">(3)汽车工业是过去20年发达国家经济增长的第三大动力。在西欧国家和日本的经济发展中,汽车工业扮演了主要角色,也许是<span style="font-size:16px;font-weight: bold;font-family:'PingFang SC';">的角色。另外,汽车工业在美国也有相当大的发展。在发达国家中,汽车工业可能还大有可为。在地理条件与美国相仿的苏联,汽车工业的繁荣只不过刚刚开始,最重要的是,汽车工业对经济社会的间接影响——道路、加油站、观光旅行和旅馆,才陆续起步。在欠发达国家,如果其经济有任何发展,汽车工业必定是支撑发展的<span style="font-size:16px;font-weight: bold;font-family:'PingFang SC';">工业。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">汽车代表了现代人的主要价值选择,代表了流动性与自由。汽车不但是现代社会的主要动力,而且本身也是经济增长的推进器。汽车使国家能够链接成为一个整体,也让偏远农村的低生产力就业转向高生产力的工作。如果没有汽车,大量劳动力从低生产力的农场移转到城市工作就不可能发生,至少没有那么快实现。而且,也许汽车最重要的影响是创造了需求,因为汽车是一个经济资产,连最偏僻乡村中最自给自足部落里的人也为之垂涎。巴西在过去几年已建立起能满足本国需求的大型汽车工业,便是令人印象深刻的证据。其实,巴西这个国家正在接近并确实已达到经济发展的起飞点,产业和经济发展已达到自给自足的状态。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">但在发达国家(苏联除外),无论汽车还有多少成长空间,总体上已处于守势。城市中日益增加的拥挤,使汽车越来越不适合作为运输工具。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">我们越来越重视寻找客运和货运等大众运输的替代方法,否则拥堵的交通会让我们难以动弹,空气污染也令我们窒息。如果不是因为有了内燃机,汽车将会在城市中心绝迹,这只是时间问题。几年前,只要提到这件事,市民就大为愤怒。然而,当纽约空气污染防治局局长最近声明,汽车不久将禁止在纽约市最重要的四到五条大街如时代广场等地通行时,每个人都认为这是显而易见的事,如果为时未晚的话。在英国和德国,虽然交通部部长关于禁止重型卡车上高速公路,否则就要给予重罚的建议,由于卡车司机的抗议而不得不修改,但普通民众,尤其是两国议会显然是默认这一建议的。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">西欧国家和日本的汽车产量可能到了饱和状态,日本也许程度较轻。若以每平方英里的汽车数来计算,西欧比美国任何地方的密度更高。即使按户均拥有汽车数这个更合适的方法计算,西欧国家和日本在最近20年内(日本也许晚几年)汽车密度增长迅速,以后势必会逐渐减缓。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">在发展**家,男人与汽车的恋爱也许刚刚开始(苏联的情况的确是如此)。各地的年轻人都想买车。不过,在发达国家,尤其对成年人,汽车从一种喜好变成一种方便实用之物。汽车成为一件必需品,但也不再是自我表现的必需品或地位的象征。近年来,在美国出现的汽车安全争议,很可能是老夫老妻之间长期婚姻后的一场热烈争吵。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">我再重申一遍,完全可以想象,这些“现代产业”仍将有大规模增长空间,当然应该可以为印度、巴基斯坦、南美、东南亚等发展**家和地区提供迅速增长的动力。实际上,现代产业是这些国家经济增长的基础。因为这些产业的技术是现成的,可由发达国家进口。发展**家需要推动社会和文化的巨大变革,以至于无法承担在此基础上进行的既冒险又苛刻的技术创新。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">此外,例如农业、汽车、石化等主要“现代”产业,是发展**家经济快速增长的良好基础。这些产业将直接经济影响与巨大的乘数效应结合起来。一个迅速现代化的农业不但生产经济增长所必需的食物,而且可以创造其他新产业的需求——从化肥到农业设备,从修理厂到农业信贷,从运输、公路到食品加工,这些新产业反过来又提供了高收入的就业机会。同样,汽车工业为工厂中的每一个工人创造了8个就业机会——筑路、养路、加油站、修理站、经销商等。同时,这些产业很好地满足了消费者的需求,因此可以由全体民众中产生巨大的发展潜能。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">这些产业在发展**家的迅速发展,也能为发达国家带来机会,比如,世界各地建造的钢铁厂可以创造出口市场,也为发达国家钢铁业带来繁荣的机遇。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">即使目前没有新产业出现,发达国家也不会出现经济不景气的现象。从发展**家对于器材、物资和高端产品的需求看,发达国家可以享有一段高水平经济活动、大量就业机会和繁荣富裕的时期。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">不过,这段时间尽管经济境况很好,却太像英国最近三四十年来的繁荣时期。英国人已发现,这个表面看起来繁荣与安逸的情形表明经济正处于缓慢衰退中。发展**家迅速建立起自己的经济是十分重要的事,而且发展**家只有依靠最近50年兴起的“现代”产业,才能发展经济。虽然这样做对发展**家是足够了,而且比过去20年做的还要多,但对发达国家是不够的。发达国家需要一个继续增长的动力,而这些已逐渐衰老的现代产业无法提供。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">因此,我们听到“技术成熟”或“技术停滞”等的预言时并不十分吃惊。最近几年,大家讨论最多的书——约翰·肯尼斯·加尔布雷思的《新工业国》(The New Industrial State),正是完全基于这一预言的。

\n\t

<span id="" style="font-size:16px;font-family:'PingFang SC';">20世纪30年代末,我们也听到了同样的预言,那时所有经济学家都在热议西方——尤其是美国的“经济成熟”,以及随之而来的“经济停滞”。然而,几乎紧跟这个预言的是西方世界从未有过的一个长周期经济增长。如今,同样的预言之后,很可能也是一场巨大的技术变革和经济增长。当然,就算是最灿烂的前景也可能因人类的愚蠢而毁坏。人类在20世纪已屡次表现出自残的能力。不过,除非西方再犯下发动战争的罪恶行径或遭遇经济大萧条,否则以新技术为基础的新产业迅速崛起是可以预测的。

\n\n", ChapterID:"Section0138.xhtml", PathInEpub:"/OEBPS/Text/Section0138.xhtml", TocLevel:3, TocHref:"Section0138.xhtml#sigil_toc_id_132", TocText:"日渐式微的“现代”产业"} failed: Parent with the internal filename Section0137.xhtml does not exist
Usage:
dedao-dl dle [flags]

Examples:
dedao-dl dle 123 -t 1

Flags:
-t, --downloadType int 下载格式, 1:html, 2:PDF文档, 3:epub (default 1)
-h, --help help for dle

can't download ebook

chapterID:"Chapter10.xhtml"
chapterID:"Chapter11.xhtml"
chapterID:"Chapter12.xhtml"
chapterID:"Chapter13.xhtml"
chapterID:"Chapter14.xhtml"
正在生成文件:【output/Ebook/*****.pdf】 panic: runtime error: index out of range [1] with length 1

goroutine 1 [running]:
github.com/yann0917/dedao-dl/utils.parseFootNoteDelimiter(0xc0035ef950?)
/Users/yabo/wwwroot/dedao-dl/utils/svg2html.go:728 +0x2bb
github.com/yann0917/dedao-dl/utils.GenLineContentByElement(0xc00088e740)
/Users/yabo/wwwroot/dedao-dl/utils/svg2html.go:595 +0x4b
github.com/yann0917/dedao-dl/utils.OneByOneHtml({0xbcd2fb, 0x3}, 0x4, 0xc0000f80e0, {0xc00049ba30?, 0x1?, 0x1?})
/Users/yabo/wwwroot/dedao-dl/utils/svg2html.go:311 +0x259
github.com/yann0917/dedao-dl/utils.Svg2Pdf({0xc000501060, 0x1f}, {0xc000672000, 0x12, 0xc0000fb400?})
/Users/yabo/wwwroot/dedao-dl/utils/svg2html.go:121 +0x2c5
github.com/yann0917/dedao-dl/cmd/app.(*EBookDownload).Download(0xc00049bd50)
/Users/yabo/wwwroot/dedao-dl/cmd/app/download.go:186 +0x325
github.com/yann0917/dedao-dl/cmd/app.Download(...)
/Users/yabo/wwwroot/dedao-dl/cmd/app/download.go:207
github.com/yann0917/dedao-dl/cmd.glob..func8(0x12878e0?, {0xc000228fc0?, 0x1, 0x3?})
/Users/yabo/wwwroot/dedao-dl/cmd/download.go:88 +0xd4
github.com/spf13/cobra.(*Command).execute(0x12878e0, {0xc000228f60, 0x3, 0x3})
/Users/yabo/go/pkg/mod/github.com/spf13/[email protected]/command.go:916 +0x862
github.com/spf13/cobra.(*Command).ExecuteC(0x1285380)
/Users/yabo/go/pkg/mod/github.com/spf13/[email protected]/command.go:1044 +0x3bd
github.com/spf13/cobra.(*Command).Execute(...)
/Users/yabo/go/pkg/mod/github.com/spf13/[email protected]/command.go:968
github.com/yann0917/dedao-dl/cmd.Execute(...)
/Users/yabo/wwwroot/dedao-dl/cmd/root.go:29
main.main()
/Users/yabo/wwwroot/dedao-dl/main.go:17 +0x25

fedora37 x86_64

总会出现“panic: runtime error: invalid memory address or nil pointer dereference”错误

classID 354
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x174dd7e]

goroutine 1 [running]:
github.com/yann0917/dedao-dl/cmd/app.CourseInfo(0x162, 0x400, 0x203000, 0x400)
/Users/123/go/pkg/mod/github.com/yann0917/[email protected]/cmd/app/course.go:33 +0x5e
github.com/yann0917/dedao-dl/cmd.courseInfo(0x162, 0xc000010018, 0xc0001abd78)
/Users/123/go/pkg/mod/github.com/yann0917/[email protected]/cmd/course.go:118 +0x45
github.com/yann0917/dedao-dl/cmd.glob..func4(0x204c840, 0xc0001e3980, 0x0, 0x2, 0x0, 0x0)
/Users/123/go/pkg/mod/github.com/yann0917/[email protected]/cmd/course.go:44 +0xba
github.com/spf13/cobra.(*Command).execute(0x204c840, 0xc0001e3960, 0x2, 0x2, 0x204c840, 0xc0001e3960)
/Users/123/go/pkg/mod/github.com/spf13/[email protected]/command.go:850 +0x47c
github.com/spf13/cobra.(*Command).ExecuteC(0x204c060, 0x0, 0x0, 0xc00008e058)
/Users/123/go/pkg/mod/github.com/spf13/[email protected]/command.go:958 +0x375
github.com/spf13/cobra.(*Command).Execute(...)
/Users/123/go/pkg/mod/github.com/spf13/[email protected]/command.go:895
github.com/yann0917/dedao-dl/cmd.Execute(...)
/Users/123/go/pkg/mod/github.com/yann0917/[email protected]/cmd/root.go:29
main.main()
/Users/123/go/pkg/mod/github.com/yann0917/[email protected]/main.go:17 +0x2e

exec: "ffmpeg": executable file not found in $PATH

GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/123/Library/Caches/go-build"
GOENV="/Users/123/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/123/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/123/go"
GOPRIVATE=""
GOPROXY="https://goproxy.cn"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/g9/hclfswm94yg5g7njg7lnk9200000gn/T/go-build637456610=/tmp/go-build -gno-record-gcc-switches -fno-common"

怎么直接下载罗辑思维,启发俱乐部所有内容

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

序号列表的第一行解析错位

导出 PDF 以及 eBook 格式时,如果遇到了序号列表,则字符 1. 会被解析到序号列表的上一行,例如:

正确的解析格式:

1. 哈哈哈
2. 哈哈哈
3. 哈哈哈
实际上的解析格式:1
.哈哈哈
2. 哈哈哈
3. 哈哈哈

3761689565496_ pic

关于'config.json',但是实际项目中并无该文件。

README.md 中提到的docker运行方法下,有关于'config.json',但是实际项目中并无该文件。这个文件是会自动生成的吗?直接运行docker run 的时候,会提示‘ /app/config.json配置文件不能是目录’。

电子书 封面文件冲突 Filename already used: cover.xhtml

    @yann0917 看起来忧患这本书为例还是有个小bug (补注:试了一下别的电子书都有这个问题)

下面是错误代码

Error: parse utils.HtmlContent{Content:"<!DOCTYPE html>\n<html>\n<head>\n\t<meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\n\t<style>\n\t\t@font-face { font-family: \"FZFangSong-Z02\"; src:local(\"FZFangSong-Z02\"), url(\"https://imgcdn.umiwi.com/ttf/fangzhengfangsong_gbk.ttf\"); }\n\t\t@font-face { font-family: \"FZKai-Z03\"; src:local(\"FZKai-Z03\"), url(\"https://imgcdn.umiwi.com/ttf/fangzhengkaiti_gbk.ttf\"); }\n\t\t@font-face { font-family: \"PingFang SC\"; src:local(\"PingFang SC\"); }\n\t\t@font-face { font-family: \"Source Code Pro\"; src:local(\"Source Code Pro\"), url(\"https://imgcdn.umiwi.com/ttf/0315911806889993935644188722660020367983.ttf\"); }\n\t\ttable, tr, td, th, tbody, thead, tfoot {page-break-inside: avoid !important;}\n\t\timg { page-break-inside: avoid; max-width: 100% !important;}\n\t\timg.epub-footnote { padding-right:5px;}\n\t</style>\n</head>\n<body>\n</body>\n</html>", ChapterID:"cover.xhtml", PathInEpub:"/OEBPS/Text/cover.xhtml", TocLevel:0, TocHref:"", TocText:""} failed: Filename already used: cover.xhtml

看起来是代码里创建了封面以后再把原来的文件加进去有了冲突?顺便多一句,得到还挺奇怪的,有些书我看到封面文件还是不一样的名字。真的是感谢作者抽空处理。

Originally posted by @rainrdx in #141 (comment)

Invalid UTF8

Describe the bug

Error: XML syntax error on line 728: invalid UTF-8

To Reproduce
电子书地址

总是感谢作者花这么多时间维护。谢谢!

内文插入式注释保存htmls时出错

Describe the bug
这本《为权利而斗争》的注释生成出错。个人推测和这本书一样的注释不放在文末,使用超链接,而是直接在内文插入的书可能都有同样问题。如《剑桥**史》

To Reproduce
Steps to reproduce the behavior:
1.找到《为权利而斗争》
2. 下载html。并开启
3.如下所示,所有注释的内容被错误的放在img 的 alt 和 title 位置。

<p><span style="font-size:16px;font-family:'FZFangSong-Z02';">是值得毁灭的。<sup><img width="11" src="https://staticcdn1-5.umiwi.com/epms_ebook/d2273846a54609ee75595587a6e2469c.png" alt="歌德诗句,原文为:Alles, was entsteht, Ist werth, dass es zu Grunde geht." title="歌德诗句,原文为:Alles, was entsteht, Ist werth, dass es zu Grunde geht." class="epub-footnote"/></sup></span></p>

Expected behavior
正如我前文所说,这种注释的文本并不在正文之中(因为搜索不到),所以建议作者能把这类注释转化为通常的文末超链接式的注释(放在任何合适的地方都可以),这样可以大大减少制作epub的工作量(因为只需剪切粘贴处理)。

Screenshots
下面是一张关于这类注释的截图。
IMG_0473

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

建议电子书增加目录

每本书都有目录信息的,如果有目录信息,可以根据目录查找定位html书籍的位置,更好的方便阅读。
目录的层级结构信息能否获取一下,如下图:
image

有两个方案可以添加电子书的目录。

1.默认将目录信息插入到html文件的开始部分,即封面的后面。(此方案比较简单实用,用户打开html文件后,可以直接阅读目录,根据目录搜索相关章节)。

2.或者把目录信息以文本的方式存储在txt文件里
类似这样:
第1章 Python快速上手
1.1 Python编程环境的搭建
1.1.1 安装与配置Anaconda
1.1.2 安装与配置PyCharm
1.2 变量
1.3 数据类型
1.3.1 数字
1.3.2 字符串
同时增加一个下载选项,让用户选择是否单独下载电子书目录文本。
-t 下载目录
dedao-dl dle 123 -t

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.