Commit c22fd7fd authored by velayat's avatar velayat
Browse files

soheib cant push his changes so i did it for him

parent c670bdce
import { Body, Controller, Get, Post } from '@nestjs/common'; import { Body, Controller, Get, Post } from '@nestjs/common';
import { AppService } from './app.service'; import { AppService } from './app.service';
@Controller() @Controller()
export class AppController { export class AppController {
constructor(private readonly appService: AppService) { } constructor(private readonly appService: AppService) { }
} }
// @Get('get-followers') // @Get('get-followers')
// async getFollowers() { // async getFollowers() {
// return await this.appService.getFollowers(); // return await this.appService.getFollowers();
// } // }
// @Post() // @Post()
// async getUserScore(@Body() getUserScoreDto: GetUserScore) { // async getUserScore(@Body() getUserScoreDto: GetUserScore) {
// return await this.appService.calculateUserScore(getUserScoreDto.username); // return await this.appService.calculateUserScore(getUserScoreDto.username);
// } // }
// @Get('calculate-result') // @Get('calculate-result')
// async calculateResult() { // async calculateResult() {
// return await this.appService.getResults(); // return await this.appService.getResults();
// } // }
// @Get('get-results') // @Get('get-results')
// async getResults() { // async getResults() {
// return await this.appService.getFinalResults(); // return await this.appService.getFinalResults();
// } // }
// @Post('search') // @Post('search')
// async getUserResults(@Body('username') username: string) { // async getUserResults(@Body('username') username: string) {
// return await this.appService.getUserResult(username); // return await this.appService.getUserResult(username);
// } // }
// @Get('shuffle') // @Get('shuffle')
// async shuffle() { // async shuffle() {
// return await this.appService.getShuffleData(); // return await this.appService.getShuffleData();
// } // }
// @Get('add-lottory-result') // @Get('add-lottory-result')
// async addResultDb() { // async addResultDb() {
// return await this.appService.addResultsToDB(); // return await this.appService.addResultsToDB();
// } // }
import { Module } from '@nestjs/common'; import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose'; import { MongooseModule } from '@nestjs/mongoose';
import { AppController } from './app.controller'; import { AppController } from './app.controller';
import { AppService } from './app.service'; import { AppService } from './app.service';
import { InstagramModule } from './instagram/instagram.module'; import { InstagramModule } from './instagram/instagram.module';
import { LotteryModule } from './lottery/lottery.module'; import { LotteryModule } from './lottery/lottery.module';
import { InstagramService } from './instagram/instagram.service'; import { InstagramService } from './instagram/instagram.service';
import { UserSchema } from './instagram/models/user.schema' import { UserSchema } from './instagram/models/user.schema'
import { FollowerSchema } from './instagram/models/follower.schema' import { FollowerSchema } from './instagram/models/follower.schema'
import { LikeSchema } from './instagram/models/like.schema' import { LikeSchema } from './instagram/models/like.schema'
import { CommentSchema } from './instagram/models/comment.schema' import { CommentSchema } from './instagram/models/comment.schema'
import { LottoryResultSchema } from './instagram/models/LottoryResult.schema' import { LottoryResultSchema } from './instagram/models/LottoryResult.schema'
@Module({ @Module({
imports: [ imports: [
MongooseModule.forRoot( MongooseModule.forRoot(
'mongodb://instagram:wcD3B5sGw0yQ@185.231.180.248:27017/instagram-lottry?authSource=admin&authMechanism=SCRAM-SHA-256&connectTimeoutMS=10000&readPreference=primary&serverSelectionTimeoutMS=5000&appname=MongoDB%20Compass&directConnection=true&ssl=false', 'mongodb://instagram:wcD3B5sGw0yQ@185.231.180.248:27017/instagram-lottry?authSource=admin&authMechanism=SCRAM-SHA-256&connectTimeoutMS=10000&readPreference=primary&serverSelectionTimeoutMS=5000&appname=MongoDB%20Compass&directConnection=true&ssl=false',
), ),
MongooseModule.forFeature([ MongooseModule.forFeature([
{ name: 'User', schema: UserSchema }, { name: 'User', schema: UserSchema },
]), ]),
MongooseModule.forFeature([ MongooseModule.forFeature([
{ name: 'Follower', schema: FollowerSchema }, { name: 'Follower', schema: FollowerSchema },
]), ]),
MongooseModule.forFeature([ MongooseModule.forFeature([
{ name: 'Like', schema: LikeSchema }, { name: 'Like', schema: LikeSchema },
]), ]),
MongooseModule.forFeature([ MongooseModule.forFeature([
{ name: 'Comment', schema: CommentSchema }, { name: 'Comment', schema: CommentSchema },
]), ]),
MongooseModule.forFeature([ MongooseModule.forFeature([
{ name: 'LottryResult', schema: LottoryResultSchema }, { name: 'LottryResult', schema: LottoryResultSchema },
]), ]),
InstagramModule, InstagramModule,
LotteryModule, LotteryModule,
], ],
controllers: [AppController], controllers: [AppController],
providers: [AppService, InstagramService], providers: [AppService, InstagramService],
}) })
export class AppModule { } export class AppModule { }
import { import {
HttpException, HttpException,
Injectable, Injectable,
OnApplicationBootstrap, OnApplicationBootstrap,
} from '@nestjs/common'; } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose'; import { InjectModel } from '@nestjs/mongoose';
import { Model, Types } from 'mongoose'; import { Model, Types } from 'mongoose';
import * as _ from 'lodash'; import * as _ from 'lodash';
import { CommentDocument } from './instagram/models/comment.schema'; import { CommentDocument } from './instagram/models/comment.schema';
import { LottoryResultDocument } from './instagram/models/LottoryResult.schema'; import { LottoryResultDocument } from './instagram/models/LottoryResult.schema';
import { FollowerDocument } from './instagram/models/follower.schema'; import { FollowerDocument } from './instagram/models/follower.schema';
import { LikeDocument } from './instagram/models/like.schema'; import { LikeDocument } from './instagram/models/like.schema';
import { UserDocument } from './instagram/models/user.schema'; import { UserDocument } from './instagram/models/user.schema';
@Injectable() @Injectable()
export class AppService { export class AppService {
constructor() { } constructor() { }
} }
// private async login(username, password) { // private async login(username, password) {
// try { // try {
// const client = new Instagram({ username, password }); // const client = new Instagram({ username, password });
// await client.login(); // await client.login();
// console.log(`user logged in. details :\n // console.log(`user logged in. details :\n
// username: ${username}, // username: ${username},
// password: ${password}, // password: ${password},
// `); // `);
// return client; // return client;
// } catch (err) { // } catch (err) {
// console.log(err); // console.log(err);
// } // }
// } // }
// async getFollowers(postShortCode = 'CRWNkkchs2x') { // async getFollowers(postShortCode = 'CRWNkkchs2x') {
// try { // try {
// const username = 'shahriarvelayat'; // const username = 'shahriarvelayat';
// const password = 'shve8864@@'; // const password = 'shve8864@@';
// const client = new Instagram({ username, password }); // const client = new Instagram({ username, password });
// await client.login(); // await client.login();
// console.log('user logged in...'); // console.log('user logged in...');
// let hasNextPage = true; // let hasNextPage = true;
// let requestCount = 0; // let requestCount = 0;
// let followersCount = 0; // let followersCount = 0;
// let cursor = ''; // let cursor = '';
// const reqList = await this.requestModel.find({ // const reqList = await this.requestModel.find({
// $and: [{ createdAt: -1 }, { type: 'follower' }], // $and: [{ createdAt: -1 }, { type: 'follower' }],
// }); // });
// console.log('Request History:', reqList.length); // console.log('Request History:', reqList.length);
// if (reqList.length != 0) { // if (reqList.length != 0) {
// const nextCursor = await this.getFollowersNextCursor( // const nextCursor = await this.getFollowersNextCursor(
// client, // client,
// reqList[0].cursor, // reqList[0].cursor,
// ); // );
// cursor = nextCursor; // cursor = nextCursor;
// } // }
// while (hasNextPage) { // while (hasNextPage) {
// console.log('seted cursor', cursor); // console.log('seted cursor', cursor);
// console.log('sending request....'); // console.log('sending request....');
// const collectedFollower = await this.sendFollowerRequest( // const collectedFollower = await this.sendFollowerRequest(
// client, // client,
// cursor, // cursor,
// ); // );
// console.log('request sended. request count:', requestCount); // console.log('request sended. request count:', requestCount);
// requestCount++; // requestCount++;
// await this.requestModel.create({ // await this.requestModel.create({
// _id: new Types.ObjectId(), // _id: new Types.ObjectId(),
// cursor: cursor, // cursor: cursor,
// type: 'follower', // type: 'follower',
// }); // });
// cursor = collectedFollower.cursor; // cursor = collectedFollower.cursor;
// hasNextPage = collectedFollower.hasNextPage; // hasNextPage = collectedFollower.hasNextPage;
// console.log('=================================='); // console.log('==================================');
// console.log('nextCursor:', cursor); // console.log('nextCursor:', cursor);
// console.log('has a next page', hasNextPage); // console.log('has a next page', hasNextPage);
// for await (const follower of collectedFollower.followers) { // for await (const follower of collectedFollower.followers) {
// const check = await this.followerModel.findOne({ // const check = await this.followerModel.findOne({
// $and: [ // $and: [
// { username: follower.username }, // { username: follower.username },
// { user_id: follower.user_id }, // { user_id: follower.user_id },
// ], // ],
// }); // });
// if (!check) { // if (!check) {
// await this.followerModel.create({ // await this.followerModel.create({
// _id: new Types.ObjectId(), // _id: new Types.ObjectId(),
// username: follower.username, // username: follower.username,
// user_id: follower.user_id, // user_id: follower.user_id,
// full_name: follower.full_name, // full_name: follower.full_name,
// bussines_username: 'azadi.gold', // bussines_username: 'azadi.gold',
// follower_object: follower.follower_obejct, // follower_object: follower.follower_obejct,
// follow_date: this.getFollowerDateOfFollow(follower.username), // follow_date: this.getFollowerDateOfFollow(follower.username),
// }); // });
// followersCount += 1; // followersCount += 1;
// } else { // } else {
// console.log(follower.username, ' exist'); // console.log(follower.username, ' exist');
// } // }
// } // }
// console.log(followersCount, 'follower imported'); // console.log(followersCount, 'follower imported');
// console.log( // console.log(
// '================ end of this Request Proccess ==================', // '================ end of this Request Proccess ==================',
// ); // );
// } // }
// return { totalAdded: followersCount }; // return { totalAdded: followersCount };
// } catch (err) { // } catch (err) {
// console.log(err); // console.log(err);
// } // }
// } // }
// async getFollowersNextCursor(client, cursor: string) { // async getFollowersNextCursor(client, cursor: string) {
// const azadiGoldUser = await client.getUserByUsername({ // const azadiGoldUser = await client.getUserByUsername({
// username: 'azadi.gold', // username: 'azadi.gold',
// }); // });
// const followers = await client.getFollowers({ // const followers = await client.getFollowers({
// userId: azadiGoldUser.id, // userId: azadiGoldUser.id,
// after: cursor, // after: cursor,
// }); // });
// return followers.page_info.end_cursor; // return followers.page_info.end_cursor;
// } // }
// async sendFollowerRequest(client, cursor) { // async sendFollowerRequest(client, cursor) {
// try { // try {
// const Infollowers: IFollower[] = new Array<IFollower>(); // const Infollowers: IFollower[] = new Array<IFollower>();
// const azadiGoldUser = await client.getUserByUsername({ // const azadiGoldUser = await client.getUserByUsername({
// username: 'azadi.gold', // username: 'azadi.gold',
// }); // });
// const followers = await client.getFollowers({ // const followers = await client.getFollowers({
// userId: azadiGoldUser.id, // userId: azadiGoldUser.id,
// after: cursor, // after: cursor,
// }); // });
// await this.delay(_.random(5000, 10000)); // await this.delay(_.random(5000, 10000));
// console.log('=============incoming followers=============', followers); // console.log('=============incoming followers=============', followers);
// for (const user of followers.data) { // for (const user of followers.data) {
// Infollowers.push({ // Infollowers.push({
// user_id: user.id, // user_id: user.id,
// username: user.username, // username: user.username,
// full_name: user.full_name, // full_name: user.full_name,
// follower_obejct: user, // follower_obejct: user,
// }); // });
// } // }
// return { // return {
// followers: Infollowers, // followers: Infollowers,
// cursor: followers.page_info.end_cursor, // cursor: followers.page_info.end_cursor,
// hasNextPage: followers.page_info.has_next_page, // hasNextPage: followers.page_info.has_next_page,
// }; // };
// } catch (err) { // } catch (err) {
// console.log(err); // console.log(err);
// throw new HttpException(err.message, 500); // throw new HttpException(err.message, 500);
// } // }
// } // }
// getFollowerDateOfFollow(username: string) { // getFollowerDateOfFollow(username: string) {
// let follower_objectResult: any = 0; // let follower_objectResult: any = 0;
// FollowerPrivateData.relationships_followers.forEach((follower_object) => { // FollowerPrivateData.relationships_followers.forEach((follower_object) => {
// if ( // if (
// follower_object.string_list_data[0]['value'].toString() === // follower_object.string_list_data[0]['value'].toString() ===
// username.toString() // username.toString()
// ) { // ) {
// follower_objectResult = // follower_objectResult =
// follower_object.string_list_data[0]['timestamp']; // follower_object.string_list_data[0]['timestamp'];
// } // }
// }); // });
// if (follower_objectResult === 0) { // if (follower_objectResult === 0) {
// console.log(username, 'is not in list'); // console.log(username, 'is not in list');
// follower_objectResult = Date.now() / 1000; // follower_objectResult = Date.now() / 1000;
// } else { // } else {
// console.log(username, 'is in list'); // console.log(username, 'is in list');
// } // }
// return follower_objectResult; // return follower_objectResult;
// } // }
// async delay(ms) { // async delay(ms) {
// // return await for better async stack trace support in case of errors. // // return await for better async stack trace support in case of errors.
// console.log('delay time:', ms); // console.log('delay time:', ms);
// return await new Promise((resolve) => setTimeout(resolve, ms)); // return await new Promise((resolve) => setTimeout(resolve, ms));
// } // }
// async calculateUserScore(owner_username: string) { // async calculateUserScore(owner_username: string) {
// const foundUserComments = await this.commentModel // const foundUserComments = await this.commentModel
// .find({ owner_username }) // .find({ owner_username })
// .sort({ createdAt: 1 }); // .sort({ createdAt: 1 });
// const isUserFollowPage = await this.checkUserFollowingStatus( // const isUserFollowPage = await this.checkUserFollowingStatus(
// owner_username, // owner_username,
// ); // );
// let ownerUserFollowStatus: boolean; // let ownerUserFollowStatus: boolean;
// if (isUserFollowPage) { // if (isUserFollowPage) {
// ownerUserFollowStatus = true; // ownerUserFollowStatus = true;
// } else { // } else {
// ownerUserFollowStatus = false; // ownerUserFollowStatus = false;
// } // }
// const UseCleanComment = new CleanedComments(); // const UseCleanComment = new CleanedComments();
// UseCleanComment.mentions = new Array<MentionDocument>(); // UseCleanComment.mentions = new Array<MentionDocument>();
// UseCleanComment.owner_username = owner_username; // UseCleanComment.owner_username = owner_username;
// foundUserComments.forEach((comment) => { // foundUserComments.forEach((comment) => {
// const rawComment = comment.text; // const rawComment = comment.text;
// const commentTextArray = rawComment.split(' '); // const commentTextArray = rawComment.split(' ');
// commentTextArray.forEach((commentSubStr) => { // commentTextArray.forEach((commentSubStr) => {
// let check = false; // let check = false;
// if (commentSubStr.includes('@')) { // if (commentSubStr.includes('@')) {
// if (UseCleanComment.mentions.length != 0) { // if (UseCleanComment.mentions.length != 0) {
// UseCleanComment.mentions.forEach((mention) => { // UseCleanComment.mentions.forEach((mention) => {
// if ( // if (
// commentSubStr == mention.mentioned_username || // commentSubStr == mention.mentioned_username ||
// commentSubStr == owner_username // commentSubStr == owner_username
// ) { // ) {
// check = true; // check = true;
// } // }
// }); // });
// } else { // } else {
// if (commentSubStr == owner_username) { // if (commentSubStr == owner_username) {
// check = true; // check = true;
// } // }
// } // }
// if (check == false) { // if (check == false) {
// UseCleanComment.mentions.push({ // UseCleanComment.mentions.push({
// mentioned_username: commentSubStr, // mentioned_username: commentSubStr,
// date: comment.date, // date: comment.date,
// }); // });
// } // }
// } // }
// }); // });
// }); // });
// const allUserMentions = new Array<UserAllMention>(); // const allUserMentions = new Array<UserAllMention>();
// for await (const mentionedUser of UseCleanComment.mentions) { // for await (const mentionedUser of UseCleanComment.mentions) {
// console.log('mentionedUser', mentionedUser); // console.log('mentionedUser', mentionedUser);
// const newMentionData = new UserAllMention(); // const newMentionData = new UserAllMention();
// newMentionData.comment_status = new Array<CommentStatus>(); // newMentionData.comment_status = new Array<CommentStatus>();
// const foundAccount = await this.checkUserFollowingStatus( // const foundAccount = await this.checkUserFollowingStatus(
// mentionedUser.mentioned_username.split('@')[1], // mentionedUser.mentioned_username.split('@')[1],
// ); // );
// if (!foundAccount) { // if (!foundAccount) {
// (newMentionData.mentioned_username = mentionedUser.mentioned_username), // (newMentionData.mentioned_username = mentionedUser.mentioned_username),
// (newMentionData.page_follow_date = null), // (newMentionData.page_follow_date = null),
// (newMentionData.comment_date = mentionedUser.date), // (newMentionData.comment_date = mentionedUser.date),
// newMentionData.comment_status.push(CommentStatus.notFollower); // newMentionData.comment_status.push(CommentStatus.notFollower);
// allUserMentions.push(newMentionData); // allUserMentions.push(newMentionData);
// } else { // } else {
// newMentionData.mentioned_username = foundAccount.username; // newMentionData.mentioned_username = foundAccount.username;
// newMentionData.mentioned_user_id = foundAccount.user_id; // newMentionData.mentioned_user_id = foundAccount.user_id;
// newMentionData.page_follow_date = foundAccount.follow_date; // newMentionData.page_follow_date = foundAccount.follow_date;
// newMentionData.comment_date = mentionedUser.date; // newMentionData.comment_date = mentionedUser.date;
// const checkUserFollowedPageBefore = // const checkUserFollowedPageBefore =
// await this.checkUserFollowedPageBefore( // await this.checkUserFollowedPageBefore(
// newMentionData.comment_date, // newMentionData.comment_date,
// newMentionData.page_follow_date, // newMentionData.page_follow_date,
// ); // );
// console.log('++++++++++++++++++', checkUserFollowedPageBefore); // console.log('++++++++++++++++++', checkUserFollowedPageBefore);
// if (checkUserFollowedPageBefore === true) { // if (checkUserFollowedPageBefore === true) {
// console.log('followed before'); // console.log('followed before');
// newMentionData.comment_status.push(CommentStatus.isAFollowerBefore); // newMentionData.comment_status.push(CommentStatus.isAFollowerBefore);
// } // }
// console.log('*************', newMentionData.mentioned_username); // console.log('*************', newMentionData.mentioned_username);
// const checkUserMentionedBefore = await this.checkUserMentionedBefore( // const checkUserMentionedBefore = await this.checkUserMentionedBefore(
// newMentionData.mentioned_username, // newMentionData.mentioned_username,
// newMentionData.comment_date, // newMentionData.comment_date,
// ); // );
// if ( // if (
// checkUserMentionedBefore == true && // checkUserMentionedBefore == true &&
// !newMentionData.comment_status // !newMentionData.comment_status
// ) { // ) {
// newMentionData.comment_status.push(CommentStatus.isMentionedBefore); // newMentionData.comment_status.push(CommentStatus.isMentionedBefore);
// } // }
// if ( // if (
// checkUserFollowedPageBefore == false && // checkUserFollowedPageBefore == false &&
// checkUserMentionedBefore == false // checkUserMentionedBefore == false
// ) { // ) {
// newMentionData.comment_status.push(CommentStatus.isValid); // newMentionData.comment_status.push(CommentStatus.isValid);
// } // }
// allUserMentions.push(newMentionData); // allUserMentions.push(newMentionData);
// } // }
// } // }
// return { // return {
// mentions: allUserMentions, // mentions: allUserMentions,
// }; // };
// } // }
// async getResults() { // async getResults() {
// const foundUsernames = await this.commentModel.distinct('owner_username'); // const foundUsernames = await this.commentModel.distinct('owner_username');
// // console.log('total users for ranking:', foundUsernames.length); // // console.log('total users for ranking:', foundUsernames.length);
// for await (const username of foundUsernames) { // for await (const username of foundUsernames) {
// const mentions = await this.calculateUserScore(username); // const mentions = await this.calculateUserScore(username);
// console.log('--------------', mentions.mentions); // console.log('--------------', mentions.mentions);
// let valid_mentions = 0; // let valid_mentions = 0;
// let followed_before = 0; // let followed_before = 0;
// let mentions_before = 0; // let mentions_before = 0;
// let pending_mentions = 0; // let pending_mentions = 0;
// const valid_users = new Array<string>(); // const valid_users = new Array<string>();
// const mentions_before_users = new Array<string>(); // const mentions_before_users = new Array<string>();
// const followed_before_users = new Array<string>(); // const followed_before_users = new Array<string>();
// const pending_users = new Array<string>(); // const pending_users = new Array<string>();
// mentions.mentions.forEach((mention) => { // mentions.mentions.forEach((mention) => {
// if (mention.comment_status.includes(CommentStatus.isValid)) { // if (mention.comment_status.includes(CommentStatus.isValid)) {
// valid_mentions++; // valid_mentions++;
// valid_users.push(mention.mentioned_username); // valid_users.push(mention.mentioned_username);
// } else if ( // } else if (
// mention.comment_status.includes(CommentStatus.isMentionedBefore) // mention.comment_status.includes(CommentStatus.isMentionedBefore)
// ) { // ) {
// mentions_before++; // mentions_before++;
// mentions_before_users.push(mention.mentioned_username); // mentions_before_users.push(mention.mentioned_username);
// } else if ( // } else if (
// mention.comment_status.includes(CommentStatus.isAFollowerBefore) // mention.comment_status.includes(CommentStatus.isAFollowerBefore)
// ) { // ) {
// followed_before++; // followed_before++;
// followed_before_users.push(mention.mentioned_username); // followed_before_users.push(mention.mentioned_username);
// } else if (mention.comment_status.includes(CommentStatus.notFollower)) { // } else if (mention.comment_status.includes(CommentStatus.notFollower)) {
// pending_mentions++; // pending_mentions++;
// pending_users.push(mention.mentioned_username); // pending_users.push(mention.mentioned_username);
// } // }
// }); // });
// await this.delay(_.random(500, 1000)); // await this.delay(_.random(500, 1000));
// const foundUser = await this.resultModel.findOne({ username: username }); // const foundUser = await this.resultModel.findOne({ username: username });
// if (!foundUser) { // if (!foundUser) {
// await this.resultModel.create({ // await this.resultModel.create({
// username: username, // username: username,
// valid_mentions, // valid_mentions,
// mentions_before, // mentions_before,
// followed_before, // followed_before,
// pending_mentions, // pending_mentions,
// score: valid_mentions + 1, // score: valid_mentions + 1,
// valid_users: valid_users, // valid_users: valid_users,
// followed_before_users: followed_before_users, // followed_before_users: followed_before_users,
// mentions_before_users: mentions_before_users, // mentions_before_users: mentions_before_users,
// pending_users: pending_users, // pending_users: pending_users,
// }); // });
// } else { // } else {
// await this.resultModel.updateOne( // await this.resultModel.updateOne(
// { _id: foundUser._id }, // { _id: foundUser._id },
// { // {
// username: username, // username: username,
// valid_mentions, // valid_mentions,
// mentions_before, // mentions_before,
// followed_before, // followed_before,
// pending_mentions, // pending_mentions,
// score: valid_mentions + 1, // score: valid_mentions + 1,
// valid_users: valid_users, // valid_users: valid_users,
// followed_before_users: followed_before_users, // followed_before_users: followed_before_users,
// mentions_before_users: mentions_before_users, // mentions_before_users: mentions_before_users,
// pending_users: pending_users, // pending_users: pending_users,
// }, // },
// ); // );
// } // }
// } // }
// return 'records updated successfully'; // return 'records updated successfully';
// } // }
// async checkUserMentionedBefore(username, comment_date) { // async checkUserMentionedBefore(username, comment_date) {
// const foundCommentsWithThisMention = await this.commentModel.find({ // const foundCommentsWithThisMention = await this.commentModel.find({
// text: new RegExp(`@${username}`), // text: new RegExp(`@${username}`),
// }); // });
// let isValid = false; // let isValid = false;
// if (foundCommentsWithThisMention.length != 0) { // if (foundCommentsWithThisMention.length != 0) {
// foundCommentsWithThisMention.forEach((comment) => { // foundCommentsWithThisMention.forEach((comment) => {
// if (comment_date > comment.date) { // if (comment_date > comment.date) {
// isValid = true; // isValid = true;
// } // }
// }); // });
// } // }
// return isValid; // return isValid;
// } // }
// async checkUserFollowingStatus(username: string) { // async checkUserFollowingStatus(username: string) {
// const res = await this.followerModel.findOne({ username: username }); // const res = await this.followerModel.findOne({ username: username });
// return res; // return res;
// } // }
// async checkUserFollowedPageBefore( // async checkUserFollowedPageBefore(
// comment_date: number, // comment_date: number,
// followed_date: number, // followed_date: number,
// ) { // ) {
// if (comment_date < followed_date) { // if (comment_date < followed_date) {
// return false; // return false;
// } else { // } else {
// return true; // return true;
// } // }
// } // }
// async getFinalResults() { // async getFinalResults() {
// const results = await this.resultModel.find().sort({ score: -1 }); // const results = await this.resultModel.find().sort({ score: -1 });
// const last_update = await this.resultModel.find().sort({ updatedAt: -1 }); // const last_update = await this.resultModel.find().sort({ updatedAt: -1 });
// const last_create = await this.resultModel.find().sort({ createdAt: -1 }); // const last_create = await this.resultModel.find().sort({ createdAt: -1 });
// let date: number; // let date: number;
// if (last_update[0]['updatedAt'] >= last_create[0]['createdAt']) { // if (last_update[0]['updatedAt'] >= last_create[0]['createdAt']) {
// date = last_update[0]['updatedAt']; // date = last_update[0]['updatedAt'];
// } else { // } else {
// date = last_create[0]['createdAt']; // date = last_create[0]['createdAt'];
// } // }
// const finalResult = new Array<ResultResponse>(); // const finalResult = new Array<ResultResponse>();
// for await (const userRes of results) { // for await (const userRes of results) {
// const response: ResultResponse = new ResultResponse(); // const response: ResultResponse = new ResultResponse();
// response.users = new Array<any>(); // response.users = new Array<any>();
// userRes.pending_users.forEach((user) => { // userRes.pending_users.forEach((user) => {
// response.users.push({ // response.users.push({
// userId: user, // userId: user,
// status: CommentStatus.notFollower, // status: CommentStatus.notFollower,
// }); // });
// }); // });
// userRes.mentions_before_users.forEach((user) => { // userRes.mentions_before_users.forEach((user) => {
// response.users.push({ // response.users.push({
// userId: user, // userId: user,
// status: CommentStatus.isMentionedBefore, // status: CommentStatus.isMentionedBefore,
// }); // });
// }); // });
// userRes.followed_before_users.forEach((user) => { // userRes.followed_before_users.forEach((user) => {
// response.users.push({ // response.users.push({
// userId: user, // userId: user,
// status: CommentStatus.isAFollowerBefore, // status: CommentStatus.isAFollowerBefore,
// }); // });
// }); // });
// userRes.valid_users.forEach((user) => { // userRes.valid_users.forEach((user) => {
// response.users.push({ userId: user, status: CommentStatus.isValid }); // response.users.push({ userId: user, status: CommentStatus.isValid });
// }); // });
// (response.username = userRes.username), // (response.username = userRes.username),
// (response.valid_mentions = userRes.valid_mentions), // (response.valid_mentions = userRes.valid_mentions),
// (response.before_mentions = userRes.mentions_before), // (response.before_mentions = userRes.mentions_before),
// (response.followed_before_mentions = userRes.followed_before), // (response.followed_before_mentions = userRes.followed_before),
// (response.pending_mentions = userRes.pending_mentions), // (response.pending_mentions = userRes.pending_mentions),
// (response.score = userRes.score); // (response.score = userRes.score);
// finalResult.push(response); // finalResult.push(response);
// } // }
// return { // return {
// finalResult, // finalResult,
// last_update: date, // last_update: date,
// }; // };
// } // }
// async getUserResult(username: string) { // async getUserResult(username: string) {
// username = username.toLowerCase(); // username = username.toLowerCase();
// const userRes = await this.resultModel.findOne({ username }); // const userRes = await this.resultModel.findOne({ username });
// const userIndexs = await this.lotoryResultModel.find({ username }); // const userIndexs = await this.lotoryResultModel.find({ username });
// if (!userRes) return 'User not found'; // if (!userRes) return 'User not found';
// const response: ResultResponse = new ResultResponse(); // const response: ResultResponse = new ResultResponse();
// response.users = new Array<any>(); // response.users = new Array<any>();
// response.lottory_chances_codes = new Array<string>(); // response.lottory_chances_codes = new Array<string>();
// userRes.pending_users.forEach((user) => { // userRes.pending_users.forEach((user) => {
// response.users.push({ userId: user, status: CommentStatus.notFollower }); // response.users.push({ userId: user, status: CommentStatus.notFollower });
// }); // });
// userRes.mentions_before_users.forEach((user) => { // userRes.mentions_before_users.forEach((user) => {
// response.users.push({ // response.users.push({
// userId: user, // userId: user,
// status: CommentStatus.isMentionedBefore, // status: CommentStatus.isMentionedBefore,
// }); // });
// }); // });
// userRes.followed_before_users.forEach((user) => { // userRes.followed_before_users.forEach((user) => {
// response.users.push({ // response.users.push({
// userId: user, // userId: user,
// status: CommentStatus.isAFollowerBefore, // status: CommentStatus.isAFollowerBefore,
// }); // });
// }); // });
// userRes.valid_users.forEach((user) => { // userRes.valid_users.forEach((user) => {
// response.users.push({ userId: user, status: CommentStatus.isValid }); // response.users.push({ userId: user, status: CommentStatus.isValid });
// }); // });
// (response.username = userRes.username), // (response.username = userRes.username),
// (response.valid_mentions = userRes.valid_mentions), // (response.valid_mentions = userRes.valid_mentions),
// (response.before_mentions = userRes.mentions_before), // (response.before_mentions = userRes.mentions_before),
// (response.followed_before_mentions = userRes.followed_before), // (response.followed_before_mentions = userRes.followed_before),
// (response.pending_mentions = userRes.pending_mentions), // (response.pending_mentions = userRes.pending_mentions),
// (response.last_update = userRes['updatedAt']), // (response.last_update = userRes['updatedAt']),
// (response.score = userRes.score); // (response.score = userRes.score);
// userIndexs.forEach((index) => { // userIndexs.forEach((index) => {
// response.lottory_chances_codes.push(index.index.toString()); // response.lottory_chances_codes.push(index.index.toString());
// }); // });
// return { // return {
// response, // response,
// }; // };
// } // }
// shuffle(array) { // shuffle(array) {
// let currentIndex = array.length, // let currentIndex = array.length,
// randomIndex; // randomIndex;
// // While there remain elements to shuffle... // // While there remain elements to shuffle...
// while (0 !== currentIndex) { // while (0 !== currentIndex) {
// // Pick a remaining element... // // Pick a remaining element...
// randomIndex = Math.floor(Math.random() * currentIndex); // randomIndex = Math.floor(Math.random() * currentIndex);
// currentIndex--; // currentIndex--;
// // And swap it with the current element. // // And swap it with the current element.
// [array[currentIndex], array[randomIndex]] = [ // [array[currentIndex], array[randomIndex]] = [
// array[randomIndex], // array[randomIndex],
// array[currentIndex], // array[currentIndex],
// ]; // ];
// } // }
// return array; // return array;
// } // }
// async getShuffleData() { // async getShuffleData() {
// const comptitionArray = new Array<string>(); // const comptitionArray = new Array<string>();
// const foundUsernames = await this.resultModel.find(); // const foundUsernames = await this.resultModel.find();
// console.log(foundUsernames); // console.log(foundUsernames);
// let score = 0; // let score = 0;
// for await (const user of foundUsernames) { // for await (const user of foundUsernames) {
// score += user.score; // score += user.score;
// for (let index = 0; index < user.score; index++) { // for (let index = 0; index < user.score; index++) {
// comptitionArray.push(user.username); // comptitionArray.push(user.username);
// } // }
// } // }
// const res = this.shuffle(comptitionArray); // const res = this.shuffle(comptitionArray);
// console.log('score is', score); // console.log('score is', score);
// return res; // return res;
// } // }
// async addResultsToDB() { // async addResultsToDB() {
// // await this.lotoryResultModel.deleteMany(); // // await this.lotoryResultModel.deleteMany();
// const comptitionArray = new Array<any>(); // const comptitionArray = new Array<any>();
// const foundUsernames = await this.resultModel // const foundUsernames = await this.resultModel
// .find({}) // .find({})
// .sort({}); // .sort({});
// let index = 1000; // let index = 1000;
// for await (const user of foundUsernames) { // for await (const user of foundUsernames) {
// console.log(index) // console.log(index)
// for (let u = 0; u < user.valid_users.length; u++) { // for (let u = 0; u < user.valid_users.length; u++) {
// const isChanceExist = await this.lotoryResultModel // const isChanceExist = await this.lotoryResultModel
// .findOne({ // .findOne({
// username: user.username, // username: user.username,
// tagged_user: user.valid_users[u], // tagged_user: user.valid_users[u],
// }) // })
// .exec(); // .exec();
// if (!isChanceExist) // if (!isChanceExist)
// comptitionArray.push({ // comptitionArray.push({
// index, // index,
// username: user.username, // username: user.username,
// tagged_user: user.valid_users[u], // tagged_user: user.valid_users[u],
// status:"valid" // status:"valid"
// }); // });
// index++; // index++;
// } // }
// const isUserChanceExist = await this.lotoryResultModel.findOne({ // const isUserChanceExist = await this.lotoryResultModel.findOne({
// username: user.username, // username: user.username,
// tagged_user: user.username, // tagged_user: user.username,
// }); // });
// if (!isUserChanceExist) // if (!isUserChanceExist)
// comptitionArray.push({ // comptitionArray.push({
// index, // index,
// username: user.username, // username: user.username,
// tagged_user: user.username, // tagged_user: user.username,
// status:"valid" // status:"valid"
// }); // });
// index++; // index++;
// } // }
// await this.lotoryResultModel.insertMany(comptitionArray); // await this.lotoryResultModel.insertMany(comptitionArray);
// return 'successfull'; // return 'successfull';
// } // }
// export class ResultResponse { // export class ResultResponse {
// last_update: Date; // last_update: Date;
// username: string; // username: string;
// valid_mentions: number; // valid_mentions: number;
// followed_before_mentions: number; // followed_before_mentions: number;
// before_mentions: number; // before_mentions: number;
// pending_mentions: number; // pending_mentions: number;
// score: number; // score: number;
// users?: Array<any>; // users?: Array<any>;
// lottory_chances_codes: Array<string>; // lottory_chances_codes: Array<string>;
// } // }
export class GetCommentsDto{ export class GetCommentsDto{
username: string username: string
password: string password: string
profile: string profile: string
post_short_code: string post_short_code: string
} }
\ No newline at end of file
export class GetFollowersDto{ export class GetFollowersDto{
username: string username: string
password: string password: string
profile: string profile: string
} }
\ No newline at end of file
export class GetLikesDto{ export class GetLikesDto{
username: string username: string
password: string password: string
profile: string profile: string
post_short_code: string post_short_code: string
} }
\ No newline at end of file
import { Body, Controller, Get, Param, Post } from '@nestjs/common'; import { Body, Controller, Get, Param, Post } from '@nestjs/common';
import { GetCommentsDto } from './dto/get-comments-dto' import { GetCommentsDto } from './dto/get-comments-dto'
import { GetFollowersDto } from './dto/get-followers-dto' import { GetFollowersDto } from './dto/get-followers-dto'
import { GetLikesDto } from './dto/get-likes-dto' import { GetLikesDto } from './dto/get-likes-dto'
import { InstagramService } from './instagram.service' import { InstagramService } from './instagram.service'
@Controller('instagram') @Controller('instagram')
export class InstagramController { export class InstagramController {
constructor(private instagramService: InstagramService) { } constructor(private instagramService: InstagramService) { }
@Get('get-json-followers') @Get('get-json-followers')
async getJsonDataFollowers() { async getJsonDataFollowers() {
await this.instagramService.getFollowersFromJsonData() await this.instagramService.getFollowersFromJsonData()
return "proccess started successfully" return "proccess started successfully"
} }
@Post('get-followers') @Post('get-followers')
async getFollowers(@Body() getFollowers: GetFollowersDto) { async getFollowers(@Body() getFollowers: GetFollowersDto) {
return await this.instagramService.getFollowersFromInstaLoader(getFollowers.username, return await this.instagramService.getFollowersFromInstaLoader(getFollowers.username,
getFollowers.password,getFollowers.profile) getFollowers.password,getFollowers.profile)
} }
@Post('get-likes') @Post('get-likes')
async getLikes(@Body() getLikes: GetLikesDto) { async getLikes(@Body() getLikes: GetLikesDto) {
return this.instagramService.getLikesFromInstaLoader(getLikes.username, return this.instagramService.getLikesFromInstaLoader(getLikes.username,
getLikes.password,getLikes.post_short_code ,getLikes.profile) getLikes.password,getLikes.post_short_code ,getLikes.profile)
} }
@Post('get-comments') @Post('get-comments')
async getComments(@Body() getComments: GetCommentsDto) { async getComments(@Body() getComments: GetCommentsDto) {
return await this.instagramService.getCommentsFromInstaLoader(getComments.username, return await this.instagramService.getCommentsFromInstaLoader(getComments.username,
getComments.password,getComments.post_short_code ,getComments.profile getComments.password,getComments.post_short_code ,getComments.profile
) )
} }
} }
import { Module } from '@nestjs/common'; import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose'; import { MongooseModule } from '@nestjs/mongoose';
import { InstagramController } from './instagram.controller'; import { InstagramController } from './instagram.controller';
import { InstagramService } from './instagram.service'; import { InstagramService } from './instagram.service';
import { CommentSchema } from './models/comment.schema'; import { CommentSchema } from './models/comment.schema';
import { FollowerSchema } from './models/follower.schema'; import { FollowerSchema } from './models/follower.schema';
import { LikeSchema } from './models/like.schema'; import { LikeSchema } from './models/like.schema';
import { LottoryResultSchema } from './models/LottoryResult.schema'; import { LottoryResultSchema } from './models/LottoryResult.schema';
import { UserSchema } from './models/user.schema'; import { UserSchema } from './models/user.schema';
@Module({ @Module({
imports: [ imports: [
MongooseModule.forFeature([ MongooseModule.forFeature([
{ name: 'User', schema: UserSchema }, { name: 'User', schema: UserSchema },
]), ]),
MongooseModule.forFeature([ MongooseModule.forFeature([
{ name: 'Follower', schema: FollowerSchema }, { name: 'Follower', schema: FollowerSchema },
]), ]),
MongooseModule.forFeature([ MongooseModule.forFeature([
{ name: 'Like', schema: LikeSchema }, { name: 'Like', schema: LikeSchema },
]), ]),
MongooseModule.forFeature([ MongooseModule.forFeature([
{ name: 'Comment', schema: CommentSchema }, { name: 'Comment', schema: CommentSchema },
]), ]),
MongooseModule.forFeature([ MongooseModule.forFeature([
{ name: 'LottryResult', schema: LottoryResultSchema }, { name: 'LottryResult', schema: LottoryResultSchema },
]), ]),
], ],
controllers: [InstagramController], controllers: [InstagramController],
providers: [InstagramService] providers: [InstagramService]
}) })
export class InstagramModule { } export class InstagramModule { }
import { import {
HttpException, HttpException,
Injectable, Injectable,
OnApplicationBootstrap, OnApplicationBootstrap,
} from '@nestjs/common'; } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose'; import { InjectModel } from '@nestjs/mongoose';
import { Model, Types } from 'mongoose'; import { Model, Types } from 'mongoose';
import * as _ from 'lodash'; import * as _ from 'lodash';
import { CommentDocument } from './models/comment.schema'; import { CommentDocument } from './models/comment.schema';
import { FollowerDocument } from './models/follower.schema'; import { FollowerDocument } from './models/follower.schema';
import { LikeDocument } from './models/like.schema'; import { LikeDocument } from './models/like.schema';
import { UserDocument } from './models/user.schema'; import { UserDocument } from './models/user.schema';
import FollowrData from './values/followers _data' import FollowrData from './values/followers _data'
import { spawn } from 'child_process' import { spawn } from 'child_process'
import * as path from "path" import * as path from "path"
@Injectable() @Injectable()
export class InstagramService implements OnApplicationBootstrap { export class InstagramService implements OnApplicationBootstrap {
constructor( constructor(
@InjectModel('User') @InjectModel('User')
private userModel: Model<UserDocument>, private userModel: Model<UserDocument>,
@InjectModel('Follower') @InjectModel('Follower')
private followerModel: Model<FollowerDocument>, private followerModel: Model<FollowerDocument>,
@InjectModel('Like') @InjectModel('Like')
private likeModel: Model<LikeDocument>, private likeModel: Model<LikeDocument>,
@InjectModel('Comment') @InjectModel('Comment')
private commentModel: Model<CommentDocument>, private commentModel: Model<CommentDocument>,
) { } ) { }
async onApplicationBootstrap() { async onApplicationBootstrap() {
} }
async getFollowersFromJsonData() { async getFollowersFromJsonData() {
console.log('start proccess...'); console.log('start proccess...');
let accountUsername = FollowrData.account_username let accountUsername = FollowrData.account_username
let account = await this.findOrCreateUser(accountUsername) let account = await this.findOrCreateUser(accountUsername)
for await (const follower of FollowrData.relationships_followers) { for await (const follower of FollowrData.relationships_followers) {
let user = await this.findOrCreateUser(follower.string_list_data[0].value.toString()) let user = await this.findOrCreateUser(follower.string_list_data[0].value.toString())
let foundFollower = await this.followerModel.findOne({ $and: [{ user_id: user._id }, { account_id: account._id }] }) let foundFollower = await this.followerModel.findOne({ $and: [{ user_id: user._id }, { account_id: account._id }] })
if (!foundFollower) { if (!foundFollower) {
let importedFollower = await this.followerModel.create({ let importedFollower = await this.followerModel.create({
_id: Types.ObjectId(), _id: Types.ObjectId(),
user_id: user._id, user_id: user._id,
account_id: account._id, account_id: account._id,
follow_date: follower.string_list_data[0].timestamp follow_date: follower.string_list_data[0].timestamp
}) })
} }
} }
console.log('end of proccess...') console.log('end of proccess...')
return {message: "successfull"} return {message: "successfull"}
} }
async getLikesFromInstaLoader(username: string, password: string, post_short_code: string, profile: string) { async getLikesFromInstaLoader(username: string, password: string, post_short_code: string, profile: string) {
let paths = path.resolve("src","instagram","instaloader-service","getLikes.py") let paths = path.resolve("src","instagram","instaloader-service","getLikes.py")
const getLikesProccess = spawn('python3', [`${paths}`, `${username}`, `${password}`, `${post_short_code}`, `${profile}`,]); const getLikesProccess = spawn('python3', [`${paths}`, `${username}`, `${password}`, `${post_short_code}`, `${profile}`,]);
getLikesProccess.stdout.on('data', function (data) { getLikesProccess.stdout.on('data', function (data) {
console.log('start collecting likes from python script ...'); console.log('start collecting likes from python script ...');
console.log(data.toString()) console.log(data.toString())
}); });
getLikesProccess.on('error', (err) => { getLikesProccess.on('error', (err) => {
console.log(`child process has error ${err}`) console.log(`child process has error ${err}`)
}); });
getLikesProccess.on('close', (code) => { getLikesProccess.on('close', (code) => {
console.log(`child process close all stdio with code ${code}`); console.log(`child process close all stdio with code ${code}`);
}); });
} }
async getCommentsFromInstaLoader(username: string, password: string, post_short_code: string, profile: string) { async getCommentsFromInstaLoader(username: string, password: string, post_short_code: string, profile: string) {
let paths = path.resolve("src","instagram","instaloader-service","getComments.py") let paths = path.resolve("src","instagram","instaloader-service","getComments.py")
const getCommentsProccess = spawn('python3', [`'${paths}`, `${username}`, `${password}`, `${post_short_code}`, `${profile}`]); const getCommentsProccess = spawn('python3', [`'${paths}`, `${username}`, `${password}`, `${post_short_code}`, `${profile}`]);
getCommentsProccess.stdout.on('data', function (data) { getCommentsProccess.stdout.on('data', function (data) {
console.log('start collecting comments from python script ...'); console.log('start collecting comments from python script ...');
console.log(data.toString()) console.log(data.toString())
}); });
getCommentsProccess.on('error', (err) => { getCommentsProccess.on('error', (err) => {
console.log(`child process has error ${err}`); console.log(`child process has error ${err}`);
}); });
getCommentsProccess.on('close', (code) => { getCommentsProccess.on('close', (code) => {
console.log(`child process close all stdio with code ${code}`); console.log(`child process close all stdio with code ${code}`);
}); });
} }
async getFollowersFromInstaLoader(username: string, password: string, profile: string) { async getFollowersFromInstaLoader(username: string, password: string, profile: string) {
let paths = path.resolve("src","instagram","instaloader-service","getFollowers.py") let paths = path.resolve("src","instagram","instaloader-service","getFollowers.py")
const getFollowersProccess = spawn('python3', [`${paths}`, `${username}`, `${password}`, `${profile}`]); const getFollowersProccess = spawn('python3', [`${paths}`, `${username}`, `${password}`, `${profile}`]);
getFollowersProccess.stdout.on('data', function (data) { getFollowersProccess.stdout.on('data', function (data) {
console.log('start collecting followers from python script ...'); console.log('start collecting followers from python script ...');
console.log(data.toString()) console.log(data.toString())
}); });
getFollowersProccess.on('error', (err) => { getFollowersProccess.on('error', (err) => {
console.log(`child process has error ${err}`); console.log(`child process has error ${err}`);
}); });
getFollowersProccess.on('close', (code) => { getFollowersProccess.on('close', (code) => {
console.log(`child process close all stdio with code ${code}`); console.log(`child process close all stdio with code ${code}`);
}); });
} }
async findOrCreateUser(username: string) { async findOrCreateUser(username: string) {
let user: UserDocument let user: UserDocument
let foundUser = await this.userModel.findOne({ username }) let foundUser = await this.userModel.findOne({ username })
if (!foundUser) { if (!foundUser) {
let createdUser = await this.userModel.create({ let createdUser = await this.userModel.create({
_id: Types.ObjectId(), _id: Types.ObjectId(),
username: username username: username
}) })
user = createdUser user = createdUser
} }
else { else {
user = foundUser user = foundUser
} }
return user return user
} }
} }
import instaloader import instaloader
import pymongo import pymongo
username = "kakasrm" username = "kakasrm"
password = "kaka1374" password = "kaka1374"
mongo_connection_string = "mongodb://azadi:azadi%404010@185.231.180.248:27017/?serverSelectionTimeoutMS=5000&connectTimeoutMS=10000&authSource=admin&authMechanism=SCRAM-SHA-256" mongo_connection_string = "mongodb://azadi:azadi%404010@185.231.180.248:27017/?serverSelectionTimeoutMS=5000&connectTimeoutMS=10000&authSource=admin&authMechanism=SCRAM-SHA-256"
database_name = "azadi-gold-backend" database_name = "azadi-gold-backend"
post_short_code = "CSCUev0swJO" post_short_code = "CSCUev0swJO"
PROFILE = "azadi.gold" PROFILE = "azadi.gold"
def __main__(): def __main__():
print("connecting to the instagram ....") print("connecting to the instagram ....")
L = instaloader.Instaloader() L = instaloader.Instaloader()
L.login(username, password) L.login(username, password)
profile = instaloader.Profile.from_username(L.context, PROFILE) profile = instaloader.Profile.from_username(L.context, PROFILE)
print("connected to the instagram :) ") print("connected to the instagram :) ")
print("Load post data ....") print("Load post data ....")
post = instaloader.Post.from_shortcode(L.context, post_short_code) post = instaloader.Post.from_shortcode(L.context, post_short_code)
print("Post data loaded :) ") print("Post data loaded :) ")
print("connecting to the database ....") print("connecting to the database ....")
client = pymongo.MongoClient(mongo_connection_string) client = pymongo.MongoClient(mongo_connection_string)
db = client[database_name] db = client[database_name]
# get likes of given post short code # get likes of given post short code
getLikes(db, post, PROFILE) getLikes(db, post, PROFILE)
# get comments of given post short code # get comments of given post short code
# getComments(db, post, PROFILE) # getComments(db, post, PROFILE)
# get Followers of given profile # get Followers of given profile
# getFollowers(db, profile, PROFILE) # getFollowers(db, profile, PROFILE)
# get tagged Posts of given profile # get tagged Posts of given profile
# getTaggedPosts(db, profile) # getTaggedPosts(db, profile)
def getComments(db, post, profile): def getComments(db, post, profile):
col = db["comments"] col = db["comments"]
post_col = db["posts"] post_col = db["posts"]
account_col = db['users'] account_col = db['users']
print('start getting comments') print('start getting comments')
account_id = None account_id = None
post_id = None post_id = None
found_account = account_col.find_one({"username": profile}, ) found_account = account_col.find_one({"username": profile}, )
if found_account is not None: if found_account is not None:
print(found_account['username'], 'is already exists') print(found_account['username'], 'is already exists')
account_id = found_account['_id'] account_id = found_account['_id']
else: else:
created_account = account_col.insert_one({"username": profile}) created_account = account_col.insert_one({"username": profile})
account_id = created_account.inserted_id account_id = created_account.inserted_id
print(profile, 'added to users') print(profile, 'added to users')
found_post = post_col.find_one({"url": post_short_code}) found_post = post_col.find_one({"url": post_short_code})
if found_post is not None: if found_post is not None:
print(found_post['url'], 'is already exists') print(found_post['url'], 'is already exists')
post_id = found_post['_id'] post_id = found_post['_id']
else: else:
created_post = post_col.insert_one({"url": post_short_code, "user_id": account_id}) created_post = post_col.insert_one({"url": post_short_code, "user_id": account_id})
post_id = created_post.inserted_id post_id = created_post.inserted_id
print(post_short_code, 'added to posts') print(post_short_code, 'added to posts')
for comment in post.get_comments(): for comment in post.get_comments():
print("Searching : ", comment.id) print("Searching : ", comment.id)
search = col.find_one({"comment_id": comment.id}) search = col.find_one({"comment_id": comment.id})
try: try:
if search is not None and search["comment_id"]: if search is not None and search["comment_id"]:
print(comment.id, " Already Exist") print(comment.id, " Already Exist")
else: else:
user_id = None user_id = None
found_username = account_col.find_one({'username': comment.owner.username}) found_username = account_col.find_one({'username': comment.owner.username})
if found_username is not None: if found_username is not None:
print(found_username['username'], 'is already exists') print(found_username['username'], 'is already exists')
user_id = found_username['_id'] user_id = found_username['_id']
else: else:
created_user = account_col.insert_one({"username": comment.owner.username, created_user = account_col.insert_one({"username": comment.owner.username,
"instagram_user_id": comment.owner.userid}) "instagram_user_id": comment.owner.userid})
user_id = created_user.inserted_id user_id = created_user.inserted_id
print(comment.owner.username, 'added to users') print(comment.owner.username, 'added to users')
temp = {"comment_id": comment.id, "user_id": user_id, "post_id": post_id, temp = {"comment_id": comment.id, "user_id": user_id, "post_id": post_id,
"text": comment.text, "date": comment.created_at_utc.timestamp()} "text": comment.text, "date": comment.created_at_utc.timestamp()}
x = col.update(temp, temp, upsert=True) x = col.update(temp, temp, upsert=True)
print(comment.id, " added") print(comment.id, " added")
except: except:
print("Error") print("Error")
def getLikes(db, post, profile): def getLikes(db, post, profile):
col = db["likes"] col = db["likes"]
post_col = db["posts"] post_col = db["posts"]
account_col = db['users'] account_col = db['users']
print('start getting likes') print('start getting likes')
account_id = None account_id = None
post_id = None post_id = None
found_account = account_col.find_one({"username": profile},) found_account = account_col.find_one({"username": profile},)
if found_account is not None: if found_account is not None:
print(found_account['username'], 'is already exists') print(found_account['username'], 'is already exists')
account_id = found_account['_id'] account_id = found_account['_id']
else: else:
created_account = account_col.insert_one({"username": profile}) created_account = account_col.insert_one({"username": profile})
account_id = created_account.inserted_id account_id = created_account.inserted_id
print(profile, 'added to users') print(profile, 'added to users')
found_post = post_col.find_one({"url": post_short_code}) found_post = post_col.find_one({"url": post_short_code})
if found_post is not None: if found_post is not None:
print(found_post['url'], 'is already exists') print(found_post['url'], 'is already exists')
post_id = found_post['_id'] post_id = found_post['_id']
else: else:
created_post = post_col.insert_one({"url": post_short_code, "user_id": account_id}) created_post = post_col.insert_one({"url": post_short_code, "user_id": account_id})
post_id = created_post.inserted_id post_id = created_post.inserted_id
print(post_short_code, 'added to posts') print(post_short_code, 'added to posts')
for like in post.get_likes(): for like in post.get_likes():
print('======', like) print('======', like)
print("Searching : ", like.username, post_id) print("Searching : ", like.username, post_id)
search = col.find_one( search = col.find_one(
{"username": like.username, "post_id": post_id}) {"username": like.username, "post_id": post_id})
try: try:
if search is not None: if search is not None:
print(like.username, " Already like post : ", post_id) print(like.username, " Already like post : ", post_id)
else: else:
user_id = None user_id = None
found_username = account_col.find_one({'username': like.username}) found_username = account_col.find_one({'username': like.username})
if found_username is not None: if found_username is not None:
print(found_username['username'], 'is already exists') print(found_username['username'], 'is already exists')
user_id = found_username['_id'] user_id = found_username['_id']
else: else:
created_user = account_col.insert_one( created_user = account_col.insert_one(
{"username": like.username}) {"username": like.username})
user_id = created_user.inserted_id user_id = created_user.inserted_id
print(like.username, 'added to users') print(like.username, 'added to users')
temp = {"user_id": user_id, temp = {"user_id": user_id,
"post_id": post_id} "post_id": post_id}
x = col.update(temp, temp, upsert=True) x = col.update(temp, temp, upsert=True)
print(like.username, " like post : ", post_short_code) print(like.username, " like post : ", post_short_code)
except: except:
print("Error") print("Error")
def getFollowers(db, profile, profile_username): def getFollowers(db, profile, profile_username):
col = db["followers"] col = db["followers"]
account_col = db['users'] account_col = db['users']
account_id = None account_id = None
found_username = account_col.find_one({'username': profile_username}) found_username = account_col.find_one({'username': profile_username})
if found_username is not None: if found_username is not None:
print(found_username['username'], 'is already exists') print(found_username['username'], 'is already exists')
account_id = found_username['_id'] account_id = found_username['_id']
else: else:
created_user = account_col.insert_one( created_user = account_col.insert_one(
{"username": profile_username, type: "business"}) {"username": profile_username, type: "business"})
account_id = created_user.inserted_id account_id = created_user.inserted_id
print(profile_username, 'added to users') print(profile_username, 'added to users')
for follower in profile.get_followers(): for follower in profile.get_followers():
print("Searching in ", profile, " for :", follower.username) print("Searching in ", profile, " for :", follower.username)
search = col.find_one({"username": follower.username}) search = col.find_one({"username": follower.username})
try: try:
if search is not None: if search is not None:
print(follower.username, " Already Exist in : ", print(follower.username, " Already Exist in : ",
profile, "Followers") profile, "Followers")
else: else:
user_id = None user_id = None
found_username = account_col.find_one({'username': follower.username}) found_username = account_col.find_one({'username': follower.username})
if found_username is not None: if found_username is not None:
print(found_username['username'], 'is already exists') print(found_username['username'], 'is already exists')
user_id = found_username['_id'] user_id = found_username['_id']
else: else:
created_user = account_col.insert_one( created_user = account_col.insert_one(
{"username": follower.username, {"username": follower.username,
"instagram_user_id": follower.userid, "full_name": follower.full_name}) "instagram_user_id": follower.userid, "full_name": follower.full_name})
user_id = created_user.inserted_id user_id = created_user.inserted_id
print(follower.username, 'added to users') print(follower.username, 'added to users')
temp = {"username": follower.username, "user_id": user_id, temp = {"username": follower.username, "user_id": user_id,
"account_id": account_id, "follow_date": "", "profile_pic": follower.profile_pic_url, } "account_id": account_id, "follow_date": "", "profile_pic": follower.profile_pic_url, }
x = col.update(temp, temp, upsert=True) x = col.update(temp, temp, upsert=True)
print(follower.username, " followed : ", profile) print(follower.username, " followed : ", profile)
except: except:
print("Error") print("Error")
def getTaggedPosts(db, profile): def getTaggedPosts(db, profile):
col = db["tagged"] col = db["tagged"]
for tagged_post in profile.get_tagged_posts(): for tagged_post in profile.get_tagged_posts():
print("Searching in ", profile, print("Searching in ", profile,
" for tagged post with id :", tagged_post.shortcode) " for tagged post with id :", tagged_post.shortcode)
search = col.find_one({"short_code": tagged_post.shortcode}) search = col.find_one({"short_code": tagged_post.shortcode})
try: try:
if search is not None: if search is not None:
print(tagged_post.shortcode, " Already Exist in : tagged_posts") print(tagged_post.shortcode, " Already Exist in : tagged_posts")
else: else:
temp = {"username": tagged_post.username, "user_id": tagged_post.userid, temp = {"username": tagged_post.username, "user_id": tagged_post.userid,
"post_short_code": tagged_post.shortcode, "post_short_code": tagged_post.shortcode,
"business_username": PROFILE, "post_date": tagged_post.date_utc} "business_username": PROFILE, "post_date": tagged_post.date_utc}
x = col.update(temp, temp, upsert=True) x = col.update(temp, temp, upsert=True)
print(tagged_post.shortcode, " added") print(tagged_post.shortcode, " added")
except: except:
print("Error") print("Error")
__main__() __main__()
import instaloader import instaloader
import pymongo import pymongo
import sys import sys
username = "kakasrm" username = "kakasrm"
password = "kaka1374" password = "kaka1374"
mongo_connection_string = "mongodb://instagram:wcD3B5sGw0yQ@185.231.180.248:27017/instagram-lottry?authSource=admin&authMechanism=SCRAM-SHA-256" mongo_connection_string = "mongodb://instagram:wcD3B5sGw0yQ@185.231.180.248:27017/instagram-lottry?authSource=admin&authMechanism=SCRAM-SHA-256"
database_name = "instagram-lottry" database_name = "instagram-lottry"
post_short_code = "CShKEJijy4v" post_short_code = "CShKEJijy4v"
PROFILE = "azadi.gold" PROFILE = "azadi.gold"
def __main__(): def __main__():
print("connecting to the instagram ....") print("connecting to the instagram ....")
L = instaloader.Instaloader() L = instaloader.Instaloader()
L.login(username, password) L.login(username, password)
profile = instaloader.Profile.from_username(L.context, PROFILE) profile = instaloader.Profile.from_username(L.context, PROFILE)
print("connected to the instagram :) ") print("connected to the instagram :) ")
print("Load post data ....") print("Load post data ....")
post = instaloader.Post.from_shortcode(L.context, post_short_code) post = instaloader.Post.from_shortcode(L.context, post_short_code)
print("Post data loaded :) ") print("Post data loaded :) ")
print("connecting to the database ....") print("connecting to the database ....")
client = pymongo.MongoClient(mongo_connection_string) client = pymongo.MongoClient(mongo_connection_string)
db = client[database_name] db = client[database_name]
# get comments of given post short code # get comments of given post short code
getComments(db, post, PROFILE) getComments(db, post, PROFILE)
def getComments(db, post, profile): def getComments(db, post, profile):
col = db["comments"] col = db["comments"]
post_col = db["posts"] post_col = db["posts"]
account_col = db['users'] account_col = db['users']
print('start getting comments') print('start getting comments')
account_id = None account_id = None
post_id = None post_id = None
found_account = account_col.find_one({"username": profile}, ) found_account = account_col.find_one({"username": profile}, )
if found_account is not None: if found_account is not None:
print(found_account['username'], 'is already exists') print(found_account['username'], 'is already exists')
account_id = found_account['_id'] account_id = found_account['_id']
else: else:
created_account = account_col.insert_one({"username": profile}) created_account = account_col.insert_one({"username": profile})
account_id = created_account.inserted_id account_id = created_account.inserted_id
print(profile, 'added to users') print(profile, 'added to users')
found_post = post_col.find_one({"url": post_short_code}) found_post = post_col.find_one({"url": post_short_code})
if found_post is not None: if found_post is not None:
print(found_post['url'], 'is already exists') print(found_post['url'], 'is already exists')
post_id = found_post['_id'] post_id = found_post['_id']
else: else:
created_post = post_col.insert_one( created_post = post_col.insert_one(
{"url": post_short_code, "user_id": account_id}) {"url": post_short_code, "user_id": account_id})
post_id = created_post.inserted_id post_id = created_post.inserted_id
print(post_short_code, 'added to posts') print(post_short_code, 'added to posts')
for comment in post.get_comments(): for comment in post.get_comments():
print("Searching : ", comment.id) print("Searching : ", comment.id)
search = col.find_one({"comment_id": comment.id}) search = col.find_one({"comment_id": comment.id})
try: try:
if search is not None and search["comment_id"]: if search is not None and search["comment_id"]:
print(comment.id, " Already Exist") print(comment.id, " Already Exist")
else: else:
user_id = None user_id = None
found_username = account_col.find_one( found_username = account_col.find_one(
{'username': comment.owner.username}) {'username': comment.owner.username})
if found_username is not None: if found_username is not None:
print(found_username['username'], 'is already exists') print(found_username['username'], 'is already exists')
user_id = found_username['_id'] user_id = found_username['_id']
else: else:
created_user = account_col.insert_one({"username": comment.owner.username, created_user = account_col.insert_one({"username": comment.owner.username,
"instagram_user_id": comment.owner.userid}) "instagram_user_id": comment.owner.userid})
user_id = created_user.inserted_id user_id = created_user.inserted_id
print(comment.owner.username, 'added to users') print(comment.owner.username, 'added to users')
temp = {"comment_id": comment.id, "user_id": user_id, "post_id": post_id, temp = {"comment_id": comment.id, "user_id": user_id, "post_id": post_id,
"text": comment.text, "date": comment.created_at_utc.timestamp()} "text": comment.text, "date": comment.created_at_utc.timestamp()}
x = col.update(temp, temp, upsert=True) x = col.update(temp, temp, upsert=True)
print(comment.id, " added") print(comment.id, " added")
except: except:
print("Error") print("Error")
__main__() __main__()
import instaloader import instaloader
import pymongo import pymongo
import sys import sys
username = str(sys.argv[1]) username = str(sys.argv[1])
password = str(sys.argv[2]) password = str(sys.argv[2])
mongo_connection_string = "mongodb://instagram:wcD3B5sGw0yQ@185.231.180.248:27017/instagram-lottry?authSource=admin&authMechanism=SCRAM-SHA-256" mongo_connection_string = "mongodb://instagram:wcD3B5sGw0yQ@185.231.180.248:27017/instagram-lottry?authSource=admin&authMechanism=SCRAM-SHA-256"
database_name = "instagram-lottry" database_name = "instagram-lottry"
PROFILE = str(sys.argv[3]) PROFILE = str(sys.argv[3])
def __main__(): def __main__():
print("connecting to the instagram ....") print("connecting to the instagram ....")
L = instaloader.Instaloader() L = instaloader.Instaloader()
L.login(username, password) L.login(username, password)
profile = instaloader.Profile.from_username(L.context, PROFILE) profile = instaloader.Profile.from_username(L.context, PROFILE)
print("connected to the instagram :) ") print("connected to the instagram :) ")
print("Load post data ....") print("Load post data ....")
# post = instaloader.Post.from_shortcode(L.context, post_short_code) # post = instaloader.Post.from_shortcode(L.context, post_short_code)
print("Post data loaded :) ") print("Post data loaded :) ")
print("connecting to the database ....") print("connecting to the database ....")
client = pymongo.MongoClient(mongo_connection_string) client = pymongo.MongoClient(mongo_connection_string)
db = client[database_name] db = client[database_name]
# get Followers of given profile # get Followers of given profile
getFollowers(db, profile, PROFILE) getFollowers(db, profile, PROFILE)
def getFollowers(db, profile, profile_username): def getFollowers(db, profile, profile_username):
col = db["followers"] col = db["followers"]
account_col = db['users'] account_col = db['users']
account_id = None account_id = None
found_username = account_col.find_one({'username': profile_username}) found_username = account_col.find_one({'username': profile_username})
if found_username is not None: if found_username is not None:
print(found_username['username'], 'is already exists') print(found_username['username'], 'is already exists')
account_id = found_username['_id'] account_id = found_username['_id']
else: else:
created_user = account_col.insert_one( created_user = account_col.insert_one(
{"username": profile_username, type: "business"}) {"username": profile_username, type: "business"})
account_id = created_user.inserted_id account_id = created_user.inserted_id
print(profile_username, 'added to users') print(profile_username, 'added to users')
for follower in profile.get_followers(): for follower in profile.get_followers():
print("Searching in ", profile, " for :", follower.username) print("Searching in ", profile, " for :", follower.username)
search = col.find_one({"username": follower.username}) search = col.find_one({"username": follower.username})
try: try:
if search is not None: if search is not None:
print(follower.username, " Already Exist in : ", print(follower.username, " Already Exist in : ",
profile, "Followers") profile, "Followers")
else: else:
user_id = None user_id = None
found_username = account_col.find_one( found_username = account_col.find_one(
{'username': follower.username}) {'username': follower.username})
if found_username is not None: if found_username is not None:
print(found_username['username'], 'is already exists') print(found_username['username'], 'is already exists')
user_id = found_username['_id'] user_id = found_username['_id']
else: else:
created_user = account_col.insert_one( created_user = account_col.insert_one(
{"username": follower.username, {"username": follower.username,
"instagram_user_id": follower.userid, "full_name": follower.full_name}) "instagram_user_id": follower.userid, "full_name": follower.full_name})
user_id = created_user.inserted_id user_id = created_user.inserted_id
print(follower.username, 'added to users') print(follower.username, 'added to users')
temp = {"username": follower.username, "user_id": user_id, temp = {"username": follower.username, "user_id": user_id,
"account_id": account_id, "follow_date": "", "profile_pic": follower.profile_pic_url, } "account_id": account_id, "follow_date": "", "profile_pic": follower.profile_pic_url, }
x = col.update(temp, temp, upsert=True) x = col.update(temp, temp, upsert=True)
print(follower.username, " followed : ", profile) print(follower.username, " followed : ", profile)
except: except:
print("Error") print("Error")
__main__() __main__()
import instaloader import instaloader
import pymongo import pymongo
import sys import sys
username = str(sys.argv[1]) username = str(sys.argv[1])
password = str(sys.argv[2]) password = str(sys.argv[2])
mongo_connection_string = "mongodb://instagram:wcD3B5sGw0yQ@185.231.180.248:27017/instagram-lottry?authSource=admin&authMechanism=SCRAM-SHA-256" mongo_connection_string = "mongodb://instagram:wcD3B5sGw0yQ@185.231.180.248:27017/instagram-lottry?authSource=admin&authMechanism=SCRAM-SHA-256"
database_name = "instagram-lottry" database_name = "instagram-lottry"
post_short_code = str(sys.argv[3]) post_short_code = str(sys.argv[3])
PROFILE = str(sys.argv[4]) PROFILE = str(sys.argv[4])
def __main__(): def __main__():
print(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4]) print(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])
print("connecting to the instagram ....") print("connecting to the instagram ....")
L = instaloader.Instaloader() L = instaloader.Instaloader()
L.login(username, password) L.login(username, password)
profile = instaloader.Profile.from_username(L.context, PROFILE) profile = instaloader.Profile.from_username(L.context, PROFILE)
print("connected to the instagram :) ") print("connected to the instagram :) ")
print("Load post data ....") print("Load post data ....")
post = instaloader.Post.from_shortcode(L.context, post_short_code) post = instaloader.Post.from_shortcode(L.context, post_short_code)
print("Post data loaded :) ") print("Post data loaded :) ")
print("connecting to the database ....") print("connecting to the database ....")
client = pymongo.MongoClient(mongo_connection_string) client = pymongo.MongoClient(mongo_connection_string)
db = client[database_name] db = client[database_name]
# get likes of given post short code # get likes of given post short code
getLikes(db, post, PROFILE) getLikes(db, post, PROFILE)
def getLikes(db, post, profile): def getLikes(db, post, profile):
col = db["likes"] col = db["likes"]
post_col = db["posts"] post_col = db["posts"]
account_col = db['users'] account_col = db['users']
print('start getting likes') print('start getting likes')
account_id = None account_id = None
post_id = None post_id = None
found_account = account_col.find_one({"username": profile},) found_account = account_col.find_one({"username": profile},)
if found_account is not None: if found_account is not None:
print(found_account['username'], 'is already exists') print(found_account['username'], 'is already exists')
account_id = found_account['_id'] account_id = found_account['_id']
else: else:
created_account = account_col.insert_one({"username": profile}) created_account = account_col.insert_one({"username": profile})
account_id = created_account.inserted_id account_id = created_account.inserted_id
print(profile, 'added to users') print(profile, 'added to users')
found_post = post_col.find_one({"url": post_short_code}) found_post = post_col.find_one({"url": post_short_code})
if found_post is not None: if found_post is not None:
print(found_post['url'], 'is already exists') print(found_post['url'], 'is already exists')
post_id = found_post['_id'] post_id = found_post['_id']
else: else:
created_post = post_col.insert_one( created_post = post_col.insert_one(
{"url": post_short_code, "user_id": account_id}) {"url": post_short_code, "user_id": account_id})
post_id = created_post.inserted_id post_id = created_post.inserted_id
print(post_short_code, 'added to posts') print(post_short_code, 'added to posts')
for like in post.get_likes(): for like in post.get_likes():
print('======', like) print('======', like)
print("Searching : ", like.username, post_id) print("Searching : ", like.username, post_id)
search = col.find_one( search = col.find_one(
{"username": like.username, "post_id": post_id}) {"username": like.username, "post_id": post_id})
try: try:
if search is not None: if search is not None:
print(like.username, " Already like post : ", post_id) print(like.username, " Already like post : ", post_id)
else: else:
user_id = None user_id = None
found_username = account_col.find_one( found_username = account_col.find_one(
{'username': like.username}) {'username': like.username})
if found_username is not None: if found_username is not None:
print(found_username['username'], 'is already exists') print(found_username['username'], 'is already exists')
user_id = found_username['_id'] user_id = found_username['_id']
else: else:
created_user = account_col.insert_one( created_user = account_col.insert_one(
{"username": like.username}) {"username": like.username})
user_id = created_user.inserted_id user_id = created_user.inserted_id
print(like.username, 'added to users') print(like.username, 'added to users')
temp = {"user_id": user_id, temp = {"user_id": user_id,
"post_id": post_id} "post_id": post_id}
x = col.update(temp, temp, upsert=True) x = col.update(temp, temp, upsert=True)
print(like.username, " like post : ", post_short_code) print(like.username, " like post : ", post_short_code)
except: except:
print("Error") print("Error")
__main__() __main__()
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document, Types } from 'mongoose'; import { Document, Types } from 'mongoose';
export type LottoryResultDocument = LottoryResult & Document; export type LottoryResultDocument = LottoryResult & Document;
@Schema({ timestamps: true }) @Schema({ timestamps: true })
export class LottoryResult { export class LottoryResult {
@Prop() @Prop()
_id: Types.ObjectId _id: Types.ObjectId
@Prop() @Prop()
index: string; index: string;
@Prop({ type: Types.ObjectId, ref: 'User' }) @Prop({ type: Types.ObjectId, ref: 'User' })
user_id: Types.ObjectId user_id: Types.ObjectId
// @Prop() // @Prop()
// tagged_user: string; // tagged_user: string;
@Prop() @Prop()
status: string; status: string;
} }
export const LottoryResultSchema = SchemaFactory.createForClass(LottoryResult); export const LottoryResultSchema = SchemaFactory.createForClass(LottoryResult);
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document, Types } from 'mongoose'; import { Document, Types } from 'mongoose';
export type CommentDocument = Comment & Document; export type CommentDocument = Comment & Document;
@Schema({ timestamps: true }) @Schema({ timestamps: true })
export class Comment { export class Comment {
@Prop() @Prop()
_id: Types.ObjectId; _id: Types.ObjectId;
@Prop() @Prop()
comment_id: string; comment_id: string;
@Prop() @Prop()
text: string; text: string;
@Prop({ type: Types.ObjectId, ref: 'User' }) @Prop({ type: Types.ObjectId, ref: 'User' })
user_id: Types.ObjectId user_id: Types.ObjectId
@Prop({ type: Types.ObjectId, ref: 'Post' }) @Prop({ type: Types.ObjectId, ref: 'Post' })
post_id: Types.ObjectId post_id: Types.ObjectId
@Prop() @Prop()
date: number; date: number;
@Prop({ type: Object }) @Prop({ type: Object })
comment_object: Object; comment_object: Object;
} }
export const CommentSchema = SchemaFactory.createForClass(Comment); export const CommentSchema = SchemaFactory.createForClass(Comment);
\ No newline at end of file
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document, Types } from 'mongoose'; import { Document, Types } from 'mongoose';
export type FollowerDocument = Follower & Document; export type FollowerDocument = Follower & Document;
@Schema({ timestamps: true }) @Schema({ timestamps: true })
export class Follower { export class Follower {
@Prop() @Prop()
_id: Types.ObjectId; _id: Types.ObjectId;
@Prop({ type: Types.ObjectId, ref: 'User' }) @Prop({ type: Types.ObjectId, ref: 'User' })
user_id: Types.ObjectId user_id: Types.ObjectId
@Prop({ type: Types.ObjectId, ref: 'User' }) @Prop({ type: Types.ObjectId, ref: 'User' })
account_id: Types.ObjectId account_id: Types.ObjectId
@Prop() @Prop()
follow_date: number; follow_date: number;
} }
export const FollowerSchema = export const FollowerSchema =
SchemaFactory.createForClass(Follower); SchemaFactory.createForClass(Follower);
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document, Types } from 'mongoose'; import { Document, Types } from 'mongoose';
export type LikeDocument = Like & Document; export type LikeDocument = Like & Document;
@Schema({ timestamps: true }) @Schema({ timestamps: true })
export class Like { export class Like {
@Prop() @Prop()
_id: Types.ObjectId; _id: Types.ObjectId;
@Prop({ type: Types.ObjectId, ref: 'User' }) @Prop({ type: Types.ObjectId, ref: 'User' })
user_id: Types.ObjectId user_id: Types.ObjectId
@Prop({ type: Types.ObjectId, ref: 'Post' }) @Prop({ type: Types.ObjectId, ref: 'Post' })
post_id: Types.ObjectId post_id: Types.ObjectId
} }
export const LikeSchema = export const LikeSchema =
SchemaFactory.createForClass(Like); SchemaFactory.createForClass(Like);
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document, Types } from 'mongoose'; import { Document, Types } from 'mongoose';
export type PostDocument = Post & Document; export type PostDocument = Post & Document;
@Schema({ timestamps: true }) @Schema({ timestamps: true })
export class Post { export class Post {
@Prop() @Prop()
_id: Types.ObjectId _id: Types.ObjectId
@Prop() @Prop()
url: string url: string
@Prop({ type: Types.ObjectId, ref: 'User' }) @Prop({ type: Types.ObjectId, ref: 'User' })
user_id: Types.ObjectId user_id: Types.ObjectId
} }
export const PostSchema = export const PostSchema =
SchemaFactory.createForClass(Post) SchemaFactory.createForClass(Post)
\ No newline at end of file
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose'; import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document, Types } from 'mongoose'; import { Document, Types } from 'mongoose';
export type UserDocument = User & Document; export type UserDocument = User & Document;
export enum AccountType { export enum AccountType {
business = "business", business = "business",
customer = "customer" customer = "customer"
} }
@Schema({ timestamps: true }) @Schema({ timestamps: true })
export class User { export class User {
@Prop() @Prop()
_id: Types.ObjectId _id: Types.ObjectId
@Prop() @Prop()
username: string username: string
@Prop() @Prop()
instagram_user_id: string instagram_user_id: string
@Prop() @Prop()
full_name: string full_name: string
@Prop({ enum: AccountType }) @Prop({ enum: AccountType })
type: string type: string
@Prop() @Prop()
mobile: string mobile: string
} }
export const UserSchema = export const UserSchema =
SchemaFactory.createForClass(User) SchemaFactory.createForClass(User)
\ No newline at end of file
export default { export default {
addToStoryData : [ addToStoryData : [
{ {
username: "soma.ye2103", username: "soma.ye2103",
count: 5 count: 5
}, },
{ {
username: "zahra_51512", username: "zahra_51512",
count: 1 count: 1
}, },
{ {
username: "nafas3633m", username: "nafas3633m",
count: 1 count: 1
}, },
{ {
username: "jafar.amr", username: "jafar.amr",
count: 1 count: 1
}, },
{ {
username: "sougool5382", username: "sougool5382",
count: 1 count: 1
}, },
{ {
username: "maryam.maryammy", username: "maryam.maryammy",
count: 1 count: 1
}, },
{ {
username: "toktam.yobi80", username: "toktam.yobi80",
count: 1 count: 1
}, },
{ {
username: "roghayeh_b8082", username: "roghayeh_b8082",
count: 1 count: 1
}, },
{ {
username: "turky.yyy", username: "turky.yyy",
count: 1 count: 1
}, },
{ {
username: "liligoli", username: "liligoli",
count: 1 count: 1
}, },
{ {
username: "soh.ila50", username: "soh.ila50",
count: 1 count: 1
}, },
{ {
username: "_mrs_kz_z", username: "_mrs_kz_z",
count: 1 count: 1
}, },
] ]
} }
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment