예제 #1
0
    def stream_submissions(stream):
        """
        Yield new Reddit submissions.

        Parameters
        ----------
        stream: Reddit stream instance

        Yields
        ------
        submission: Reddit submission object 
        """

        for submission in stream.submissions(skip_existing=True):
            yield Objectify().make_submission(True, submission)
예제 #2
0
    def stream_comments(stream):
        """
        Yield new Reddit comments.

        Parameters
        ----------
        stream: Reddit stream instance

        Yields
        ------
        submission: Reddit comment object 
        """

        for comment in stream.comments(skip_existing=True):
            yield Objectify().make_comment(comment, True)
예제 #3
0
파일: Comments.py 프로젝트: willtejeda/URS
    def sort_structured(submission, url):
        """
        Sort all comments in structured format. 
        
        Calls previously defined public methods:

            CommentNode()
            Forest()
            Forest().seed()

        Calls public methods from external modules:

            EncodeNode().encode()
            Objectify().make_comment()

        Parameters
        ----------
        submission: PRAW submission object
        url: str
            String denoting the submission's url

        Returns
        -------
        replies: list
            List containing `CommentNode`s
        """
        
        forest = Forest(submission, url)

        seed_status = Status(
            "Forest has fully matured.",
            Fore.CYAN + Style.BRIGHT + "Seeding Forest.",
            "cyan"
        )

        seed_status.start()
        for comment in submission.comments.list():
            comment_node = CommentNode(Objectify().make_comment(comment, False))
            EncodeNode().encode(comment_node)

            forest.seed(comment_node)

        seed_status.succeed()
        return forest.root.replies
예제 #4
0
    def format_submissions(submissions):
        """
        Format submissions to dictionary structure.

        Calls a public method from an external module:

            Objectify().make_submission()

        Parameters
        ----------
        submissions: PRAW ListingGenerator

        Returns
        -------
        submissions_list: list
            List containing formatted submissions
        """

        return [
            Objectify().make_submission(False, submission)
            for submission in submissions
        ]
예제 #5
0
파일: Comments.py 프로젝트: willtejeda/URS
    def sort_raw(all_comments, submission):
        """
        Sort all comments in raw format. 

        Calls a public method from an external module:

            Objectify().make_comment()
        
        Parameters
        ----------
        all_comments: list
            List containing all comments within a submission
        submission: PRAW submission object
            Reddit submission object

        Returns
        -------
        None
        """

        for comment in submission.comments.list():
            all_comments.append(Objectify().make_comment(comment, False))
예제 #6
0
    def test_make_comment_including_all(self):
        test_comment = CreateObject({
            "author":
            CreateObject({"name": "test"}),
            "body":
            "test body",
            "body_html":
            "<p>test body</p>",
            "created_utc":
            1617324719,
            "distinguished":
            None,
            "edited":
            1617324959,
            "id":
            "t35t",
            "is_submitter":
            True,
            "link_id":
            "t3_asdf",
            "parent_id":
            "t3_asdf",
            "score":
            666,
            "stickied":
            False,
            "submission":
            CreateObject({
                "author":
                CreateObject({"name": "submission_test_name"}),
                "created_utc":
                1617324719,
                "distinguished":
                None,
                "edited":
                False,
                "id":
                "test_submission_id",
                "is_original_content":
                True,
                "is_self":
                True,
                "link_flair_text":
                None,
                "locked":
                False,
                "name":
                "t3_test",
                "over_18":
                False,
                "num_comments":
                6,
                "permalink":
                "r/test_sub",
                "score":
                6,
                "selftext":
                "Some text here",
                "spoiler":
                False,
                "stickied":
                False,
                "subreddit":
                CreateObject({
                    "can_assign_link_flair": False,
                    "can_assign_user_flair": False,
                    "created_utc": 1617324719,
                    "description": "#Description here",
                    "description_html": "<p>Description here</p>",
                    "display_name": "TestSub",
                    "id": 66666,
                    "name": "t5_66666",
                    "over18": False,
                    "public_description": "A test Subreddit",
                    "spoilers_enabled": True,
                    "subscribers": 666,
                    "user_is_banned": False,
                    "user_is_moderator": False,
                    "user_is_subscriber": False
                }),
                "title":
                "A title here",
                "upvote_ratio":
                0.5,
                "url":
                "https://www.reddit.com/something"
            }),
            "subreddit_id":
            "test_id"
        })

        created_comment = Objectify().make_comment(test_comment, True)

        assert created_comment["author"] == "u/test"
        assert created_comment["body"] == "test body"
        assert created_comment["body_html"] == "<p>test body</p>"
        assert created_comment["created_utc"] == "04-02-2021 00:51:59"
        assert created_comment["distinguished"] == None
        assert created_comment["edited"] == "04-02-2021 00:55:59"
        assert created_comment["id"] == "t35t"
        assert created_comment["is_submitter"] == True
        assert created_comment["link_id"] == "t3_asdf"
        assert created_comment["parent_id"] == "t3_asdf"
        assert created_comment["score"] == 666
        assert created_comment["stickied"] == False
        assert created_comment["subreddit_id"] == "test_id"
        assert created_comment["type"] == "comment"

        assert created_comment["submission"][
            "author"] == "u/submission_test_name"
        assert created_comment["submission"][
            "created_utc"] == "04-02-2021 00:51:59"
        assert created_comment["submission"]["distinguished"] == None
        assert created_comment["submission"]["edited"] == False
        assert created_comment["submission"]["id"] == "test_submission_id"
        assert created_comment["submission"]["is_original_content"] == True
        assert created_comment["submission"]["is_self"] == True
        assert created_comment["submission"]["link_flair_text"] == None
        assert created_comment["submission"]["locked"] == False
        assert created_comment["submission"]["name"] == "t3_test"
        assert created_comment["submission"]["nsfw"] == False
        assert created_comment["submission"]["num_comments"] == 6
        assert created_comment["submission"]["permalink"] == "r/test_sub"
        assert created_comment["submission"]["score"] == 6
        assert created_comment["submission"]["selftext"] == "Some text here"
        assert created_comment["submission"]["spoiler"] == False
        assert created_comment["submission"]["stickied"] == False
        assert created_comment["submission"]["title"] == "A title here"
        assert created_comment["submission"]["upvote_ratio"] == 0.5
        assert created_comment["submission"][
            "url"] == "https://www.reddit.com/something"

        assert created_comment["submission"]["subreddit"][
            "can_assign_link_flair"] == False
        assert created_comment["submission"]["subreddit"][
            "can_assign_user_flair"] == False
        assert created_comment["submission"]["subreddit"][
            "created_utc"] == "04-02-2021 00:51:59"
        assert created_comment["submission"]["subreddit"][
            "description"] == "#Description here"
        assert created_comment["submission"]["subreddit"][
            "description_html"] == "<p>Description here</p>"
        assert created_comment["submission"]["subreddit"][
            "display_name"] == "TestSub"
        assert created_comment["submission"]["subreddit"]["id"] == 66666
        assert created_comment["submission"]["subreddit"]["name"] == "t5_66666"
        assert created_comment["submission"]["subreddit"]["nsfw"] == False
        assert created_comment["submission"]["subreddit"][
            "public_description"] == "A test Subreddit"
        assert created_comment["submission"]["subreddit"][
            "spoilers_enabled"] == True
        assert created_comment["submission"]["subreddit"]["subscribers"] == 666
        assert created_comment["submission"]["subreddit"][
            "user_is_banned"] == False
        assert created_comment["submission"]["subreddit"][
            "user_is_moderator"] == False
        assert created_comment["submission"]["subreddit"][
            "user_is_subscriber"] == False
예제 #7
0
    def test_make_submission_not_including_all_valid_author_edited(self):
        test_submission = CreateObject({
            "author":
            CreateObject({"name": "submission_test_name"}),
            "created_utc":
            1617324719,
            "distinguished":
            None,
            "edited":
            1617324959,
            "id":
            "test_submission_id",
            "is_original_content":
            True,
            "is_self":
            True,
            "link_flair_text":
            None,
            "locked":
            False,
            "name":
            "t3_test",
            "over_18":
            False,
            "num_comments":
            6,
            "permalink":
            "r/test_sub",
            "score":
            6,
            "selftext":
            "Some text here",
            "spoiler":
            False,
            "stickied":
            False,
            "title":
            "A title here",
            "upvote_ratio":
            0.5,
            "url":
            "https://www.reddit.com/something"
        })

        created_submission = Objectify().make_submission(
            False, test_submission)

        assert created_submission["author"] == "u/submission_test_name"
        assert created_submission["created_utc"] == "04-02-2021 00:51:59"
        assert created_submission["distinguished"] == None
        assert created_submission["edited"] == "04-02-2021 00:55:59"
        assert created_submission["id"] == "test_submission_id"
        assert created_submission["is_original_content"] == True
        assert created_submission["is_self"] == True
        assert created_submission["link_flair_text"] == None
        assert created_submission["locked"] == False
        assert created_submission["name"] == "t3_test"
        assert created_submission["nsfw"] == False
        assert created_submission["num_comments"] == 6
        assert created_submission["permalink"] == "r/test_sub"
        assert created_submission["score"] == 6
        assert created_submission["selftext"] == "Some text here"
        assert created_submission["spoiler"] == False
        assert created_submission["stickied"] == False
        assert created_submission["title"] == "A title here"
        assert created_submission["upvote_ratio"] == 0.5
        assert created_submission["url"] == "https://www.reddit.com/something"
예제 #8
0
    def test_make_multireddit_subreddits_present(self):
        test_multireddit = CreateObject({
            "can_edit":
            True,
            "copied_from":
            "somewhere",
            "created_utc":
            1617324719,
            "description_html":
            "<p>Multireddit description here</p>",
            "description_md":
            "#Multireddit description here",
            "display_name":
            "Test Multireddit",
            "name":
            "Test",
            "over_18":
            False,
            "subreddits": [
                CreateObject({
                    "can_assign_link_flair": False,
                    "can_assign_user_flair": False,
                    "created_utc": 1617324719,
                    "description": "#Description here",
                    "description_html": "<p>Description here</p>",
                    "display_name": "TestSub",
                    "id": 66666,
                    "name": "t5_66666",
                    "over18": False,
                    "public_description": "A test Subreddit",
                    "spoilers_enabled": True,
                    "subscribers": 666,
                    "user_is_banned": False,
                    "user_is_moderator": False,
                    "user_is_subscriber": False
                }),
                CreateObject({
                    "can_assign_link_flair": False,
                    "can_assign_user_flair": False,
                    "created_utc": 1617324719,
                    "description": "#Description here",
                    "description_html": "<p>Description here</p>",
                    "display_name": "TestSub",
                    "id": 66666,
                    "name": "t5_66666",
                    "over18": False,
                    "public_description": "A test Subreddit",
                    "spoilers_enabled": True,
                    "subscribers": 666,
                    "user_is_banned": False,
                    "user_is_moderator": False,
                    "user_is_subscriber": False
                }),
            ],
            "visibility":
            "Some visibility here"
        })

        created_multireddit = Objectify().make_multireddit(test_multireddit)

        assert created_multireddit["can_edit"] == True
        assert created_multireddit["copied_from"] == "somewhere"
        assert created_multireddit["created_utc"] == "04-02-2021 00:51:59"
        assert created_multireddit[
            "description_html"] == "<p>Multireddit description here</p>"
        assert created_multireddit[
            "description_md"] == "#Multireddit description here"
        assert created_multireddit["display_name"] == "Test Multireddit"
        assert created_multireddit["name"] == "Test"
        assert created_multireddit["nsfw"] == False
        assert created_multireddit["visibility"] == "Some visibility here"

        for subreddit in created_multireddit["subreddits"]:
            assert subreddit["can_assign_link_flair"] == False
            assert subreddit["can_assign_user_flair"] == False
            assert subreddit["created_utc"] == "04-02-2021 00:51:59"
            assert subreddit["description"] == "#Description here"
            assert subreddit["description_html"] == "<p>Description here</p>"
            assert subreddit["display_name"] == "TestSub"
            assert subreddit["id"] == 66666
            assert subreddit["name"] == "t5_66666"
            assert subreddit["nsfw"] == False
            assert subreddit["public_description"] == "A test Subreddit"
            assert subreddit["spoilers_enabled"] == True
            assert subreddit["subscribers"] == 666
            assert subreddit["user_is_banned"] == False
            assert subreddit["user_is_moderator"] == False
            assert subreddit["user_is_subscriber"] == False