HEX
Server: Apache
System: Linux srv4.garantili.com.tr 4.18.0-477.21.1.lve.1.el8.x86_64 #1 SMP Tue Sep 5 23:08:35 UTC 2023 x86_64
User: ekspardev (1006)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //home/ekspardev/www/tubisad/rapor/build/download-images.js
#!/usr/bin/env node

'use strict'

const YAML = require('yaml')
const fs = require('node:fs')
const path = require('node:path')
const request = require('request')
const filePath = path.join(__dirname, '../src/pages/_data/photos.yml')

const photos = YAML.parse(fs.readFileSync(filePath, 'utf8'))

const urlTitle = (str) => {
  str = str
		.toLowerCase()
		.replaceAll('&', 'and')
		.replace(/[^[a-z0-9-]/g, '-')
		.replace(/-+/g, '-')

  return str
}

const download = function(uri, filename, callback, error) {
  request.head(uri, function(err, res, body) {
	 request(uri).pipe(fs.createWriteStream(filename))
		  .on('close', callback)
		  .on('error', error)
  })
}

async function downloadPhotos() {
  for (const key in photos) {
	 const photo = photos[key]

	 let filename, i = 1;

	 do {
		filename = `${urlTitle(photo['title'])}${i > 1 ? `-${i}` : ''}.jpg`
		i++
	 } while (fs.existsSync(path.join(__dirname, `../src/static/photos/${filename}`)))

	 await new Promise((resolve, reject) => {
		download(photo['path'], path.join(__dirname, `../src/static/photos/${filename}`), function(){
		  resolve()
		}, function() {
		  reject()
		});
	 })

	 photos[key]['file'] = filename
	 photos[key]['horizontal'] = photo['width'] > photo['height']
  }

  fs.writeFileSync(filePath, YAML.stringify(photos))
}

downloadPhotos();