Preliminar support for downloading images done. Still it needs some debugging because is creating an extra directory to put the images.

This commit is contained in:
Offray Vladimir Luna Cárdenas 2017-12-06 20:57:33 +00:00
parent 222f164827
commit 4cc7fa0a43
3 changed files with 43 additions and 38 deletions

View File

@ -329,22 +329,6 @@ GrafoscopioNode >> demote [
] ]
{ #category : #'as yet unclassified' }
GrafoscopioNode >> downloadImagesInto: folder [
"comment stating purpose of message"
self extractHtmlImages do: [ :each | |localFolder path|
path:=''.
(each directory substrings: '/') do: [ :eachDirectory |
path:= path , '/' , eachDirectory .
(folder / path) ensureCreateDirectory ].
localFolder := (folder / each directory).
(localFolder / each lastPathSegment) exists ifFalse: [
ZnClient new
url: each ;
downloadTo: localFolder . ]]
]
{ #category : #'custom markup' } { #category : #'custom markup' }
GrafoscopioNode >> embedAll [ GrafoscopioNode >> embedAll [
"This is just a previous part of the messy markDownContent. The %embed-all keyword should be revaluated. "This is just a previous part of the messy markDownContent. The %embed-all keyword should be revaluated.
@ -437,26 +421,16 @@ GrafoscopioNode >> exportPreambleTo: aStream [
{ #category : #'as yet unclassified' } { #category : #'as yet unclassified' }
GrafoscopioNode >> extractHtmlImages [ GrafoscopioNode >> extractHtmlImages [
"comment stating purpose of message" "comment stating purpose of message"
|imgSoup imgHost imgList src folders| |imgSoup imgHost imgList folders|
imgList := Set new. imgList := Set new.
imgSoup := Soup fromString: self body. imgSoup := Soup fromString: self body.
imgHost:= self links last asUrl removeLastPathSegment. imgHost:= self links last asUrl removeLastPathSegment.
folders:= Set new. folders:= Set new.
(imgSoup findAllTags: 'img') do: [ :each| (imgSoup findAllTags: 'img') do: [ :each|| src |
src := (each attributeAt: 'src') asUrl. src := (each attributeAt: 'src') asUrl.
(src host) ifNil: [ src := imgHost addPathSegments: src pathSegments ]. (src host) ifNil: [ src := imgHost addPathSegments: src pathSegments ].
imgList add: src. imgList add: src.
"folders add: src directory."
"OSProcess waitForCommand: 'wget ', (each attributeAt: 'src')."
"imgHost := self links last removeLastPathSegment."
"imgPath:= ((each attributeAt: 'src') asUrl). "
"ZnEasy getJpeg: (imgHost , imgPath) asUrl."
"OSProcess waitForCommand: ('mkdir ', imgPath)."
"Transcript show: ' wget ', imgPath , '/',(each attributeAt: 'src'). "
]. ].
^imgList . ^imgList .
] ]

View File

@ -296,7 +296,6 @@ GrafoscopioNotebook >> header: anObject [
{ #category : #operation } { #category : #operation }
GrafoscopioNotebook >> htmlToMarkdown [ GrafoscopioNotebook >> htmlToMarkdown [
self imagesList: self currentNodeContent extractHtmlImages.
self currentNodeContent htmlToMarkdown. self currentNodeContent htmlToMarkdown.
self updateBodyFor: self currentNode self updateBodyFor: self currentNode
] ]
@ -318,6 +317,12 @@ GrafoscopioNotebook >> imagesList: anObject [
imagesList := anObject imagesList := anObject
] ]
{ #category : #'as yet unclassified' }
GrafoscopioNotebook >> importImages [
self imagesList: (Pandoc listImagesFrom: self markdownFile).
self inform: 'All notebook images has been imported.', String cr, 'Now you can list and download them.'
]
{ #category : #operation } { #category : #operation }
GrafoscopioNotebook >> importLinkContent [ GrafoscopioNotebook >> importLinkContent [
"I see if a node header is an url located at 'http://ws.stfx.eu', wich means that is a shared "I see if a node header is an url located at 'http://ws.stfx.eu', wich means that is a shared
@ -522,18 +527,18 @@ GrafoscopioNotebook >> notebookSubMenu [
name: 'Save as...'; name: 'Save as...';
icon: (Smalltalk ui icons iconNamed: #smallSaveAs); icon: (Smalltalk ui icons iconNamed: #smallSaveAs);
action: [ self saveToFileUI ] ]. action: [ self saveToFileUI ] ].
group
addItem: [ :item |
item
name: 'Extract images';
icon: (Smalltalk ui icons iconNamed: #processBrowser);
action: [ self extractImages ] ].
group group
addItem: [ :item | addItem: [ :item |
item item
name: 'Import images'; name: 'Import images';
icon: (Smalltalk ui icons iconNamed: #processBrowser); icon: (Smalltalk ui icons iconNamed: #processBrowser);
action: [ self importImages ] ]. action: [ self importImages ] ].
group
addItem: [ :item |
item
name: 'Download images';
icon: (Smalltalk ui icons iconNamed: #processBrowser);
action: [ self downloadImages ] ].
group group
addItem: [ :item | addItem: [ :item |
item item
@ -1003,7 +1008,7 @@ GrafoscopioNotebook >> updateBodyFor: aNodeContainer [
self buildWithSpecLayout: self class defaultSpec self buildWithSpecLayout: self class defaultSpec
] ]
{ #category : #'editing nodes' } { #category : #operation }
GrafoscopioNotebook >> visitNodeLink [ GrafoscopioNotebook >> visitNodeLink [
tree highlightedItem content visitLastLink. tree highlightedItem content visitLastLink.

View File

@ -10,6 +10,17 @@ Class {
#category : #'Grafoscopio-Model' #category : #'Grafoscopio-Model'
} }
{ #category : #'as yet unclassified' }
Pandoc class >> downloadLuaFilters [
self luaFilters do: [ :filter | | filterUrl |
filterUrl := filter asUrl.
(FileLocator temp asFileReference / (filterUrl segments last)) exists
ifFalse: [
ZnClient new
url: filterUrl;
downloadTo: FileLocator temp ] ]
]
{ #category : #accessing } { #category : #accessing }
Pandoc class >> executable [ Pandoc class >> executable [
^ executable ifNil: [ self executableLocation ] ^ executable ifNil: [ self executableLocation ]
@ -29,6 +40,20 @@ Pandoc class >> executableLocation [
ifFalse: [ self definePandocExecutable ] ifFalse: [ self definePandocExecutable ]
] ]
{ #category : #'as yet unclassified' }
Pandoc class >> listImagesFrom: aFileReference [
"I provide a list of all images contained in aFile."
| filter commandString outputString |
filter := FileLocator temp asFileReference / 'image-links.lua'.
filter exists ifFalse: [ self downloadLuaFilters ].
commandString := 'pandoc ', aFileReference fullName, ' --lua-filter=',filter fullName.
Smalltalk platformName = 'unix'
ifTrue: [ outputString := (PipeableOSProcess waitForCommand: commandString ) output ].
Smalltalk platformName = 'Win32'
ifTrue: [ WindowsProcess ].
^ ((Soup fromString: outputString) findAllTags: 'td') collect: [ :each | each next ]
]
{ #category : #utility } { #category : #utility }
Pandoc class >> luaFilters [ Pandoc class >> luaFilters [
"I define the location of set of scripts, that allows to change the default behaviour of Pandoc "I define the location of set of scripts, that allows to change the default behaviour of Pandoc
@ -42,5 +67,6 @@ Pandoc class >> luaFilters [
| filters | | filters |
filters := OrderedCollection new. filters := OrderedCollection new.
filters filters
add: 'http://mutabit.com/repos.fossil/dataweek/doc/tip/Artefactos/Scripts/links.lua' add: 'http://mutabit.com/repos.fossil/dataweek/doc/tip/Artefactos/Scripts/image-links.lua'.
^ filters
] ]