美国一位名叫扎拉·达尔(Zara Dar)的计算机科学女硕士因放弃攻读博士学位,转而全职经营 OnlyFans 平台,成功赚取百万美元并还清学生贷款。
OnlyFans 是一个内容订阅平台,允许创作者向订阅他们内容的用户收费。
Zara Dar 拥有计算机和生物学位,在德克萨斯大学取得计算机硕士学位后,继续攻读计算机科学博士学位,她还曾在 YouTube 上创建频道讲解神经网络、机器学习、梯度下降等知识,拥有超 13 万订阅者:
起初,Zara Dar 只是将 OnlyFans 当作副业,但随着收入逐渐增长,她发现了其中的巨大潜力,于是选择退学全职经营。
这一决定让她在短时间内赚取了 100 万美元,并还清了家里的抵押贷款。她表示,经营 OnlyFans 给了她学习和分享新内容的自由,并且不影响她继续在 YouTube 上讲解 STEM(科学、技术、工程和数学)领域的内容。
她在社交媒体上发布了一段视频,解释了自己从博士退学转而全职经营 OnlyFans 的原因。
Zara Dar 表示攻读博士期间,撰写资助提案占据大量时间,实际研究时间被压缩,且即使在学术界取得成功,收入也有限,大部分要用于支付房租、学生贷款等生活开支,难以实现经济自由。
Github 上 Zara Dar 还分享了一个 OnlyFans-Notification-Robot 项目,这个项目是使用 Python 脚本在树莓派(Raspberry Pi)上开发的 OnlyFans通知机器人,用于监控新订阅者通知邮件。
当收到新的订阅者邮件时,脚本会激活连接到树莓派的步进电机,进而触发一个 3D 打印的企鹅移动,并使 pygame 模块播放声音。
Python 代码如下:
import RPi.GPIO as GPIO
import time
import imaplib
import email
import pygame # import pygame library
# define the pins that will connect to the stepper motor driver
# GPIO pins
pin_seq = [17, 18, 27, 22]
# Setup GPIO
GPIO.setmode(GPIO.BCM)
for pin in pin_seq:
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, False)
# Motor sequence
step_seq = [
[1, 0, 0, 1],
[1, 0, 0, 0],
[1, 1, 0, 0],
[0, 1, 0, 0],
[0, 1, 1, 0],
[0, 0, 1, 0],
[0, 0, 1, 1],
[0, 0, 0, 1],
]
# Function to perform one step
def step(index):
for pin, value in zip(pin_seq, step_seq[index]):
GPIO.output(pin, value)
# Gmail IMAP server details
USERNAME = 'my-email@gmail.com' #replace with your email
APP_PASSWORD = '000000' # replace with your app password
MAIL_SERVER = 'imap.gmail.com'
SENDER_EMAIL = 'no-reply@email.com' #replace with the email account you want to receive a notification from
# Initialize pygame mixer
pygame.mixer.init()
# Load the sound file
sound = pygame.mixer.Sound("sound.wav") #replace with the name of the audio file you want to play
def check_email(user, app_pwd, mail_server, sender):
# connect to the server and go to its inbox
mail = imaplib.IMAP4_SSL(mail_server)
mail.login(user, app_pwd)
mail.select('inbox')
# search for the mail from the given sender and mark as unseen
result, data = mail.uid('search', None, '(FROM "{}" UNSEEN)'.format(sender))
mail_ids = data[0]
# if new mail, perform the stepper motor action
if mail_ids:
email_ids = mail_ids.split()
latest_email_id = email_ids[-1]
# mark the latest email as seen
mail.uid('store', latest_email_id, '+FLAGS', '(\Seen)')
# Play the sound
sound.play()
# Rotate motor 512 steps
for _ in range(512*4):
for i in range(len(step_seq)):
step(i)
time.sleep(0.0007) # Motor moves faster
while True:
check_email(USERNAME, APP_PASSWORD, MAIL_SERVER, SENDER_EMAIL)
time.sleep(20) # check every 20 seconds
# Cleanup
GPIO.cleanup()