Added Self class

This commit is contained in:
Ali Parlakci
2018-07-10 01:30:50 +03:00
parent e3a97cc495
commit 4e8e59f527
3 changed files with 81 additions and 9 deletions

View File

@@ -11,7 +11,7 @@ import sys
import time
from pathlib import Path, PurePath
from src.downloader import Direct, Gfycat, Imgur
from src.downloader import Direct, Gfycat, Imgur, Self
from src.parser import LinkDesigner
from src.searcher import getPosts
from src.tools import (GLOBAL, createLogFile, jsonFile, nameCorrector,
@@ -451,7 +451,22 @@ def download(submissions):
print(exception)
FAILED_FILE.add({int(i+1):[str(exception),submissions[i]]})
downloadedCount -= 1
elif submissions[i]['postType'] == 'self':
print("SELF")
try:
Self(directory,submissions[i])
except FileAlreadyExistsError:
print("It already exists")
downloadedCount -= 1
duplicates += 1
# except Exception as exception:
# print(exception)
# FAILED_FILE.add({int(i+1):[str(exception),submissions[i]]})
# downloadedCount -= 1
else:
print("No match found, skipping...")
downloadedCount -= 1

View File

@@ -1,3 +1,4 @@
import io
import os
import sys
import urllib.request
@@ -16,7 +17,7 @@ except ModuleNotFoundError:
install("imgurpython")
from imgurpython import *
VanillaPrint = print
print = printToFile
def dlProgress(count, blockSize, totalSize):
@@ -233,8 +234,13 @@ class Gfycat:
fileDir = directory / (title+"_"+POST['postId']+POST['postExt'])
tempDir = directory / (title+"_"+POST['postId']+".tmp")
try:
getFile(fileDir,tempDir,POST['mediaURL'])
except FileNameTooLong:
fileDir = directory / (POST['postId']+POST['postExt'])
tempDir = directory / (POST['postId']+".tmp")
getFile(fileDir,tempDir,POST['mediaURL'])
getFile(fileDir,tempDir,POST['mediaURL'])
def getLink(self, url, query='<source id="mp4Source" src=', lineNumber=105):
"""Extract direct link to the video from page's source
@@ -282,4 +288,46 @@ class Direct:
tempDir = title+"_"+POST['postId']+".tmp"
tempDir = directory / tempDir
getFile(fileDir,tempDir,POST['postURL'])
try:
getFile(fileDir,tempDir,POST['postURL'])
except FileNameTooLong:
fileDir = directory / (POST['postId']+POST['postExt'])
tempDir = directory / (POST['postId']+".tmp")
getFile(fileDir,tempDir,POST['postURL'])
class Self:
def __init__(self,directory,post):
if not os.path.exists(directory): os.makedirs(directory)
title = nameCorrector(post['postTitle'])
print(title+"_"+post['postId']+".md")
fileDir = title+"_"+post['postId']+".md"
fileDir = directory / fileDir
if Path.is_file(fileDir):
raise FileAlreadyExistsError
self.writeToFile(fileDir,post)
@staticmethod
def writeToFile(directory,post):
content = ("## ["
+ post["postTitle"]
+ "]("
+ post["postURL"]
+ ")\n"
+ post["postContent"]
+ "\n\n---\n\n"
+ "submitted by [u/"
+ post["postSubmitter"]
+ "](https://www.reddit.com/user/"
+ post["postSubmitter"]
+ ")")
with io.open(directory,"w",encoding="utf-8") as FILE:
VanillaPrint(content,file=FILE)
print("Downloaded")

View File

@@ -308,6 +308,10 @@ def redditSearcher(posts,SINGLE_POST=False):
imgurCount = 0
global directCount
directCount = 0
global selfCount
selfCount = 0
allPosts = {}
postsFile = createLogFile("POSTS")
@@ -356,13 +360,15 @@ def redditSearcher(posts,SINGLE_POST=False):
printSubmission(submission,subCount,orderCount)
subList.append(details)
postsFile.add({subCount:[details]})
allPosts = {**allPosts,**details}
postsFile.add(allPosts)
if not len(subList) == 0:
print(
"\nTotal of {} submissions found!\n"\
"{} GFYCATs, {} IMGURs and {} DIRECTs\n"
.format(len(subList),gfycatCount,imgurCount,directCount)
"{} GFYCATs, {} IMGURs, {} DIRECTs and {} SELF POSTS\n"
.format(len(subList),gfycatCount,imgurCount,directCount,selfCount)
)
return subList
else:
@@ -372,6 +378,7 @@ def checkIfMatching(submission):
global gfycatCount
global imgurCount
global directCount
global selfCount
try:
details = {'postId':submission.id,
@@ -397,13 +404,15 @@ def checkIfMatching(submission):
imgurCount += 1
return details
elif isDirectLink(submission.url) is True:
elif isDirectLink(submission.url):
details['postType'] = 'direct'
directCount += 1
return details
elif submission.is_self:
details['postType'] = 'self'
details['postContent'] = submission.selftext
selfCount += 1
return details
def printSubmission(SUB,validNumber,totalNumber):