mirror of
https://github.com/pixelfed/pixelfed.git
synced 2024-12-23 05:23:17 +00:00
Merge pull request #1046 from pixelfed/frontend-ui-refactor
Instagram Import
This commit is contained in:
commit
f2cadd136f
4 changed files with 51 additions and 10 deletions
|
@ -11,6 +11,7 @@ use App\{
|
|||
Profile,
|
||||
User
|
||||
};
|
||||
use App\Jobs\ImportPipeline\ImportInstagram;
|
||||
|
||||
trait Instagram
|
||||
{
|
||||
|
@ -21,6 +22,13 @@ trait Instagram
|
|||
|
||||
public function instagramStart(Request $request)
|
||||
{
|
||||
$completed = ImportJob::whereProfileId(Auth::user()->profile->id)
|
||||
->whereService('instagram')
|
||||
->whereNotNull('completed_at')
|
||||
->exists();
|
||||
if($completed == true) {
|
||||
return redirect(route('settings'))->with(['errors' => ['You can only import from Instagram once.']]);
|
||||
}
|
||||
$job = $this->instagramRedirectOrNew();
|
||||
return redirect($job->url());
|
||||
}
|
||||
|
@ -134,8 +142,6 @@ trait Instagram
|
|||
$job->stage = 3;
|
||||
$job->save();
|
||||
return redirect($job->url());
|
||||
return $json;
|
||||
|
||||
}
|
||||
|
||||
public function instagramStepThree(Request $request, $uuid)
|
||||
|
@ -148,4 +154,19 @@ trait Instagram
|
|||
->firstOrFail();
|
||||
return view('settings.import.instagram.step-three', compact('profile', 'job'));
|
||||
}
|
||||
|
||||
public function instagramStepThreeStore(Request $request, $uuid)
|
||||
{
|
||||
$profile = Auth::user()->profile;
|
||||
|
||||
$job = ImportJob::whereProfileId($profile->id)
|
||||
->whereNull('completed_at')
|
||||
->whereUuid($uuid)
|
||||
->whereStage(3)
|
||||
->firstOrFail();
|
||||
|
||||
ImportInstagram::dispatchNow($job);
|
||||
|
||||
return redirect($profile->url());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,10 @@ class ImportController extends Controller
|
|||
public function __construct()
|
||||
{
|
||||
$this->middleware('auth');
|
||||
|
||||
if(config('pixelfed.import.instagram.enabled') != true) {
|
||||
abort(404, 'Feature not enabled');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ class ImportInstagram implements ShouldQueue
|
|||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
protected $job;
|
||||
protected $import;
|
||||
|
||||
/**
|
||||
* Delete the job if its models no longer exist.
|
||||
|
@ -38,9 +38,9 @@ class ImportInstagram implements ShouldQueue
|
|||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(ImportJob $job)
|
||||
public function __construct(ImportJob $import)
|
||||
{
|
||||
$this->job = $job;
|
||||
$this->import = $import;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -50,8 +50,12 @@ class ImportInstagram implements ShouldQueue
|
|||
*/
|
||||
public function handle()
|
||||
{
|
||||
$job = $this->job;
|
||||
$profile = $this->job->profile;
|
||||
if(config('pixelfed.import.instagram.enabled') != true) {
|
||||
return;
|
||||
}
|
||||
|
||||
$job = ImportJob::findOrFail($this->import->id);
|
||||
$profile = Profile::findOrFail($job->profile_id);
|
||||
$json = $job->mediaJson();
|
||||
$collection = $json['photos'];
|
||||
$files = $job->files;
|
||||
|
@ -74,9 +78,9 @@ class ImportInstagram implements ShouldQueue
|
|||
$filename = last( explode('/', $import['path']) );
|
||||
$importData = ImportData::whereJobId($job->id)
|
||||
->whereOriginalName($filename)
|
||||
->firstOrFail();
|
||||
->first();
|
||||
|
||||
if(is_file(storage_path("app/$importData->path")) == false) {
|
||||
if(empty($importData) || is_file(storage_path("app/$importData->path")) == false) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -88,6 +92,8 @@ class ImportInstagram implements ShouldQueue
|
|||
$status->profile_id = $profile->id;
|
||||
$status->caption = strip_tags($caption);
|
||||
$status->is_nsfw = false;
|
||||
$status->type = 'photo';
|
||||
$status->scope = 'unlisted';
|
||||
$status->visibility = 'unlisted';
|
||||
$status->created_at = $taken_at;
|
||||
$status->save();
|
||||
|
|
|
@ -263,5 +263,15 @@ return [
|
|||
'ap_inbox' => env('ACTIVITYPUB_INBOX', false),
|
||||
'ap_shared' => env('ACTIVITYPUB_SHAREDINBOX', false),
|
||||
'ap_delivery_timeout' => env('ACTIVITYPUB_DELIVERY_TIMEOUT', 2.0),
|
||||
'ap_delivery_concurrency' => env('ACTIVITYPUB_DELIVERY_CONCURRENCY', 10)
|
||||
'ap_delivery_concurrency' => env('ACTIVITYPUB_DELIVERY_CONCURRENCY', 10),
|
||||
|
||||
'import' => [
|
||||
'instagram' => [
|
||||
'enabled' => env('IMPORT_INSTAGRAM_ENABLED', false),
|
||||
'limits' => [
|
||||
'posts' => (int) env('IMPORT_INSTAGRAM_POST_LIMIT', 100),
|
||||
'size' => (int) env('IMPORT_INSTAGRAM_SIZE_LIMIT', 250)
|
||||
]
|
||||
]
|
||||
],
|
||||
];
|
||||
|
|
Loading…
Reference in a new issue