Модуль и CLI для вытягивания данных публикаций в Instagram без запросов к настоящей API-хе и авторизации.
npm install -g @said-m/instagram-cli
Можно протестировать и без установки, см. Использование;
You can test it without installation, see Usage.
yarn add @said-m/instagram-cli
instagram-cli $POST_KEY -p -m
or (w/o installation):
npx @said-m/instagram-cli $POST_KEY -p -m
где
$POST_KEY
ищем в URI публикации так: instagram.com/p/$POST_KEY
Список доступных команд и их предназначение: Методы
About flags, see Methods
В данном режиме, скрипт будет поэтапно запрашивать данные в форме диалога.
instagram-cli $POST_KEY -i
import { getPost } from '@said-m/instagram-cli';
const postKey: string = /* ... */;
const app = async () => {
try {
const postData = await getPost(postKey);
// Работа с результатом - `postData`.
} catch {
// Обработка ошибки
}
}
app();
Интерфейс:
key
=> Promise<PostInterface
|undefined
>.
Список всех доступных флагов можно просмотреть в меню помощи:
instagram-cli -h
Возвращает json-объект с основной информацией о файле.
Будет создан json-файл с указанным содержимым.
instagram-cli $POST_KEY -p
Интерфейс возвращаемого объекта: PostInterface
.
import { getPost } from '@said-m/instagram-cli';
getPost(postKey).then(postData => {
if (!postData) {
console.error('Не удалось');
}
postData./* ... */;
});
Будет создана папка со всеми медиа-файлами публикации (изображения и видео).
instagram-cli $POST_KEY -m
Интерфейс возвращаемого объекта: GetMediaOutputInterface
.
byShortcode
(name:string
) => Promise<GetMediaOutputInterface
>import { GetMedia } from '@said-m/instagram-cli'; const getMedia = new GetMedia(); const postKey:string = /* ... */; getMedia.byShortcode(postKey).then(media => { // Не удалось получить данные медиа if (!media) return; // Публикации могут содержиать несколько медиа media.forEach((thisMedia, thisMediaIndex) => { // Если не удалось получить файл if (!thisMedia) return; // Записываем в файл const fileName = thisMediaIndex + '.' + thisMedia.extension; thisMedia.stream.pipe(createWriteStream(fileName)); }); });
byPostData
(value:PostInterface
) =>GetMediaOutputInterface
Если данные поста уже загружены, то используем их, чтобы сэкономить трафик:// ... getPost(postKey).then(postData => { if (!postData) return; // Запрашиваем медиа по имеющимся данным публикации const media = getMedia.byPostData(postData); if (!media) return; media.forEach(/* ... */); });
Данный проект распространяется по MIT License.