fix(Kiwix): initial zim file download

This commit is contained in:
Jake Turner 2025-12-05 16:18:37 -08:00 committed by Jake Turner
parent e3257d1408
commit 605dce11e8

View File

@ -1,11 +1,11 @@
import Service from '#models/service' import Service from '#models/service'
import Docker from 'dockerode' import Docker from 'dockerode'
import drive from '@adonisjs/drive/services/main'
import axios from 'axios'
import logger from '@adonisjs/core/services/logger' import logger from '@adonisjs/core/services/logger'
import { inject } from '@adonisjs/core' import { inject } from '@adonisjs/core'
import { ServiceStatus } from '../../types/services.js' import { ServiceStatus } from '../../types/services.js'
import transmit from '@adonisjs/transmit/services/main' import transmit from '@adonisjs/transmit/services/main'
import { doSimpleDownload } from '../utils/downloads.js'
import path from 'path'
@inject() @inject()
export class DockerService { export class DockerService {
@ -330,8 +330,9 @@ export class DockerService {
* We'll download the lightweight mini Wikipedia Top 100 zim file for this purpose. * We'll download the lightweight mini Wikipedia Top 100 zim file for this purpose.
**/ **/
const WIKIPEDIA_ZIM_URL = const WIKIPEDIA_ZIM_URL =
'https://github.com/Crosstalk-Solutions/project-nomad/blob/master/install/wikipedia_en_100_mini_2025-06.zim' 'https://github.com/Crosstalk-Solutions/project-nomad/raw/refs/heads/master/install/wikipedia_en_100_mini_2025-06.zim'
const PATH = '/zim/wikipedia_en_100_mini_2025-06.zim' const zimPath = '/zim/wikipedia_en_100_mini_2025-06.zim'
const filepath = path.join(DockerService.NOMAD_STORAGE_ABS_PATH, zimPath)
this._broadcast( this._broadcast(
DockerService.KIWIX_SERVICE_NAME, DockerService.KIWIX_SERVICE_NAME,
@ -343,23 +344,17 @@ export class DockerService {
'preinstall', 'preinstall',
`Downloading Wikipedia ZIM file from ${WIKIPEDIA_ZIM_URL}. This may take some time...` `Downloading Wikipedia ZIM file from ${WIKIPEDIA_ZIM_URL}. This may take some time...`
) )
const response = await axios.get(WIKIPEDIA_ZIM_URL, {
responseType: 'stream',
})
const stream = response.data await doSimpleDownload({
stream.on('error', (error: Error) => { url: WIKIPEDIA_ZIM_URL,
logger.error(`Error downloading Wikipedia ZIM file: ${error.message}`) filepath,
throw error timeout: 60000,
}) })
const disk = drive.use('fs')
await disk.putStream(PATH, stream)
this._broadcast( this._broadcast(
DockerService.KIWIX_SERVICE_NAME, DockerService.KIWIX_SERVICE_NAME,
'preinstall', 'preinstall',
`Downloaded Wikipedia ZIM file to ${PATH}` `Downloaded Wikipedia ZIM file to ${filepath}`
) )
} }