Модуль и CLI для вытягивания данных публикаций в Instagram без запросов к настоящей API-хе и авторизации.
npm install -g @said-m/instagram-cliМожно протестировать и без установки, см. Использование;
You can test it without installation, see Usage.
yarn add @said-m/instagram-cliinstagram-cli $POST_KEY -p -mor (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 -iimport { 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.