mirror of
https://github.com/pixelfed/pixelfed.git
synced 2024-11-09 16:24:51 +00:00
fix: Instagram import broken UTF8 characters
This commit is contained in:
parent
da510089e2
commit
950baef58b
1 changed files with 14 additions and 4 deletions
|
@ -348,8 +348,16 @@
|
|||
}, 500);
|
||||
},
|
||||
|
||||
// Facebook and Instagram are encoding UTF8 characters in a weird way in their json
|
||||
// here is a good explanation what's going wrong https://sorashi.github.io/fix-facebook-json-archive-encoding
|
||||
fixFacebookEncoding(string) {
|
||||
const replaced = string.replace(/\\u00([a-f0-9]{2})/g, (x) => String.fromCharCode(parseInt(x.slice(2), 16)));
|
||||
const buffer = Array.from(replaced, (c) => c.charCodeAt(0));
|
||||
return new TextDecoder().decode(new Uint8Array(buffer));
|
||||
},
|
||||
|
||||
filterPostMeta(media) {
|
||||
let json = JSON.parse(media);
|
||||
let json = JSON.parse(this.fixFacebookEncoding(media));
|
||||
let res = json.filter(j => {
|
||||
let ids = j.media.map(m => m.uri).filter(m => {
|
||||
if(this.config.allow_video_posts == true) {
|
||||
|
@ -396,12 +404,14 @@
|
|||
this.filterPostMeta(media);
|
||||
|
||||
let imgs = await Promise.all(entries.filter(entry => {
|
||||
return entry.filename.startsWith('media/posts/') && (entry.filename.endsWith('.png') || entry.filename.endsWith('.jpg') || entry.filename.endsWith('.mp4'));
|
||||
return (entry.filename.startsWith('media/posts/') || entry.filename.startsWith('media/other/')) && (entry.filename.endsWith('.png') || entry.filename.endsWith('.jpg') || entry.filename.endsWith('.mp4'));
|
||||
})
|
||||
.map(async entry => {
|
||||
if(
|
||||
entry.filename.startsWith('media/posts/') &&
|
||||
(
|
||||
entry.filename.startsWith('media/posts/') ||
|
||||
entry.filename.startsWith('media/other/')
|
||||
) && (
|
||||
entry.filename.endsWith('.png') ||
|
||||
entry.filename.endsWith('.jpg') ||
|
||||
entry.filename.endsWith('.mp4')
|
||||
|
|
Loading…
Reference in a new issue