Bongani  Ngema

Bongani Ngema

1675356084

Updoot: A Reddit Client Built for Android

Development

To build this app you need to have a Reddit account.
Once you have that, head over to this page to get a client id for the app.
Make a new installed type app with appropriate information.

Now on your development machine goto

  • Windows: C:\Users\<Your Username>\.gradle
  • Mac: /Users/<Your Username>/.gradle
  • Linux: /home/<Your Username>/.gradle

and then add the following 2 lines to gradle.properties file (create one if it doesn’t exist).

UPDOOT_CLIENT_ID = "xxxxxxxxxxxxxx"
UPDOOT_REDIRECT_URI = "https://redirecturl.com"

where xxxxxxxxxxxxxx is the client id that you got after creating a new installed type app
and https://redirecturl.com is the redirect url spicified while creating the installed type app.

For further information on Reddit’s oauth usage use this guide.

Draggable FAB for scrollingComments

Download Details:

Author: Adityam49
Source Code: https://github.com/adityam49/Updoot 
License: GPL-3.0 license

#kotlin #oauth #reddit #android 

Updoot: A Reddit Client Built for Android
Flutter App

Flutter App

1668392263

Build Responsive Reddit Clone with Flutter and Firebase | 9.5 Hour Full Stack Reddit Clone

9.5 Hour Full Stack Reddit Clone Tutorial | Flutter | Riverpod 2.0 | Social Media App

This is a Tutorial to build Responsive Reddit Clone, a Social Media application with Flutter as frontend framework and Firebase as Backend! This app consists of all the popular features from Reddit. One can login with Google or as Guest where there are guest restricted features, for example displaying the latest posts, dissimilar to what happens in Google Sign In, where we get posts from the communities we are a part of. With Google Sign In, one can also create and join communities, edit description and avatar of community, edit user profile, share text, link or image based posts, upvote, downvote, comment, award, delete, with moderator special features like adding other moderators and deleting any post. Also, one can toggle the theme in the application, from dark mode to light mode or vice versa. It is a completely responsive project, accessible on Android, iOS & Web.
In this process, learn about designing Responsive UI and manage routing with Flutter, writing backend code and complex queries with Firebase and State Management with Riverpod 2.0!

Timestamps:
(00:00:00) Introduction & Demo
(00:01:33) Flutter Project Setup
(00:05:38) Flutter Folder Structure Explanation
(00:09:31) Login Screen UI
(00:24:32) Firebase Setup
(00:36:00) Google Sign In Firebase Authentication
(01:05:03) Storing Data to Firestore
(01:21:18) Efficient Exception Handling Technique
(01:38:05) Storing Data to Provider
(01:52:20) Flutter Route Management
(01:56:57) Firebase State Persistence
(02:15:34) Home Screen AppBar UI
(02:18:40) Community List Flutter Drawer
(02:27:10) Create Community Screen UI
(02:34:48) Creating Communities and Storing to Firebase
(02:55:52) Displaying User Communities
(03:08:44) Community Profile UI
(03:31:31) Mod Tools UI
(03:39:40) Edit Community Screen UI
(04:00:00) Editing Community
(04:23:43) Searching Communities
(04:39:31) User Profile Drawer UI
(04:45:13) Logging User Out
(04:47:58) Joining & Leaving Communities
(04:57:50) Adding Moderators
(05:14:39) User Profile UI
(05:21:27) Edit User Profile
(05:38:14) Toggling Theme
(05:52:13) Bottom Nav Bar
(05:58:52) Add Post Screen UI
(06:05:50) Sharing Link, Image & Text Only Posts
(06:40:58) Fetching Feed Posts
(07:16:20) Deleting Posts
(07:21:30) Upvoting/Downvoting Posts
(07:29:25) Moderator Option on Posts
(07:35:40) Displaying Posts on User Profile
(07:45:19) Comments on Posts
(08:14:28) Updating User Karma Based on Activities
(08:24:54) Awarding the Post/User
(08:46:06) Firebase Login as Guest
(08:50:04) Restricting Guest Features
(09:04:50) Running on Web - Flutter Responsive UI
(09:34:59) Conclusion

Prerequisites: Flutter & Dart Basics

📌 Discord Server: https://discord.gg/Q8Rx8YWFVF 
Source Code: https://github.com/RivaanRanawat/flutter-reddit-clone 
Special Thanks: @Aadhi Arun

Resources:
- Colors: https://github.com/RivaanRanawat/flutter-reddit-clone/blob/master/lib/theme/pallete.dart
- Images: https://github.com/RivaanRanawat/flutter-reddit-clone/tree/master/assets/images
- Constants: https://github.com/RivaanRanawat/flutter-reddit-clone/blob/master/lib/core/constants/constants.dart
Upvote Icon Font: https://github.com/RivaanRanawat/flutter-reddit-clone/tree/master/assets/fonts
- Awards: https://reddit.fandom.com/wiki/Awards
- SHA-1 Key: https://stackoverflow.com/questions/51845559/generate-sha-1-for-flutter-react-native-android-native-app

Subscribe: https://www.youtube.com/c/RivaanRanawat/featured 

#flutter #reddit #firebase 

Build Responsive Reddit Clone with Flutter and Firebase | 9.5 Hour Full Stack Reddit Clone
Rupert  Beatty

Rupert Beatty

1666285080

RedditOS: A SwiftUI Reddit Client for MacOS

RedditOS

A SwiftUI Reddit client for macOS

About

This project is about two things:

  1. Building a good Reddit client.
  2. Building a good macOS application using mostly SwiftUI.

You'll need the latest version of Xcode 12 and macOS Big Sur to build it and enjoyt it. You can also download a pre built version in the release section if you don't want to build it youself.

I'm planning to drop Big Sur in the near future to focus execlusively on SwiftUI 3 + macOS Monterey. SwiftUI 3 add a ton of features, polish and performance improvements that this application can't live without.

Dev environment

If you want to login with your Reddit account building the project from the source you'll need to create a file secrets.plist in Packages/Backend/Sources/Backend/Resources with your Reddit app id as client_id key/value. Create an reddit app here and use redditos://auth as redirect url.

Image

Download Details:

Author: Dimillian
Source Code: https://github.com/Dimillian/RedditOS 
License: Apache-2.0 license

#swift #macos #reddit #swiftui 

RedditOS: A SwiftUI Reddit Client for MacOS
Python  Library

Python Library

1661223695

Create Reddit Videos Using Python with Just one Command

Reddit Video Maker Bot 🎥

All done WITHOUT video editing or asset compiling. Just pure ✨programming magic✨.

Motivation 🤔

These videos on TikTok, YouTube and Instagram get MILLIONS of views across all platforms and require very little effort. The only original thing being done is the editing and gathering of all materials...

... but what if we can automate that process? 🤔

Disclaimers 🚨

  • At the moment, this repository won't attempt to upload this content through this bot. It will give you a file that you will then have to upload manually. This is for the sake of avoiding any sort of community guideline issues.

Requirements

  • Python 3.9+
  • Playwright (this should install automatically in installation)

Video Explainer

lewisthumbnail

Installation 👩‍💻

  1. Clone this repository
  2. Run pip install -r requirements.txt
  3. Run python -m playwright install and python -m playwright install-deps

EXPERIMENTAL!!!!

On MacOS and Linux (debian, arch, fedora and centos, and based on those), you can run an install script that will automatically install steps 1 to 3. (requires bash)

bash <(curl -sL https://raw.githubusercontent.com/elebumm/RedditVideoMakerBot/master/install.sh)

This can also be used to update the installation

  1. Run python main.py
  2. Visit the Reddit Apps page., and set up an app that is a "script". Paste any URL in redirect URL. Ex:google.com
  3. The bot will ask you to fill in your details to connect to the Reddit API, and configure the bot to your liking
  4. Enjoy 😎
  5. If you need to reconfigure the bot, simply open the config.toml file and delete the lines that need to be changed. On the next run of the bot, it will help you reconfigure those options.

(Note if you got an error installing or running the bot try first rerunning the command with a three after the name e.g. python3 or pip3)

If you want to read more detailed guide about the bot, please refer to the documentation

Video

https://user-images.githubusercontent.com/66544866/173453972-6526e4e6-c6ef-41c5-ab40-5d275e724e7c.mp4

Contributing & Ways to improve 📈

In its current state, this bot does exactly what it needs to do. However, improvements can always be made!

I have tried to simplify the code so anyone can read it and start contributing at any skill level. Don't be shy :) contribute!

  •  Creating better documentation and adding a command line interface.
  •  Allowing users to choose a reddit thread instead of being randomized.
  •  Allowing users to choose a background that is picked instead of the Minecraft one.
  •  Allowing users to choose between any subreddit.
  •  Allowing users to change voice.
  •  Checks if a video has already been created
  •  Light and Dark modes
  •  NSFW post filter

Please read our contributing guidelines for more detailed information.

Developers and maintainers.

Elebumm (Lewis#6305) - https://github.com/elebumm (Founder)

Jason (JasonLovesDoggo#1904) - https://github.com/JasonLovesDoggo (Maintainer)

CallumIO (c.#6837) - https://github.com/CallumIO

Verq (Verq#2338) - https://github.com/CordlessCoder

LukaHietala (Pix.#0001) - https://github.com/LukaHietala

Freebiell (Freebie#6429) - https://github.com/FreebieII

Download details:

Author: elebumm
Source code: https://github.com/elebumm/RedditVideoMakerBot
License: GPL-3.0 license

#python #reddit

Create Reddit Videos Using Python with Just one Command
Hong  Nhung

Hong Nhung

1657062900

Cách Xây Dựng Reddit Web Scraper Trong Lập Trình Python

Reddit là ngôi nhà chung của vô số cộng đồng, các cuộc thảo luận có thể thực hiện được và các kết nối thực sự giữa con người với nhau. Reddit có một cộng đồng cho mọi sở thích, bao gồm tin tức nóng hổi, ​​thể thao, lý thuyết của người hâm mộ truyền hình và một luồng vô tận về những loài động vật đẹp nhất trên internet.

Sử dụng gói PRAW (Python Reddit API Wrapper) của Python, hướng dẫn này sẽ trình bày cách thu thập dữ liệu từ Reddit. PRAW là một trình bao bọc Python cho API Reddit, cho phép bạn thu thập dữ liệu từ các subreddits, phát triển bot và hơn thế nữa.

Vào cuối hướng dẫn này, chúng tôi sẽ cố gắng loại bỏ càng nhiều dữ liệu liên quan đến Python từ subreddit càng tốt và có quyền truy cập vào những gì người dùng Reddit thực sự nói về Python. Hãy bắt đầu vui vẻ!

Giới thiệu

Như tên cho thấy, nó là một kỹ thuật để "cạo" hoặc trích xuất dữ liệu từ các trang trực tuyến. Mọi thứ có thể nhìn thấy trên Internet bằng trình duyệt web, bao gồm cả hướng dẫn này, đều có thể được ghi vào đĩa cứng cục bộ. Có rất nhiều ứng dụng để tìm kiếm web. Thu thập dữ liệu là giai đoạn đầu tiên của bất kỳ phân tích dữ liệu nào. Internet là một kho lưu trữ khổng lồ về tất cả lịch sử và kiến ​​thức của nhân loại, và bạn có quyền trích xuất bất kỳ thông tin nào bạn muốn và sử dụng nó khi bạn thấy phù hợp.

Mặc dù có nhiều kỹ thuật khác nhau để thu thập dữ liệu từ Reddit, nhưng PRAW đơn giản hóa quá trình này. Nó tuân thủ tất cả các yêu cầu API của Reddit và loại bỏ sự cần thiết của các lệnh gọi ngủ trong mã của nhà phát triển. Trước khi cài đặt trình quét, xác thực cho trình quét Reddit phải được thiết lập. Các bước tương ứng được liệt kê bên dưới.

Các bước xác thực cho Reddit Scraper

Làm việc với PRAW yêu cầu xác thực. Để thực hiện điều này, chúng tôi sẽ thực hiện các bước sau:

  1. Theo liên kết này để truy cập tài khoản nhà phát triển Reddit.
  2. Cuộn xuống cuối trang để tìm thông tin “bạn có phải là nhà phát triển không?” để phát triển một ứng dụng.
  3. Bước tiếp theo là tạo ứng dụng, điền vào biểu mẫu và phát triển ứng dụng.
  4. Thao tác này sẽ đưa bạn đến một trang chứa tất cả thông tin cần thiết cho máy quét.

001 Scraper Bước 1

001 Scraper Bước 1

Đối với URL chuyển hướng, bạn nên chọn  http://localhost:8080. Khi hoàn tất, hãy nhấp vào nút tạo ứng dụng.

001 Scraper Bước 2

001 Scraper Bước 2

Bây giờ giai đoạn xác thực đã hoàn tất, chúng tôi sẽ chuyển sang triển khai trình quét Reddit trong bước tiếp theo.

Triển khai Scraper

Phần này sẽ giải thích mọi thứ bạn phải làm để có được dữ liệu mà hướng dẫn này nhằm đạt được. Chúng tôi sẽ bắt đầu bằng cách nhập tất cả các mô-đun và thư viện được yêu cầu vào tệp chương trình. Trước khi nhập thư viện PRAW, chúng ta phải cài đặt PRAW bằng cách thực hiện dòng sau tại dấu nhắc lệnh:

pip install praw

Bây giờ PRAW đã được cài đặt thành công, đoạn mã sau có thể được sử dụng để nhập PRAW cùng với các thư viện bắt buộc khác.

import praw
import pandas as pd
from praw.models import MoreComments

Quy trình xác thực mà chúng tôi vừa hoàn thành sẽ hữu ích ngay lập tức. Trước khi sử dụng PRAW để quét bất kỳ dữ liệu nào, chúng tôi phải xác thực trong phần mềm. Điều này có thể được thực hiện bằng cách tạo một phiên bản Reddit hoặc một phiên bản ủy quyền.

Trong hướng dẫn này, chúng tôi sẽ tạo một phiên bản được ủy quyền sẽ cho phép chúng tôi thực hiện bất kỳ hành động nào mà chúng tôi mong muốn với tài khoản Reddit của mình. Bạn chỉ cần cung cấp id ứng dụng khách, bí mật ứng dụng khách, tác nhân người dùng, tên người dùng và mật khẩu cho phiên bản. Kiểm tra đoạn mã bên dưới (điền các khóa của bạn thay vì các chuỗi trống).

reddit_authorized = praw.Reddit(client_id=" ",
                                client_secret=" ",
                                user_agent=" ",
                                username=" ",
                                password=" ")

Mục đích của chúng tôi là tìm kiếm những gì các redditors nói về Python trên nền tảng này nhưng trong trường hợp bạn thay đổi ý định và muốn biết về điều gì đó khác, chúng tôi sẽ lấy thông tin đầu vào về chủ đề này từ chính người dùng. Nhìn vào đoạn mã bên dưới.

name_subreddit = input("Enter the name of Sub-reddit : ")

Sử dụng đoạn mã dưới đây, tiếp theo, chúng tôi sẽ cố gắng giành quyền truy cập vào subreddit bằng cách sử dụng đối tượng cá thể mà chúng tôi đã tạo trước đó. Ngoài ra, chúng tôi sẽ cung cấp một số thông tin cơ bản về subreddit để kiểm tra xem chúng tôi có quyền truy cập hay không.

subreddit = reddit_authorized.subreddit(name_subreddit)
print("Display Name:", subreddit.display_name)
print("Title:", subreddit.title)
print("Description:", subreddit.description)

Chúng tôi sẽ cố gắng trích xuất các bài đăng hàng đầu hàng tuần, hàng tháng và hàng năm ở trên cùng trong các đoạn mã sắp tới để hiểu những bài đăng hàng đầu về chủ đề là gì. Chúng tôi sẽ trích xuất tiêu đề của bài đăng, số lượng nhận xét và URL của bài đăng với sự trợ giúp của vòng lặp for trên các đối tượng bài đăng được trích xuất.

Để phân tích dễ dàng hơn, chúng tôi sẽ chuyển đổi dữ liệu thành khung dữ liệu. Đoạn mã dưới đây sẽ trích xuất các bài đăng hàng đầu trong tuần về chủ đề này.

posts = subreddit.top("week")
 
posts_dict = {"Title": [],
              "Total Comments": [],
              "Post URL": []}
 
for post in posts:
    posts_dict["Title"].append(post.title)
    posts_dict["Total Comments"].append(post.num_comments)
    posts_dict["Post URL"].append(post.url)
 
top_posts_week = pd.DataFrame(posts_dict)
 
print("Number of posts extracted : ",top_posts_week.shape[0])
top_posts_week.head()

Đầu ra trông giống như hình dưới đây và bạn có thể thấy chúng tôi có thể trích xuất dữ liệu cho 100 bài đăng.

002 Bài đăng hàng tuần hàng đầu Reddit

002 Bài đăng hàng tuần hàng đầu Reddit

Đoạn mã tiếp theo sẽ nhận được các bài đăng hàng đầu của tháng về chủ đề này. Tất cả những gì bạn cần thay đổi là tham số của subreddit.tophàm.

posts = subreddit.top("month")
 
posts_dict = {"Title": [],
              "Total Comments": [],
              "Post URL": []}
 
for post in posts:
    posts_dict["Title"].append(post.title)
    posts_dict["Total Comments"].append(post.num_comments)
    posts_dict["Post URL"].append(post.url)
 
top_posts_month = pd.DataFrame(posts_dict)
 
print("Number of posts extracted : ",top_posts_month.shape[0])
top_posts_month.head()

Hãy xem các bài đăng hàng tháng hàng đầu được trích xuất thông qua mã.

003 Bài đăng hàng tháng hàng đầu Reddit

003 Bài đăng hàng tháng hàng đầu Reddit

Cuối cùng, đoạn mã sau sẽ nhận được các bài đăng hàng đầu của năm về chủ đề này. Một lần nữa, tất cả những gì bạn cần thay đổi là tham số của subreddit.tophàm.

posts = subreddit.top("year")
 
posts_dict = {"Title": [],
              "Total Comments": [],
              "Post URL": []}
 
for post in posts:
    posts_dict["Title"].append(post.title)
    posts_dict["Total Comments"].append(post.num_comments)
    posts_dict["Post URL"].append(post.url)
 
top_posts_year = pd.DataFrame(posts_dict)
 
print("Number of posts extracted : ",top_posts_year.shape[0])
top_posts_year.head()

Hãy xem các bài đăng hàng năm được trích xuất thông qua đoạn mã trên.

004 Bài đăng hàng năm hàng đầu Reddit

004 Bài đăng hàng năm hàng đầu Reddit

Cuối cùng, hãy cũng cố gắng trích xuất tất cả các nhận xét của một bài đăng với sự trợ giúp của URL của bài đăng bằng cách sử dụng đoạn mã bên dưới. Điều này sẽ giúp biết mọi người đang phản ứng như thế nào với các bài đăng trên Python.

Chúng tôi sẽ trích xuất các nhận xét tốt nhất từ ​​bài đăng đầu tiên của các bài báo Python phổ biến nhất được xuất bản mỗi tháng. Các MoreComments trong mô-đun praw sẽ được yêu cầu để đạt được điều này.

url = top_posts_month['Post URL'][0]
submission = reddit_authorized.submission(url=url)
 
post_comments = []
for comment in submission.comments:
    if type(comment) == MoreComments:
        continue
    post_comments.append(comment.body)
 
comments_df = pd.DataFrame(post_comments, columns=['comment'])
 
print("Number of Comments : ",comments_df.shape[0])
comments_df.head()

Hãy xem tất cả 44 bình luận được trích xuất cho bài đăng trong hình ảnh sau đây.

005 Nhận xét Đầu ra Reddit

005 Nhận xét Đầu ra Reddit

Sự kết luận

Praw là một trình bao bọc Python cho API Reddit, cho phép chúng tôi sử dụng API Reddit với giao diện Python đơn giản. API có thể được sử dụng để tìm kiếm web, tạo bot và các mục đích khác. Hướng dẫn này đề cập đến việc xác thực, truy xuất các bài đăng phổ biến nhất hàng tuần, hàng tháng và hàng năm từ một subreddit, cũng như trích xuất các nhận xét của bài đăng.

Liên kết: https://www.askpython.com/python/building-a-reddit-web-scraper-in-python-programming

#python #reddit

Cách Xây Dựng Reddit Web Scraper Trong Lập Trình Python
山田  千代

山田 千代

1657033980

如何在 Python 編程中構建 Reddit Web Scraper

Reddit 擁有無數社區、無休止的討論和真正的人際關係。Reddit 有一個滿足各種興趣的社區,包括突發新聞、體育、電視迷理論,以及無窮無盡的互聯網上最漂亮的動物。

使用 Python 的 PRAW(Python Reddit API Wrapper)包,本教程將演示如何從 Reddit 抓取數據。PRAW 是 Reddit API 的 Python 包裝器,允許您從 subreddit 中抓取數據、開發機器人等等。

在本教程結束時,我們將嘗試從 subreddit 中盡可能多地抓取與 Python 相關的數據,並獲得 Reddit 用戶對 Python 的真實評價。讓我們開始玩樂吧!

介紹

顧名思義,它是一種從在線頁面“抓取”或提取數據的技術。使用 Web 瀏覽器在 Internet 上可以看到的所有內容,包括本指南,都可以刮到本地硬盤上。網絡抓取有許多應用程序。數據捕獲是任何數據分析的第一階段。互聯網是所有人類歷史和知識的巨大存儲庫,您有權提取您想要的任何信息並按照您認為合適的方式使用它。

儘管有多種技術可以從 Reddit 中抓取數據,但 PRAW 簡化了該過程。它符合所有 Reddit API 要求,並消除了開發人員代碼中對睡眠調用的需要。在安裝爬蟲之前,必須設置 Reddit 爬蟲的身份驗證。下面列出了相應的步驟。

Reddit Scraper 的身份驗證步驟

使用 PRAW 需要身份驗證。為此,我們將採取以下步驟:

  1. 按照此鏈接訪問 Reddit 開發者帳戶。
  2. 滾動到頁面底部以找到“您是開發人員嗎?” 按鈕來開發應用程序。
  3. 下一步是構建應用程序、填寫表單並開發應用程序。
  4. 這將帶您進入包含刮板所需的所有信息的頁面。

001 刮板步驟 1

001 刮板步驟 1

對於重定向 URL,您應該選擇 http://localhost:8080. 完成後單擊創建應用程序按鈕。

001 刮板步驟 2

001 刮板步驟 2

現在身份驗證階段已經完成,我們將在下一步中繼續實施 Reddit 爬蟲。

刮板的實施

這部分將解釋為獲取本教程旨在獲取的數據所必須做的一切。我們將首先將所有必需的模塊和庫導入程序文件。在導入 PRAW 庫之前,我們必須通過在命令提示符處執行以下行來安裝 PRAW:

pip install praw

現在 PRAW 已成功安裝,可以使用以下代碼段將 PRAW 與其他所需的庫一起導入。

import praw
import pandas as pd
from praw.models import MoreComments

我們剛剛完成的身份驗證程序將立即有用。在使用 PRAW 抓取任何數據之前,我們必須在軟件中進行身份驗證。這可以通過創建 Reddit 實例或授權實例來完成。

在本指南中,我們將創建一個授權實例,允許我們使用我們的 Reddit 帳戶執行我們希望執行的任何操作。您只需向實例提供客戶端 ID、客戶端密碼、用戶代理、用戶名和密碼。檢查下面的代碼片段(填寫您的密鑰而不是空白字符串)。

reddit_authorized = praw.Reddit(client_id=" ",
                                client_secret=" ",
                                user_agent=" ",
                                username=" ",
                                password=" ")

我們的目標是找到 redditor 在平台上談論 Python 的內容,但如果您改變主意並想了解其他內容,我們將從用戶本身獲取有關該主題的輸入。看看下面的代碼片段。

name_subreddit = input("Enter the name of Sub-reddit : ")

使用下面的代碼,我們接下來將嘗試使用我們之前生成的實例對象來訪問 subreddit。此外,我們將提供有關 subreddit 的一些基本信息,以檢查我們是否可以訪問。

subreddit = reddit_authorized.subreddit(name_subreddit)
print("Display Name:", subreddit.display_name)
print("Title:", subreddit.title)
print("Description:", subreddit.description)

我們將嘗試在即將發布的代碼片段中提取最熱門的每週、每月和每年的帖子,以了解有關該主題的最熱門帖子是什麼。我們將在提取的帖子對像上的 for 循環的幫助下提取帖子的標題、評論數和帖子的 URL。

為了使分析更容易,我們將數據轉換為數據框。下面的代碼將提取本週關於該主題的熱門帖子。

posts = subreddit.top("week")
 
posts_dict = {"Title": [],
              "Total Comments": [],
              "Post URL": []}
 
for post in posts:
    posts_dict["Title"].append(post.title)
    posts_dict["Total Comments"].append(post.num_comments)
    posts_dict["Post URL"].append(post.url)
 
top_posts_week = pd.DataFrame(posts_dict)
 
print("Number of posts extracted : ",top_posts_week.shape[0])
top_posts_week.head()

輸出如下所示,您可以看到我們能夠提取 100 個帖子的數據。

002 每週熱門帖子 Reddit

002 每週熱門帖子 Reddit

下一個代碼片段將獲得本月有關該主題的熱門帖子。您需要更改的只是subreddit.top函數的參數。

posts = subreddit.top("month")
 
posts_dict = {"Title": [],
              "Total Comments": [],
              "Post URL": []}
 
for post in posts:
    posts_dict["Title"].append(post.title)
    posts_dict["Total Comments"].append(post.num_comments)
    posts_dict["Post URL"].append(post.url)
 
top_posts_month = pd.DataFrame(posts_dict)
 
print("Number of posts extracted : ",top_posts_month.shape[0])
top_posts_month.head()

查看通過代碼提取的每月熱門帖子。

003 每月熱門帖子 Reddit

003 每月熱門帖子 Reddit

最後,以下代碼片段將獲得該主題的年度熱門帖子。同樣,您需要更改的只是subreddit.top函數的參數。

posts = subreddit.top("year")
 
posts_dict = {"Title": [],
              "Total Comments": [],
              "Post URL": []}
 
for post in posts:
    posts_dict["Title"].append(post.title)
    posts_dict["Total Comments"].append(post.num_comments)
    posts_dict["Post URL"].append(post.url)
 
top_posts_year = pd.DataFrame(posts_dict)
 
print("Number of posts extracted : ",top_posts_year.shape[0])
top_posts_year.head()

查看通過上面的代碼提取的年度熱門帖子。

004 年度熱門帖子

004 年度熱門帖子

最後,讓我們也嘗試使用下面的代碼片段在帖子 URL 的幫助下提取帖子的所有評論。這將有助於了解人們對 Python 上的帖子的反應。

我們將從每月發布的最流行的 Python 文章的初始帖子中提取最佳評論。將需要 praw 模塊下的 MoreComments 來實現這一點。

url = top_posts_month['Post URL'][0]
submission = reddit_authorized.submission(url=url)
 
post_comments = []
for comment in submission.comments:
    if type(comment) == MoreComments:
        continue
    post_comments.append(comment.body)
 
comments_df = pd.DataFrame(post_comments, columns=['comment'])
 
print("Number of Comments : ",comments_df.shape[0])
comments_df.head()

查看下圖中為該帖子提取的所有 44 條評論。

005 條評論 Reddit 輸出

005 條評論 Reddit 輸出

結論

Praw 是 Reddit API 的 Python 包裝器,允許我們通過簡單的 Python 接口使用 Reddit API。該 API 可用於網頁抓取、機器人創建和其他目的。本教程涉及身份驗證,從 subreddit 中檢索最受歡迎的每週、每月和每年的帖子,以及提取帖子的評論。

鏈接:https ://www.askpython.com/python/building-a-reddit-web-scraper-in-python-programming

#python #reddit

如何在 Python 編程中構建 Reddit Web Scraper
Thierry  Perret

Thierry Perret

1657019469

Comment créer un grattoir Web Reddit en programmation Python

Reddit abrite d'innombrables communautés, des discussions interminables et de véritables relations humaines. Reddit a une communauté pour tous les intérêts, y compris les dernières nouvelles, les sports, les théories des fans de télévision et un flux infini des plus beaux animaux d'Internet.

En utilisant le package PRAW (Python Reddit API Wrapper) de Python, ce didacticiel montrera comment récupérer des données de Reddit. PRAW est un wrapper Python pour l'API Reddit, vous permettant de récupérer des données à partir de sous-reddits, de développer des bots et bien plus encore.

À la fin de ce didacticiel, nous essaierons d'extraire autant de données liées à Python que possible du subreddit et d'accéder à ce que les utilisateurs de Reddit disent vraiment à propos de Python. Commençons à nous amuser !

Introduction

Comme son nom l'indique, il s'agit d'une technique de "grattage" ou d'extraction de données à partir de pages en ligne. Tout ce qui peut être vu sur Internet à l'aide d'un navigateur Web, y compris ce guide, peut être récupéré sur un disque dur local. Il existe de nombreuses applications pour le web scraping. La saisie des données est la première phase de toute analyse de données. Internet est un dépôt massif de toute l'histoire et des connaissances humaines, et vous avez le pouvoir d'extraire toutes les informations que vous désirez et de les utiliser comme bon vous semble.

Bien qu'il existe différentes techniques pour récupérer les données de Reddit, PRAW simplifie le processus. Il respecte toutes les exigences de l'API Reddit et élimine le besoin d'appels de veille dans le code du développeur. Avant d'installer le scraper, l'authentification pour le scraper Reddit doit être configurée. Les étapes respectives sont énumérées ci-dessous.

Étapes d'authentification pour Reddit Scraper

Travailler avec PRAW nécessite une authentification. Pour ce faire, nous prendrons les mesures suivantes :

  1. Suivez ce lien pour accéder au compte développeur Reddit.
  2. Faites défiler vers le bas de la page pour localiser le "êtes-vous un développeur?" bouton pour développer une application.
  3. L'étape suivante consiste à créer une application, à remplir le formulaire et à développer l'application.
  4. Cela vous amènera à une page contenant toutes les informations requises pour le scraper.

001 Grattoir Étape 1

001 Grattoir Étape 1

Pour l'URL de redirection, vous devez choisir  http://localhost:8080. Lorsque vous avez terminé, cliquez sur le bouton Créer une application.

001 Grattoir Étape 2

001 Grattoir Étape 2

Maintenant que la phase d'authentification est terminée, nous allons passer à l'implémentation du scraper Reddit à l'étape suivante.

Mise en place du Grattoir

Cette partie vous expliquera tout ce que vous devez faire pour obtenir les données que ce tutoriel vise à obtenir. Nous allons commencer par importer tous les modules et bibliothèques requis dans le fichier programme. Avant d'importer la bibliothèque PRAW, nous devons installer PRAW en exécutant la ligne suivante à l'invite de commande :

pip install praw

Maintenant que PRAW a été installé avec succès, l'extrait de code suivant peut être utilisé pour importer PRAW avec d'autres bibliothèques requises.

import praw
import pandas as pd
from praw.models import MoreComments

La procédure d'authentification que nous venons de terminer vous sera utile immédiatement. Avant d'utiliser PRAW pour récupérer des données, nous devons nous authentifier dans le logiciel. Cela peut être accompli en créant une instance Reddit ou une instance autorisée.

Dans ce guide, nous allons créer une instance autorisée qui nous permettra d'effectuer toute action que nous souhaitons avec notre compte Reddit. Il vous suffit de fournir un ID client, un secret client, un agent utilisateur, un nom d'utilisateur et un mot de passe à l'instance. Examinez le fragment de code ci-dessous (renseignez vos clés au lieu des chaînes vides).

reddit_authorized = praw.Reddit(client_id=" ",
                                client_secret=" ",
                                user_agent=" ",
                                username=" ",
                                password=" ")

Notre objectif est de trouver ce que les redditors parlent de Python sur la plate-forme, mais au cas où vous changeriez d'avis et voudriez savoir autre chose, nous prendrons les commentaires sur le sujet de l'utilisateur lui-même. Regardez l'extrait de code ci-dessous.

name_subreddit = input("Enter the name of Sub-reddit : ")

En utilisant le code ci-dessous, nous tenterons ensuite d'accéder au subreddit en utilisant l'objet d'instance que nous avons généré auparavant. De plus, nous fournirons quelques informations de base sur le subreddit pour vérifier que nous y avons accès.

subreddit = reddit_authorized.subreddit(name_subreddit)
print("Display Name:", subreddit.display_name)
print("Title:", subreddit.title)
print("Description:", subreddit.description)

Nous essaierons d'extraire les meilleurs messages hebdomadaires, mensuels et annuels en haut dans les extraits de code à venir pour comprendre quels sont les messages les plus importants sur le sujet. Nous allons extraire le titre de la publication, le nombre de commentaires et l'URL de la publication à l'aide d'une boucle for sur les objets de publication extraits.

Pour faciliter l'analyse, nous allons convertir les données en une trame de données. Le code ci-dessous extraira les meilleurs messages de la semaine sur le sujet.

posts = subreddit.top("week")
 
posts_dict = {"Title": [],
              "Total Comments": [],
              "Post URL": []}
 
for post in posts:
    posts_dict["Title"].append(post.title)
    posts_dict["Total Comments"].append(post.num_comments)
    posts_dict["Post URL"].append(post.url)
 
top_posts_week = pd.DataFrame(posts_dict)
 
print("Number of posts extracted : ",top_posts_week.shape[0])
top_posts_week.head()

La sortie ressemble un peu à celle illustrée ci-dessous et vous pouvez voir que nous avons pu extraire des données pour 100 messages.

002 Meilleurs messages hebdomadaires Reddit

002 Meilleurs messages hebdomadaires Reddit

Le prochain extrait de code obtiendra les meilleurs articles du mois sur le sujet. Tout ce que vous devez changer est le paramètre de la subreddit.topfonction.

posts = subreddit.top("month")
 
posts_dict = {"Title": [],
              "Total Comments": [],
              "Post URL": []}
 
for post in posts:
    posts_dict["Title"].append(post.title)
    posts_dict["Total Comments"].append(post.num_comments)
    posts_dict["Post URL"].append(post.url)
 
top_posts_month = pd.DataFrame(posts_dict)
 
print("Number of posts extracted : ",top_posts_month.shape[0])
top_posts_month.head()

Jetez un œil aux meilleurs messages mensuels extraits via le code.

003 Meilleurs messages mensuels Reddit

003 Meilleurs messages mensuels Reddit

Enfin, l'extrait de code suivant obtiendra les meilleurs articles de l'année sur le sujet. Encore une fois, tout ce que vous devez changer est le paramètre de la subreddit.topfonction.

posts = subreddit.top("year")
 
posts_dict = {"Title": [],
              "Total Comments": [],
              "Post URL": []}
 
for post in posts:
    posts_dict["Title"].append(post.title)
    posts_dict["Total Comments"].append(post.num_comments)
    posts_dict["Post URL"].append(post.url)
 
top_posts_year = pd.DataFrame(posts_dict)
 
print("Number of posts extracted : ",top_posts_year.shape[0])
top_posts_year.head()

Jetez un œil aux meilleurs messages annuels extraits via le code ci-dessus.

004 Meilleures publications annuelles Reddit

004 Meilleures publications annuelles Reddit

Enfin, essayons également d'extraire tous les commentaires d'un message à l'aide de l'URL du message en utilisant l'extrait de code ci-dessous. Cela aidera à savoir comment les gens réagissent aux messages sur Python.

Nous extrairons les meilleurs commentaires de la publication initiale des articles Python les plus populaires publiés chaque mois. Les MoreComments sous le module praw seront nécessaires pour y parvenir.

url = top_posts_month['Post URL'][0]
submission = reddit_authorized.submission(url=url)
 
post_comments = []
for comment in submission.comments:
    if type(comment) == MoreComments:
        continue
    post_comments.append(comment.body)
 
comments_df = pd.DataFrame(post_comments, columns=['comment'])
 
print("Number of Comments : ",comments_df.shape[0])
comments_df.head()

Jetez un œil aux 44 commentaires extraits pour le message dans l'image suivante.

005 Commentaires Sortie Reddit

005 Commentaires Sortie Reddit

Conclusion

Praw est un wrapper Python pour l'API Reddit, nous permettant d'utiliser l'API Reddit avec une interface Python simple. L'API peut être utilisée pour le scraping Web, la création de bots et à d'autres fins. Ce tutoriel a abordé l'authentification, la récupération des publications hebdomadaires, mensuelles et annuelles les plus populaires à partir d'un subreddit, ainsi que l'extraction des commentaires de la publication.

Lien : https://www.askpython.com/python/building-a-reddit-web-scraper-in-python-programming

#python #reddit

Comment créer un grattoir Web Reddit en programmation Python
Jane  Reid

Jane Reid

1654567200

A Simple and Complete Social Network Based on Reddit

A simple and complete social network based on Reddit

README

Título: Labeddit

Descrição: Uma rede social simples e completa realizada com base no Reddit. Desenvolvido na 13º semana do curso de Web Fullstack da Labenu.

Funcionalidades: Cadastro e login de usuários. Criação de post, comentários em posts, curtidas, descurtidas e exclusão das mesmas interações.

Ferramentas, dependências e libs instaladas: React JS, Axios, Styled-Components, React Router Dom e Material UI.

Deploy: http://labeddit-guilhermeamaral.surge.sh/

Rodando o projeto localmente: Faça o clone do repositório, navegue ate a pasta destino, utilize o comando npm install, rode o projeto com o comando npm run start.


Author: GuilhermeAAmaral
Source code: https://github.com/GuilhermeAAmaral/labeddit
License: MIT license

#react-native #react #reddit 

A Simple and Complete Social Network Based on Reddit
 iOS App Dev

iOS App Dev

1653980820

Reddit Swiftui: A Cross-platform Reddit Client Built in SwiftUI

Note: This project is far from complete. It still lacks many features of your typical Reddit client and has bugs (partly due to SwiftUI, but I'll take credit for some of them)

To show off SwiftUI's strength in cross-platform development, I did not use Mac Catalyst for this project. Instead, common UI code is shared between iOS, macOS, and watchOS.

Project Structure

  • Shared - Models, helpers, API, and any shared Views.
  • Reddit-[PLATFORM] - Each target folder contains a Views and Representable folder. Views holds platform-specific views, and Representable contains UIViewRepresentables or NSViewRepresentables.

macOS Specific Features

I've added several things to make the macOS app stand out:

  1. Double click - You can double click on a post to open a new window for the detail view.
  2. NSToolbar - This is implemented entirely in the AppDelegate, and uses standard Cocoa code which interfaces with the SwiftUI views.
  3. TouchBar - TODO

SF Symbols

Because macOS doesn't support SF Symbols, I have created the following extension to make sure shared code works. I would like to replace this with custom icons for macOS that it loads from XCAssets eventually:

/// `SwiftUI` compatibility
#if os(macOS)
extension Image {
    init(systemName: String) {
        self.init(nsImage: NSImage())
    }
}
#endif

Download Details:
Author: carson-katri
Source Code: https://github.com/carson-katri/reddit-swiftui
License: MIT license

#swift #swiftui  #ios  #mobileapp #reddit 

Reddit Swiftui: A Cross-platform Reddit Client Built in SwiftUI

Demo for Reddit scaling on Solana

Reddit Demo

Source for Solana Reddit demo, which uses the solana token program to run the Reddit benchmark challenge. This is a fork of the solana-program-library repo.

Build the token program

These programs cannot be built directly via cargo and instead require the build scripts located in Solana's BPF-SDK.

Download or update the BPF-SDK by running:

$ ./do.sh update

Build the token program:

$ ./do.sh build <program>

Running the token demo

Set the RPC_URL environment variable to point to the cluster desired:

export RPC_URL=https://testnet.solana.com
export RPC_URL=https://api.mainnet-beta.solana.com

You'll need npm installed, then perform the following:

$ cd token/js
$ npm install
$ npm run bench -- --num_accounts 1 --num_transfer 1 --num_burn 1 --num_mint 1 --payer_account payer.json --id 0 --num_payers 4

That should print a message like:

Loading payer account from payer.json loaded 9Rd5aWW84WtnM2QznNHqN1FmtEyb6hUf4eewp9BFBvE1

If the network you are running on doesn't have a faucet, then fund that key with some sol, then run the program again, adjusting the arguments to the desired accounts/tranfers to generate:

$ npm run bench -- --num_accounts 10 --num_transfer 1000 --num_burn 1000 --num_mint 10 --payer_account payer.json --id 0 --num_payers 4

To run more than one instance, there is another script run.sh:

./run.sh <number-of-instances>

That will run a number of demo programs in parallel.

Download Details:
Author: solana-lab
Source Code: https://github.com/solana-labs/reddit-scaling-demo
License: View license

#solana  #blockchain  #smartcontract  #dapp #reddit #rust #javascript 

Demo for Reddit scaling on Solana

Punith Raaj

1649160871

Flutter UI - Animated Login, Signup Screen UI

Flutter UI - Animated Login, Signup Screen UI

We are going to build it from scratch and understand various widgets that you can use to build an elegant screen. You might have already seen some beautiful screens been designed using flutter. Flutter gives you the flexibility to design your own custom widgets and import them to build sleek designs.

► Timestamps 
0:00 Intro 
0:30 Project Creation 
02:00 Login Screen Configuration 
05:00 Animated Container 
08:00 Login Screen Design 
18:00 Sign Up Screen Design

Click here to Subscribe to https://www.youtube.com/c/TheFlutterandDartAcademy
Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single code base. to know more visit flutter.dev

Have questions/queries? 💬 Comment below I will be happy to help 
► Playlist: https://youtube.com/playlist?list=PL6vcAuTKAaYchhPbIw979kuHHLtD8q1Bq

► Social Media 
GitHub: https://github.com/Punithraaj/Welcome-Login-Signup-Screen-Flutter/tree/concept2 
LinkedIn: https://www.linkedin.com/in/roaring-r...
Twitter: https://twitter.com/roaringraaj
Facebook: https://www.facebook.com/flutterdartacademy
Reddit: https://www.reddit.com/r/flutteranddartacademy/

► RESOURCES 
Complete Hotel Booking App UI Design Tutorial: https://youtube.com/playlist?list=PL6vcAuTKAaYdboy1OOxnMekOEuRzHUvR6
Complete Tik Tok Clone App Tutorial: https://youtube.com/playlist?list=PL6vcAuTKAaYe_9KQRsxTsFFSx78g1OluK
Complete Online Books Store Flutter UI Tutorial: https://youtube.com/playlist?list=PL6vcAuTKAaYdRkc_jt08x23plwGAYiGTU
Flutter UI Tutorial: https://youtube.com/playlist?list=PL6vcAuTKAaYeKyXAwzB9JnuR5l0dOlNRh
Flutter Integration Tutorial: https://youtube.com/playlist?list=PL6vcAuTKAaYdpG5qfCjSEgugvvhqFemes

I hope you liked it, and don't forget to like,comment, subscribe, share this video with your friends, and star the repository on GitHub! 
⭐️ Thanks for watching the video and for more updates don't forget to click on the notification. 
⭐️Please comment your suggestion for my improvement. 
⭐️Remember to like, subscribe, share this video, and star the repo on Github :)

Hope you enjoyed this video! If you loved it, you can Buy me a coffee : https://www.buymeacoffee.com/roaringraaj
LIKE & SHARE & ACTIVATE THE BELL Thanks For Watching :-) 
#login  #signup  #flutter  #animation  #flutterdev  #reddit  #flutter mobile development  #morioh 

Flutter UI - Animated Login, Signup Screen UI
Bertrand  Upton

Bertrand Upton

1646946000

PRAW: The Python Reddit API Wrapper

PRAW, an acronym for "Python Reddit API Wrapper", is a Python package that allows for simple access to Reddit's API. PRAW aims to be easy to use and internally follows all of Reddit's API rules. With PRAW there's no need to introduce sleep calls in your code. Give your client an appropriate user agent and you're set.

Installation

PRAW is supported on Python 3.7+. The recommended way to install PRAW is via pip.

pip install praw

To install the latest development version of PRAW run the following instead:

pip install --upgrade https://github.com/praw-dev/praw/archive/master.zip

For instructions on installing Python and pip see "The Hitchhiker's Guide to Python" Installation Guides.

Quickstart

Assuming you already have a credentials for a script-type OAuth application you can instantiate an instance of PRAW like so:

import praw

reddit = praw.Reddit(
    client_id="CLIENT_ID",
    client_secret="CLIENT_SECRET",
    password="PASSWORD",
    user_agent="USERAGENT",
    username="USERNAME",
)

With the reddit instance you can then interact with Reddit:

# Create a submission to r/test
reddit.subreddit("test").submit("Test Submission", url="https://reddit.com")

# Comment on a known submission
submission = reddit.submission(url="https://www.reddit.com/comments/5e1az9")
submission.reply("Super rad!")

# Reply to the first comment of a weekly top thread of a moderated community
submission = next(reddit.subreddit("mod").top(time_filter="week"))
submission.comments[0].reply("An automated reply")

# Output score for the first 256 items on the frontpage
for submission in reddit.front.hot(limit=256):
    print(submission.score)

# Obtain the moderator listing for r/test
for moderator in reddit.subreddit("test").moderator():
    print(moderator)

Please see PRAW's documentation for more examples of what you can do with PRAW.

Discord Bots and Asynchronous Environments

If you plan on using PRAW in an asynchronous environment, (e.g., discord.py, asyncio) it is strongly recommended to use Async PRAW. It is the official asynchronous version of PRAW and its usage is similar and has the same features as PRAW.

PRAW Discussion and Support

For those new to Python, or would otherwise consider themselves a Python beginner, please consider asking questions on the r/learnpython subreddit. There are wonderful people there who can help with general Python and simple PRAW related questions.

Otherwise, there are a few official places to ask questions about PRAW:

r/redditdev is the best place on Reddit to ask PRAW related questions. This subreddit is for all Reddit API related discussion so please tag submissions with [PRAW]. Please perform a search on the subreddit first to see if anyone has similar questions.

Real-time chat can be conducted via the PRAW Slack Organization (please create an issue if that invite link has expired).

Please do not directly message any of the contributors via Reddit, email, or Slack unless they have indicated otherwise. We strongly encourage everyone to help others with their questions.

Please file bugs and feature requests as issues on GitHub after first searching to ensure a similar issue was not already filed. If such an issue already exists please give it a thumbs up reaction. Comments to issues containing additional information are certainly welcome.

Note

This project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Documentation

PRAW's documentation is located at https://praw.readthedocs.io/.

History

August 2010: Timothy Mellor created a github project called reddit_api.

March 2011: The Python package reddit was registered and uploaded to pypi.

December 2011: Bryce Boe took over as maintainer of the reddit package.

June 2012: Bryce renamed the project PRAW and the repository was relocated to the newly created praw-dev organization on GitHub.

February 2016: Bryce began work on PRAW4, a complete rewrite of PRAW.

License

PRAW's source (v4.0.0+) is provided under the Simplified BSD License.

  • Copyright ©, 2016, Bryce Boe

Earlier versions of PRAW were released under GPLv3.


Author: praw-dev
Source Code: https://github.com/praw-dev/praw
License: BSD-2-Clause License

#python #reddit 

PRAW: The Python Reddit API Wrapper
Brielle  Maggio

Brielle Maggio

1645535280

How to Build A Reddit Video Downloader App with Streamlit and Python

In this Python tutorial, You'll learn how to build a Reddit Video downloader App with Streamlit and Python. This is a simple tutorial where I livecode to show you how to fetch the Reddit Video link and download the video using Requests library. 
At the end of this video, we'll learn to deploy this web app on Hugging Face Spaces.

Code - https://github.com/amrrs/reddit-video-downloader-python

#python #streamlit #reddit 

How to Build A Reddit Video Downloader App with Streamlit and Python

Flask Reddit: An Extendable and Minimalist Reddit Clone

flask_reddit

flask_reddit is an extendable + minimalist Reddit clone.

This was built so beginners who want a standard CRUD + reddit-like application can quickly get to work.

We utilize:

  • flask as the web framework.
  • nginx as the HTTP server
  • gunicon as the wsgi server.
  • MySQL for our database
  • flask-sqlalchemy as our ORM.
  • bootstrap-journal theme makes us beautiful.
  • virtualenv emcompasses everything.
  • supervisord makes sure our service never crashes.

And thats pretty much it!

All of the configutations are in this repository. Deployment instructions will be out soon.

Features

  • threaded comments
  • up voting
  • subreddits
  • user karma
  • search
  • rate limiting
  • ajax form posting
  • user profiles

Build Instructions

  • Set up an instance of MySQL on your server. Note your username and password.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install mysql-server libmysqlclient-dev
  • Set up an instance of nginx on your server. I've provided the .conf scripts needed for our servers in the /server directory.

sudo apt-get install nginx

  • Configure your nginx settings located in flask_reddit/server/nginx.conf.
  • Add your settings into your global conf file located in /etc/nginx/nginx.conf
  • Restart nginx to recognize your settings sudo service nginx restart
  • Set up supervisord to monitor your project to make sure it never crashes. Supervisor is also convenient for simply restarting/starting your project with ease.

sudo apt-get install supervisor

  • When Supervisor is installed you can give it programs to start and watch by creating config files in the /etc/supervisor/conf.d directory. I've provided the conf file which we use in the root directory of this repo as supervisor.conf. An example supervisor command would be running supervisorctl restart YOUR_APP_NAME to restart gunicorn and bring up new changes.
  • Install virtualenv and set up a project root where ever you want.
sudo apt-get install python-virtualenv;
cd /path/to/project;
virtualenv reddit-env;
cd reddit-env;
source bin/activate; # viola, you are now in an enclosed python workspace.
  • Download the repository and install all of the required python modules which this server uses.
git clone https://github.com/codelucas/flask_reddit.git;
cd flask_reddit;
pip install -r requirements.txt
  • Due to sensitive configuration information, I have hidden my personal config.py file in the gitignore. But, I have provided a clean and easy to use config template in this repo named app_config.py.
  • Fill out the flask_reddit/app_config.py file with your own information and then rename it to config.py so flask recognizes it by using mv app_config.py config.py. Please be sure to fill out the mysql db settings similarly to how you set it up!, username, pass, etc
  • Run the kickstart.py script to build the first user and subreddits.

python2.7 kickstart.py

  • flask_reddit has tasks which must occur on regular time intervals. To make this happen, we use the crontab, which is present on UNIX systems.

A crontab is a dash which allows you to specify what programs to run and how often. I've provided flask_reddit's example crontab in the root directory as jobs.cron.

To view your current crontab, run crontab -l. To edit your crontab, run crontab -e.

  • Paste the contents of jobs.cron into your crontab by running crontab -e and pasting! More directions are present in the jobs.cron file.
  • Run the gunicorn server. You won't have to do this ever again if supervisor is set up properly.

sudo sh run_gunicorn.sh

Note that we have now deployed two servers: nginx and gunicorn. nginx is our internet facing HTTP server on port 80 while gunicorn is our wsgi server which is serving up our flask python application locally. nginx reads client requests and decides which requests to foreward to our gunicorn server. For example, nginx serves static content like images very well but it forwards url routes to the homepage to gunicorn.

For a full list of details, view our configs at server/nginx.conf and server/gunicorn_config.py.

Note, for this build to work there are paths that you must change in the wsgi.py file, the server configs located in server directory and the run_gunicorn.sh file.

Refer to the flask project configuration options to understand what to put in your own config.py file.

Do not hesiate to contact me for help or concerns.

Download Details:
Author: codelucas
Source Code: https://github.com/codelucas/flask_reddit
License: MIT License

#flask  #python #nginx #reddit 

Flask Reddit: An Extendable and Minimalist Reddit Clone