Skip to content

Commit 2388211

Browse files
committed
Added an option to provide a custom output directory
1 parent 4f78ca2 commit 2388211

File tree

3 files changed

+47
-46
lines changed

3 files changed

+47
-46
lines changed

main.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -115,10 +115,11 @@ def _quit():
115115
parser.add_argument('-j', '--json', help='save commands output as JSON file', action='store_true')
116116
parser.add_argument('-f', '--file', help='save output in a file', action='store_true')
117117
parser.add_argument('-c', '--cli', help='command line mode', action='store')
118+
parser.add_argument('-o', '--output', help='where to store photos', action='store')
118119

119120
args = parser.parse_args()
120121

121-
api = Osintgram(args.id, args.file, args.json, args.cli)
122+
api = Osintgram(args.id, args.file, args.json, args.cli, args.output)
122123

123124

124125
commands = {

output/dont_delete_this_folder.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Please don't deleate this folder.
1+
Please don't delete this folder.

src/Osintgram.py

+44-44
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class Osintgram:
3131
writeFile = False
3232
jsonDump = False
3333

34-
def __init__(self, target, is_file, is_json, is_cli):
34+
def __init__(self, target, is_file, is_json, is_cli, output_dir):
3535
u = config.getUsername()
3636
p = config.getPassword()
3737
if not is_cli:
@@ -150,14 +150,14 @@ def get_addrs(self):
150150
i = i + 1
151151

152152
if self.writeFile:
153-
file_name = "output/" + self.target + "_addrs.txt"
153+
file_name = output_dir + "/" + self.target + "_addrs.txt"
154154
file = open(file_name, "w")
155155
file.write(str(t))
156156
file.close()
157157

158158
if self.jsonDump:
159159
json_data['address'] = addrs_list
160-
json_file_name = "output/" + self.target + "_addrs.json"
160+
json_file_name = output_dir + "/" + self.target + "_addrs.json"
161161
with open(json_file_name, 'w') as f:
162162
json.dump(json_data, f)
163163

@@ -200,7 +200,7 @@ def get_captions(self):
200200
file = None
201201

202202
if self.writeFile:
203-
file_name = "output/" + self.target + "_captions.txt"
203+
file_name = output_dir + "/" + self.target + "_captions.txt"
204204
file = open(file_name, "w")
205205

206206
for s in captions:
@@ -211,7 +211,7 @@ def get_captions(self):
211211

212212
if self.jsonDump:
213213
json_data['captions'] = captions
214-
json_file_name = "output/" + self.target + "_followings.json"
214+
json_file_name = output_dir + "/" + self.target + "_followings.json"
215215
with open(json_file_name, 'w') as f:
216216
json.dump(json_data, f)
217217

@@ -239,7 +239,7 @@ def get_total_comments(self):
239239
posts += 1
240240

241241
if self.writeFile:
242-
file_name = "output/" + self.target + "_comments.txt"
242+
file_name = output_dir + "/" + self.target + "_comments.txt"
243243
file = open(file_name, "w")
244244
file.write(str(comments_counter) + " comments in " + str(posts) + " posts\n")
245245
file.close()
@@ -249,7 +249,7 @@ def get_total_comments(self):
249249
'comment_counter': comments_counter,
250250
'posts': posts
251251
}
252-
json_file_name = "output/" + self.target + "_comments.json"
252+
json_file_name = output_dir + "/" + self.target + "_comments.json"
253253
with open(json_file_name, 'w') as f:
254254
json.dump(json_data, f)
255255

@@ -285,13 +285,13 @@ def get_comment_data(self):
285285

286286
print(t)
287287
if self.writeFile:
288-
file_name = "output/" + self.target + "_comment_data.txt"
288+
file_name = output_dir + "/" + self.target + "_comment_data.txt"
289289
with open(file_name, 'w') as f:
290290
f.write(str(t))
291291
f.close()
292292

293293
if self.jsonDump:
294-
file_name_json = "output/" + self.target + "_comment_data.json"
294+
file_name_json = output_dir + "/" + self.target + "_comment_data.json"
295295
with open(file_name_json, 'w') as f:
296296
f.write("{ \"Comments\":[ \n")
297297
f.write('\n'.join(json.dumps(comment) for comment in _comments) + ',\n')
@@ -351,14 +351,14 @@ def get_followers(self):
351351
followings_list.append(follow)
352352

353353
if self.writeFile:
354-
file_name = "output/" + self.target + "_followers.txt"
354+
file_name = output_dir + "/" + self.target + "_followers.txt"
355355
file = open(file_name, "w")
356356
file.write(str(t))
357357
file.close()
358358

359359
if self.jsonDump:
360360
json_data['followers'] = followers
361-
json_file_name = "output/" + self.target + "_followers.json"
361+
json_file_name = output_dir + "/" + self.target + "_followers.json"
362362
with open(json_file_name, 'w') as f:
363363
json.dump(json_data, f)
364364

@@ -416,14 +416,14 @@ def get_followings(self):
416416
followings_list.append(follow)
417417

418418
if self.writeFile:
419-
file_name = "output/" + self.target + "_followings.txt"
419+
file_name = output_dir + "/" + self.target + "_followings.txt"
420420
file = open(file_name, "w")
421421
file.write(str(t))
422422
file.close()
423423

424424
if self.jsonDump:
425425
json_data['followings'] = followings_list
426-
json_file_name = "output/" + self.target + "_followings.json"
426+
json_file_name = output_dir + "/" + self.target + "_followings.json"
427427
with open(json_file_name, 'w') as f:
428428
json.dump(json_data, f)
429429

@@ -472,7 +472,7 @@ def get_hashtags(self):
472472
hashtags_list = []
473473

474474
if self.writeFile:
475-
file_name = "output/" + self.target + "_hashtags.txt"
475+
file_name = output_dir + "/" + self.target + "_hashtags.txt"
476476
file = open(file_name, "w")
477477

478478
for k, v in ssort:
@@ -488,7 +488,7 @@ def get_hashtags(self):
488488

489489
if self.jsonDump:
490490
json_data['hashtags'] = hashtags_list
491-
json_file_name = "output/" + self.target + "_hashtags.json"
491+
json_file_name = output_dir + "/" + self.target + "_hashtags.json"
492492
with open(json_file_name, 'w') as f:
493493
json.dump(json_data, f)
494494
else:
@@ -564,7 +564,7 @@ def get_user_info(self):
564564
if 'contact_phone_number' in data and data['contact_phone_number']:
565565
user['contact_phone_number'] = data['contact_phone_number']
566566

567-
json_file_name = "output/" + self.target + "_info.json"
567+
json_file_name = output_dir + "/" + self.target + "_info.json"
568568
with open(json_file_name, 'w') as f:
569569
json.dump(user, f)
570570

@@ -590,7 +590,7 @@ def get_total_likes(self):
590590
posts += 1
591591

592592
if self.writeFile:
593-
file_name = "output/" + self.target + "_likes.txt"
593+
file_name = output_dir + "/" + self.target + "_likes.txt"
594594
file = open(file_name, "w")
595595
file.write(str(like_counter) + " likes in " + str(like_counter) + " posts\n")
596596
file.close()
@@ -600,7 +600,7 @@ def get_total_likes(self):
600600
'like_counter': like_counter,
601601
'posts': like_counter
602602
}
603-
json_file_name = "output/" + self.target + "_likes.json"
603+
json_file_name = output_dir + "/" + self.target + "_likes.json"
604604
with open(json_file_name, 'w') as f:
605605
json.dump(json_data, f)
606606

@@ -635,7 +635,7 @@ def get_media_type(self):
635635
if counter > 0:
636636

637637
if self.writeFile:
638-
file_name = "output/" + self.target + "_mediatype.txt"
638+
file_name = output_dir + "/" + self.target + "_mediatype.txt"
639639
file = open(file_name, "w")
640640
file.write(str(photo_counter) + " photos and " + str(video_counter) + " video posted by target\n")
641641
file.close()
@@ -648,7 +648,7 @@ def get_media_type(self):
648648
"photos": photo_counter,
649649
"videos": video_counter
650650
}
651-
json_file_name = "output/" + self.target + "_mediatype.json"
651+
json_file_name = output_dir + "/" + self.target + "_mediatype.json"
652652
with open(json_file_name, 'w') as f:
653653
json.dump(json_data, f)
654654

@@ -700,14 +700,14 @@ def get_people_who_commented(self):
700700
print(t)
701701

702702
if self.writeFile:
703-
file_name = "output/" + self.target + "_users_who_commented.txt"
703+
file_name = output_dir + "/" + self.target + "_users_who_commented.txt"
704704
file = open(file_name, "w")
705705
file.write(str(t))
706706
file.close()
707707

708708
if self.jsonDump:
709709
json_data['users_who_commented'] = ssort
710-
json_file_name = "output/" + self.target + "_users_who_commented.json"
710+
json_file_name = output_dir + "/" + self.target + "_users_who_commented.json"
711711
with open(json_file_name, 'w') as f:
712712
json.dump(json_data, f)
713713
else:
@@ -768,14 +768,14 @@ def get_people_who_tagged(self):
768768
print(t)
769769

770770
if self.writeFile:
771-
file_name = "output/" + self.target + "_users_who_tagged.txt"
771+
file_name = output_dir + "/" + self.target + "_users_who_tagged.txt"
772772
file = open(file_name, "w")
773773
file.write(str(t))
774774
file.close()
775775

776776
if self.jsonDump:
777777
json_data['users_who_tagged'] = ssort
778-
json_file_name = "output/" + self.target + "_users_who_tagged.json"
778+
json_file_name = output_dir + "/" + self.target + "_users_who_tagged.json"
779779
with open(json_file_name, 'w') as f:
780780
json.dump(json_data, f)
781781
else:
@@ -816,14 +816,14 @@ def get_photo_description(self):
816816
count += 1
817817

818818
if self.writeFile:
819-
file_name = "output/" + self.target + "_photodes.txt"
819+
file_name = output_dir + "/" + self.target + "_photodes.txt"
820820
file = open(file_name, "w")
821821
file.write(str(t))
822822
file.close()
823823

824824
if self.jsonDump:
825825
json_data['descriptions'] = descriptions_list
826-
json_file_name = "output/" + self.target + "_descriptions.json"
826+
json_file_name = output_dir + "/" + self.target + "_descriptions.json"
827827
with open(json_file_name, 'w') as f:
828828
json.dump(json_data, f)
829829

@@ -869,7 +869,7 @@ def get_user_photo(self):
869869
counter = counter + 1
870870
url = item["image_versions2"]["candidates"][0]["url"]
871871
photo_id = item["id"]
872-
end = "output/" + self.target + "_" + photo_id + ".jpg"
872+
end = output_dir + "/" + self.target + "_" + photo_id + ".jpg"
873873
urllib.request.urlretrieve(url, end)
874874
sys.stdout.write("\rDownloaded %i" % counter)
875875
sys.stdout.flush()
@@ -881,7 +881,7 @@ def get_user_photo(self):
881881
counter = counter + 1
882882
url = i["image_versions2"]["candidates"][0]["url"]
883883
photo_id = i["id"]
884-
end = "output/" + self.target + "_" + photo_id + ".jpg"
884+
end = output_dir + "/" + self.target + "_" + photo_id + ".jpg"
885885
urllib.request.urlretrieve(url, end)
886886
sys.stdout.write("\rDownloaded %i" % counter)
887887
sys.stdout.flush()
@@ -913,7 +913,7 @@ def get_user_propic(self):
913913
URL = data["hd_profile_pic_versions"][items-1]['url']
914914

915915
if URL != "":
916-
end = "output/" + self.target + "_propic.jpg"
916+
end = output_dir + "/" + self.target + "_propic.jpg"
917917
urllib.request.urlretrieve(URL, end)
918918
pc.printout("Target propic saved in output folder\n", pc.GREEN)
919919

@@ -942,12 +942,12 @@ def get_user_stories(self):
942942
story_id = i["id"]
943943
if i["media_type"] == 1: # it's a photo
944944
url = i['image_versions2']['candidates'][0]['url']
945-
end = "output/" + self.target + "_" + story_id + ".jpg"
945+
end = output_dir + "/" + self.target + "_" + story_id + ".jpg"
946946
urllib.request.urlretrieve(url, end)
947947

948948
elif i["media_type"] == 2: # it's a gif or video
949949
url = i['video_versions'][0]['url']
950-
end = "output/" + self.target + "_" + story_id + ".mp4"
950+
end = output_dir + "/" + self.target + "_" + story_id + ".mp4"
951951
urllib.request.urlretrieve(url, end)
952952

953953
if counter > 0:
@@ -1013,14 +1013,14 @@ def get_people_tagged_by_user(self):
10131013
tagged_list.append(tag)
10141014

10151015
if self.writeFile:
1016-
file_name = "output/" + self.target + "_tagged.txt"
1016+
file_name = output_dir + "/" + self.target + "_tagged.txt"
10171017
file = open(file_name, "w")
10181018
file.write(str(t))
10191019
file.close()
10201020

10211021
if self.jsonDump:
10221022
json_data['tagged'] = tagged_list
1023-
json_file_name = "output/" + self.target + "_tagged.json"
1023+
json_file_name = output_dir + "/" + self.target + "_tagged.json"
10241024
with open(json_file_name, 'w') as f:
10251025
json.dump(json_data, f)
10261026

@@ -1032,7 +1032,7 @@ def get_user(self, username):
10321032
try:
10331033
content = self.api.username_info(username)
10341034
if self.writeFile:
1035-
file_name = "output/" + self.target + "_user_id.txt"
1035+
file_name = output_dir + "/" + self.target + "_user_id.txt"
10361036
file = open(file_name, "w")
10371037
file.write(str(content['user']['pk']))
10381038
file.close()
@@ -1219,14 +1219,14 @@ def get_fwersemail(self):
12191219
t.add_row([str(node['id']), node['username'], node['full_name'], node['email']])
12201220

12211221
if self.writeFile:
1222-
file_name = "output/" + self.target + "_fwersemail.txt"
1222+
file_name = output_dir + "/" + self.target + "_fwersemail.txt"
12231223
file = open(file_name, "w")
12241224
file.write(str(t))
12251225
file.close()
12261226

12271227
if self.jsonDump:
12281228
json_data['followers_email'] = results
1229-
json_file_name = "output/" + self.target + "_fwersemail.json"
1229+
json_file_name = output_dir + "/" + self.target + "_fwersemail.json"
12301230
with open(json_file_name, 'w') as f:
12311231
json.dump(json_data, f)
12321232

@@ -1300,14 +1300,14 @@ def get_fwingsemail(self):
13001300
t.add_row([str(node['id']), node['username'], node['full_name'], node['email']])
13011301

13021302
if self.writeFile:
1303-
file_name = "output/" + self.target + "_fwingsemail.txt"
1303+
file_name = output_dir + "/" + self.target + "_fwingsemail.txt"
13041304
file = open(file_name, "w")
13051305
file.write(str(t))
13061306
file.close()
13071307

13081308
if self.jsonDump:
13091309
json_data['followings_email'] = results
1310-
json_file_name = "output/" + self.target + "_fwingsemail.json"
1310+
json_file_name = output_dir + "/" + self.target + "_fwingsemail.json"
13111311
with open(json_file_name, 'w') as f:
13121312
json.dump(json_data, f)
13131313

@@ -1381,14 +1381,14 @@ def get_fwingsnumber(self):
13811381
t.add_row([str(node['id']), node['username'], node['full_name'], node['contact_phone_number']])
13821382

13831383
if self.writeFile:
1384-
file_name = "output/" + self.target + "_fwingsnumber.txt"
1384+
file_name = output_dir + "/" + self.target + "_fwingsnumber.txt"
13851385
file = open(file_name, "w")
13861386
file.write(str(t))
13871387
file.close()
13881388

13891389
if self.jsonDump:
13901390
json_data['followings_phone_numbers'] = results
1391-
json_file_name = "output/" + self.target + "_fwingsnumber.json"
1391+
json_file_name = output_dir + "/" + self.target + "_fwingsnumber.json"
13921392
with open(json_file_name, 'w') as f:
13931393
json.dump(json_data, f)
13941394

@@ -1463,14 +1463,14 @@ def get_fwersnumber(self):
14631463
t.add_row([str(node['id']), node['username'], node['full_name'], node['contact_phone_number']])
14641464

14651465
if self.writeFile:
1466-
file_name = "output/" + self.target + "_fwersnumber.txt"
1466+
file_name = output_dir + "/" + self.target + "_fwersnumber.txt"
14671467
file = open(file_name, "w")
14681468
file.write(str(t))
14691469
file.close()
14701470

14711471
if self.jsonDump:
14721472
json_data['followings_phone_numbers'] = results
1473-
json_file_name = "output/" + self.target + "_fwerssnumber.json"
1473+
json_file_name = output_dir + "/" + self.target + "_fwerssnumber.json"
14741474
with open(json_file_name, 'w') as f:
14751475
json.dump(json_data, f)
14761476

@@ -1525,14 +1525,14 @@ def get_comments(self):
15251525
print(t)
15261526

15271527
if self.writeFile:
1528-
file_name = "output/" + self.target + "_users_who_commented.txt"
1528+
file_name = output_dir + "/" + self.target + "_users_who_commented.txt"
15291529
file = open(file_name, "w")
15301530
file.write(str(t))
15311531
file.close()
15321532

15331533
if self.jsonDump:
15341534
json_data['users_who_commented'] = ssort
1535-
json_file_name = "output/" + self.target + "_users_who_commented.json"
1535+
json_file_name = output_dir + "/" + self.target + "_users_who_commented.json"
15361536
with open(json_file_name, 'w') as f:
15371537
json.dump(json_data, f)
15381538
else:

0 commit comments

Comments
 (0)