Import Instagram archive to a Bluesky account
9
fork

Configure Feed

Select the types of activity you want to include in your feed.

Lint fix

+25 -19
+2 -2
src/bluesky/bluesky.ts
··· 4 4 BlobRef 5 5 } from "@atproto/api"; 6 6 7 - import { logger } from "../logger/logger"; 8 - 9 7 import { 10 8 EmbeddedMedia, 11 9 PostRecordImpl 12 10 } from "./types"; 11 + import { logger } from "../logger/logger"; 12 + 13 13 14 14 15 15 export class BlueskyClient {
+1 -1
src/bluesky/types/EmbeddedMedia.ts
··· 1 - import { VideoEmbed } from "./VideoEmbed"; 2 1 import { ImagesEmbed } from "./ImagesEmbed"; 2 + import { VideoEmbed } from "./VideoEmbed"; 3 3 4 4 export type EmbeddedMedia = VideoEmbed | ImagesEmbed;
+1
src/bluesky/types/ImagesEmbed.ts
··· 1 1 import { AppBskyEmbedImages } from "@atproto/api"; 2 + 2 3 import { ImageEmbed } from "./ImageEmbed"; 3 4 4 5 export interface ImagesEmbed extends AppBskyEmbedImages.Main {
+1
src/bluesky/types/PostRecord.ts
··· 1 1 import { AppBskyFeedPost, Facet } from "@atproto/api"; 2 + 2 3 import { EmbeddedMedia } from "./EmbeddedMedia"; 3 4 4 5 export interface PostRecord extends Partial<AppBskyFeedPost.Record> {}
+2 -1
src/config.ts
··· 1 + import path from 'path'; 2 + 1 3 import * as dotenv from 'dotenv'; 2 - import path from 'path'; 3 4 4 5 dotenv.config(); 5 6
+2 -1
src/image/image.ts
··· 1 + import byteSize from "byte-size"; 1 2 import sharp from "sharp"; 2 - import byteSize from "byte-size"; 3 + 3 4 import { logger } from "../logger/logger"; 4 5 import { Ratio } from "../media"; 5 6
+1 -1
src/logger/logger.ts
··· 1 - import { pino } from 'pino'; 2 1 import * as dotenv from 'dotenv'; 2 + import { pino } from 'pino'; 3 3 4 4 // Get env varables from .env 5 5 dotenv.config();
+1 -1
src/media/interfaces/ImageMediaProcessingStrategy.ts
··· 1 - import { ProcessStrategy } from './ProcessStrategy'; 2 1 import { MIMEType } from './MIMEType'; 2 + import { ProcessStrategy } from './ProcessStrategy'; 3 3 import { MediaProcessResult } from '../MediaProcessResult'; 4 4 5 5 /**
+1 -1
src/media/interfaces/MediaProcessorFactory.ts
··· 1 1 import { ProcessStrategy } from './ProcessStrategy'; 2 - import { MediaProcessResult } from '../MediaProcessResult'; 3 2 import { Media, ImageMedia, VideoMedia } from '../InstagramExportedPost'; 3 + import { MediaProcessResult } from '../MediaProcessResult'; 4 4 5 5 export interface MediaProcessorFactory { 6 6 createProcessor(media: ImageMedia[] | VideoMedia[], archiveFolder: string): ProcessStrategy<MediaProcessResult[]>;
+1 -1
src/media/interfaces/VideoMediaProcessingStrategy.ts
··· 1 - import { ProcessStrategy } from './ProcessStrategy'; 2 1 import { MIMEType } from './MIMEType'; 2 + import { ProcessStrategy } from './ProcessStrategy'; 3 3 import { MediaProcessResult } from '../MediaProcessResult'; 4 4 5 5 /**
+2 -2
src/media/processors/DefaultMediaProcessorFactory.ts
··· 1 - import { MediaProcessorFactory } from "../interfaces/MediaProcessorFactory"; 2 - import { ProcessStrategy } from "../interfaces/ProcessStrategy"; 3 1 import { Media, VideoMedia, ImageMedia } from "../InstagramExportedPost"; 4 2 import { MediaProcessResult } from "../MediaProcessResult"; 5 3 import { InstagramImageProcessor } from "./InstagramImageProcessor"; 6 4 import { InstagramVideoProcessor } from "./InstagramVideoProcessor"; 7 5 import { getMimeType as getVideoMimeType } from "../../video/video"; 6 + import { MediaProcessorFactory } from "../interfaces/MediaProcessorFactory"; 7 + import { ProcessStrategy } from "../interfaces/ProcessStrategy"; 8 8 9 9 /** 10 10 * Processor factory that handles images and video.
+2 -2
src/media/processors/InstagramImageProcessor.ts
··· 1 + import { getImageMimeType, getImageSize } from "../../image"; 1 2 import { logger } from "../../logger/logger"; 2 - import { ImageMediaProcessingStrategy } from "../interfaces/ImageMediaProcessingStrategy"; 3 3 import { ImageMedia, Media } from "../InstagramExportedPost"; 4 + import { ImageMediaProcessingStrategy } from "../interfaces/ImageMediaProcessingStrategy"; 4 5 import { MediaProcessResult, ImageMediaProcessResultImpl } from "../MediaProcessResult"; 5 - import { getImageMimeType, getImageSize } from "../../image"; 6 6 import { getMediaBuffer } from "../utils"; 7 7 8 8 /**
+2 -2
src/media/processors/InstagramMediaProcessor.ts
··· 1 1 import { logger } from "../../logger/logger"; 2 - import { ProcessedPost, ProcessedPostImpl } from "../ProcessedPost"; 3 2 import { InstagramExportedPost, Media, ImageMedia, VideoMedia } from "../InstagramExportedPost"; 3 + import { DefaultMediaProcessorFactory } from "./DefaultMediaProcessorFactory"; 4 4 import { InstagramPostProcessingStrategy } from "../interfaces/InstagramPostProcessingStrategy"; 5 5 import { MediaProcessorFactory } from "../interfaces/MediaProcessorFactory"; 6 - import { DefaultMediaProcessorFactory } from "./DefaultMediaProcessorFactory"; 6 + import { ProcessedPost, ProcessedPostImpl } from "../ProcessedPost"; 7 7 8 8 const MAX_IMAGES_PER_POST = 4; 9 9 const POST_TEXT_LIMIT = 300;
+2 -2
src/media/processors/InstagramVideoProcessor.ts
··· 1 1 import { logger } from "../../logger/logger"; 2 - import { VideoMediaProcessingStrategy } from "../interfaces/VideoMediaProcessingStrategy"; 2 + import { getVideoDimensions, getMimeType as getVideoMimeType, validateVideo } from "../../video/video"; 3 3 import { VideoMedia } from "../InstagramExportedPost"; 4 + import { VideoMediaProcessingStrategy } from "../interfaces/VideoMediaProcessingStrategy"; 4 5 import { MediaProcessResult, VideoMediaProcessResultImpl } from "../MediaProcessResult"; 5 - import { getVideoDimensions, getMimeType as getVideoMimeType, validateVideo } from "../../video/video"; 6 6 import { getMediaBuffer } from "../utils"; 7 7 8 8 const POST_TEXT_LIMIT = 300;
+2 -1
src/media/utils.ts
··· 1 1 import FS from "fs"; 2 + 3 + import { Media } from "./InstagramExportedPost"; 2 4 import { logger } from "../logger/logger"; 3 - import { Media } from "./InstagramExportedPost"; 4 5 5 6 /** 6 7 * Decode JSON Data into an Object.
+2 -1
src/video/video.ts
··· 1 + import ffprobe from "@ffprobe-installer/ffprobe"; 1 2 import ffmpeg from "fluent-ffmpeg"; 2 - import ffprobe from "@ffprobe-installer/ffprobe"; 3 + 3 4 import { logger } from "../logger/logger"; 4 5 import { Ratio } from "../media"; 5 6 // Configure ffmpeg to use ffprobe