Скрипт скачивания изображений с ссылки расшаривания от GoogleДиска

Поступила мне тут очень интересная задача. Контентщики 2 недели собирали табличку с описанием всех характеристик (по каждой позиции по 10+ фотографий) и все фотографии грузили на гугл-диск, а в табличку вставляли ссылки из "поделиться" на эти изображения.

Такие ссылки напрямую не скачиваются (защита от гугла:) ), поэтому пришлось немного изворачиваться:)

Вся обработка ссылок сводится к такому достаточно простому классу:

use Bitrix\Main\Application;

class processSpecifications
{
	var $fileId;
	var $destinationFile;
	var $coockieFile;
	function __construct($filePath)
	{
		if(strpos($filePath,'/file/d/')===false) die('Wrong file name: '.$filePath);
		$this->fileId = current(explode('/',array_pop(explode('/file/d/',$filePath))));
		$this->destinationFile = Application::getDocumentRoot().'/upload/tmp/'.$this->fileId.'.jpg';
		$this->coockieFile = Application::getDocumentRoot().'/upload/tmp/coockie';
	}

	function downloadFile(){
		// Скачиваем файл для получения кода подтверждения
		$curlCommand = "curl -sc {$this->coockieFile} 'https://drive.google.com/uc?export=download&id={$this->fileId}' > /dev/null";
		exec($curlCommand);

		// Извлекаем код подтверждения из файла cookie
		$awkCommand = "awk '/_warning_/ {print \$NF}' {$this->coockieFile}";
		$code = exec($awkCommand);

		// Скачиваем файл с использованием кода подтверждения
		$downloadUrl = "https://drive.google.com/uc?export=download&confirm={$code}&id={$this->fileId}";
		$curlCommand = "curl -Lb {$this->coockieFile} '{$downloadUrl}' -o {$this->destinationFile}";
		exec($curlCommand);

		print($this->destinationFile);
	}
}

Пример обработки фото:

$gdriveGetFile = new \Ninelines\processSpecifications('https://drive.google.com/file/d/а_тут_тот_самый_идентификатор/view?usp=sharing');
$gdriveGetFile->downloadFile();

Осталось дальше это изображение уже сохранить куда нужно и удалить временное:)

Количество показов: 237
02.08.2023

Возврат к списку

Если вам была полезна статья можете отблагодарить автора:
Ethereum:

0x16Df809287333C49D3A237296C6248A6c08702Bc

Разработка сайта

Подайте заявку на разработку сайта на базе готового решения от компании 1С-Битрикс или одного из партнеров компании. Максимально подробно опишите, чему будет посвящен сайт, если это интернет-магазин - что он будет продавать, нужна ли мультиязычность, будут ли разные типы цен (розница, опт, крупный опт), будет ли интеграция с 1С, будет ли выгрузка товаров на различные торговые площадки...

Сопровождение сайта

Вы можете подать заявку на сопровождение вашего сайта на базе 1С-Битрикс. Сопровождение включает в себя: проверка актуальности обновлений сайта, проверка актуальности резервной копии, консультации по сайту. Опишите в заявке, какие еще объемы планируются на сопровождении и на какой срок вы планируете заключить договор на сопровождение - мы подберем подходящий вам бюджет на сопровождение

Работы по сайту

Вы можете подать заявку на выполнение определенного объема работ по сайту. Опишите в заявке объем работ. Это может быть разработка какого-то нового функционала, доработки по имеющемуся функционалу, доработки под требования сео-специалистов. На основании заявки вам будет сформирован бюджет работ, а также названы сроки на выполнение тех или иных работ.