This repository was archived by the owner on Dec 31, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmedia.js
91 lines (80 loc) · 1.88 KB
/
media.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
const chalk = require('chalk')
const {join} = require('path')
const sharp = require('sharp')
const request = require('request')
const {GraphQLClient} = require('graphql-request')
const SITEURL = `http://kellymears.vagrant`
/**
* Process image
*/
const processImage = async ({sourceUrl, mimeType}) => {
await request({
url: sourceUrl,
encoding: null,
}, (err, res, bodyBuffer) => {
let processed
if (mimeType == 'image/png') {
processed = sharp(bodyBuffer)
.png({quality: 70})
}
if (mimeType == 'image/jpeg') {
processed = sharp(bodyBuffer)
.jpeg({quality: 70})
}
processed.toFile(
join(__dirname, `public/${sourceUrl.replace(`${SITEURL}`, '')}`)
)
})
}
/**
* Request media items from WPGraphQL
*/
const getMediaItems = async () => {
const {mediaItems} = await new GraphQLClient(
`${SITEURL}/wp/graphql`,
{mode: 'no-cors'},
).request(`{
mediaItems {
edges {
node {
sourceUrl
mimeType
mediaDetails {
file
sizes {
width
height
sourceUrl
mimeType
}
}
}
}
}
}`)
return mediaItems
}
console.log(`\nProcessing WordPress Media Library.`)
console.log(`Saving to ${chalk.green('/public')}.`)
getMediaItems().then(async ({edges}) =>
edges.filter(({node: {mediaType}}) => mediaType !== 'image')
.forEach(async ({
node: {
sourceUrl,
mimeType,
mediaDetails: {
file,
sizes
},
},
}) => {
await processImage({sourceUrl, mimeType})
console.log(chalk.blue(`\n 📸 [${mimeType}] ${file}`))
await (async() => {
sizes.map(({sourceUrl, width, height}) => {
processImage({sourceUrl, mimeType})
console.log(chalk.green(` ✔ [${width}x${height}] variant`))
})
})()
})
)