Update IG Import

To support non-local fs
pull/6198/head
Daniel Supernault 1 month ago
parent 03d01d296f
commit 76b5601a01
No known key found for this signature in database
GPG Key ID: 23740873EE6F76A1

@ -46,6 +46,9 @@ class TransformImports extends Command
return;
}
$localFs = config('filesystems.default') === 'local';
$disk = $localFs ? Storage::disk('local') : Storage::disk(config('filesystems.default'));
foreach ($ips as $ip) {
$id = $ip->user_id;
$pid = $ip->profile_id;
@ -97,7 +100,7 @@ class TransformImports extends Command
continue;
}
if (Storage::exists('imports/'.$id.'/'.$ip->filename) === false) {
if ($disk->exists('imports/'.$id.'/'.$ip->filename) === false) {
ImportService::clearAttempts($profile->id);
ImportService::getPostCount($profile->id, true);
$ip->skip_missing_media = true;
@ -110,7 +113,7 @@ class TransformImports extends Command
foreach ($ip->media as $ipm) {
$fileName = last(explode('/', $ipm['uri']));
$og = 'imports/'.$id.'/'.$fileName;
if (! Storage::exists($og)) {
if (! $disk->exists($og)) {
$missingMedia = true;
}
}
@ -130,17 +133,17 @@ class TransformImports extends Command
$ext = last(explode('.', $fileName));
$basePath = MediaPathService::get($profile);
$og = 'imports/'.$id.'/'.$fileName;
if (! Storage::exists($og)) {
if (! $disk->exists($og)) {
$ip->skip_missing_media = true;
$ip->save();
continue 2;
}
$size = Storage::size($og);
$mime = Storage::mimeType($og);
$size = $disk->size($og);
$mime = $disk->mimeType($og);
$newFile = Str::random(40).'.'.$ext;
$np = $basePath.'/'.$newFile;
Storage::move($og, $np);
$disk->move($og, $np);
$mediaRecords[] = [
'media_path' => $np,
@ -216,8 +219,8 @@ class TransformImports extends Command
$ip->save();
foreach ($mediaRecords as $mediaData) {
if (Storage::exists($mediaData['media_path'])) {
Storage::delete($mediaData['media_path']);
if ($disk->exists($mediaData['media_path'])) {
$disk->delete($mediaData['media_path']);
}
}
@ -228,8 +231,8 @@ class TransformImports extends Command
$ip->save();
foreach ($mediaRecords as $mediaData) {
if (Storage::exists($mediaData['media_path'])) {
Storage::delete($mediaData['media_path']);
if ($disk->exists($mediaData['media_path'])) {
$disk->delete($mediaData['media_path']);
}
}

@ -2,13 +2,12 @@
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Follower;
use App\Http\Resources\ImportStatus;
use App\Models\ImportPost;
use App\Services\ImportService;
use App\Services\StatusService;
use App\Http\Resources\ImportStatus;
use App\Follower;
use App\User;
use Illuminate\Http\Request;
class ImportPostController extends Controller
{
@ -38,7 +37,7 @@ class ImportPostController extends Controller
'min_follower_count' => config('import.instagram.permissions.min_follower_count'),
],
'allowed' => $this->checkPermissions($request, false)
'allowed' => $this->checkPermissions($request, false),
];
}
@ -119,12 +118,14 @@ class ImportPostController extends Controller
->exists();
if ($exists) {
$errors[] = "Duplicate post detected. Skipping...";
$errors[] = 'Duplicate post detected. Skipping...';
continue;
}
$exts = $c->map(function ($m) {
$fn = last(explode('/', $m['uri']));
return last(explode('.', $fn));
});
@ -142,7 +143,7 @@ class ImportPostController extends Controller
return [
'uri' => $m['uri'],
'title' => $this->formatHashtags($m['title'] ?? ''),
'creation_timestamp' => $m['creation_timestamp'] ?? null
'creation_timestamp' => $m['creation_timestamp'] ?? null,
];
})->toArray();
@ -156,7 +157,7 @@ class ImportPostController extends Controller
$ip->metadata = $c->map(function ($m) {
return [
'uri' => $m['uri'],
'media_metadata' => isset($m['media_metadata']) ? $m['media_metadata'] : null
'media_metadata' => isset($m['media_metadata']) ? $m['media_metadata'] : null,
];
})->toArray();
@ -184,6 +185,7 @@ class ImportPostController extends Controller
} catch (\Exception $e) {
$errors[] = $e->getMessage();
\Log::error('Import error: '.$e->getMessage());
continue;
}
}
@ -191,7 +193,7 @@ class ImportPostController extends Controller
return [
'success' => true,
'msg' => 'Successfully imported '.$successCount.' posts',
'errors' => $errors
'errors' => $errors,
];
}
@ -219,10 +221,13 @@ class ImportPostController extends Controller
'required',
'file',
$mimes,
'max:' . config_cache('pixelfed.max_photo_size')
]
'max:'.config_cache('pixelfed.max_photo_size'),
],
]);
$localFs = config('filesystems.default') === 'local';
$disk = $localFs ? 'local' : config('filesystems.default');
foreach ($request->file('file') as $file) {
$extension = $file->getClientOriginalExtension();
@ -230,17 +235,16 @@ class ImportPostController extends Controller
$safeFilename = preg_replace('/[^a-zA-Z0-9_.-]/', '_', $originalName);
$fileName = $safeFilename.'.'.$extension;
$file->storeAs('imports/' . $request->user()->id . '/', $fileName);
$file->storeAs('imports/'.$request->user()->id.'/', $fileName, $disk);
}
ImportService::getImportedFiles($request->user()->profile_id, true);
return [
'msg' => 'Success'
'msg' => 'Success',
];
}
private function determinePostType($exts)
{
if ($exts->count() > 1) {
@ -277,6 +281,7 @@ class ImportPostController extends Controller
$originalName = implode('.', $parts);
$safeFilename = preg_replace('/[^a-zA-Z0-9_.-]/', '_', $originalName);
return $safeFilename.'.'.$extension;
}

Loading…
Cancel
Save