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

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

Loading…
Cancel
Save