migrate to mastodon version
This commit is contained in:
parent
5f2edec826
commit
62558addcd
2
.dockerignore
Normal file
2
.dockerignore
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
venv/
|
||||||
|
__pycache__/
|
|
@ -1,5 +1,3 @@
|
||||||
MISSKEY_INSTANCE_ADDRESS="worldc.one"
|
MASTODON_INSTANCE_ADDRESS=mastodon.social
|
||||||
MISSKEY_ACCESS_TOKEN="BWbGlK6lWuUgXQpFM7igtmbZ30g6BOIc" # it is just a sample
|
SENTENCES_DIRECTORIES=['./data/sentences/']
|
||||||
|
WORDS_DIRECTORIES=["./data/words/"]
|
||||||
SENTENCES_FILES=['./data/sentences/default.txt'] # Putting an absolute path is recommended
|
|
||||||
# SENTENCES_DIRECTORIES=['./data/sentences/']
|
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,6 +1,6 @@
|
||||||
venv/
|
venv/
|
||||||
setting.py
|
setting.py
|
||||||
google_api.json
|
|
||||||
__pycache__/
|
__pycache__/
|
||||||
.env
|
.env
|
||||||
docker-compose.yml
|
docker-compose.yml
|
||||||
|
token.secret
|
|
@ -2,12 +2,8 @@ FROM python:bookworm
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
COPY src src
|
COPY . .
|
||||||
COPY main.py main.py
|
|
||||||
COPY requirements.txt requirements.txt
|
|
||||||
|
|
||||||
# RUN python -m venv venv
|
|
||||||
# RUN source ./venv/bin/activate
|
|
||||||
RUN pip install -r requirements.txt
|
RUN pip install -r requirements.txt
|
||||||
|
|
||||||
CMD ["python", "main.py"]
|
CMD ["python", "main.py"]
|
36
README.md
36
README.md
|
@ -1,23 +1,33 @@
|
||||||
# Misskey Random Sentence Bot
|
# Mastodon Random Sentence Bot
|
||||||
|
|
||||||
[![no github badge](https://nogithub.codeberg.page/badge.svg)](https://nogithub.codeberg.page/)
|
[![no github badge](https://nogithub.codeberg.page/badge.svg)](https://nogithub.codeberg.page/)
|
||||||
|
|
||||||
|
A mastodon bot posting random sentences. Forked from [Misskey Random Sentence Bot](https://git.worldc.one/worldcone/misskey-random-sentence-bot)
|
||||||
|
|
||||||
## How to run with docker compose
|
## How to run with docker compose
|
||||||
|
|
||||||
1. clone repo
|
1. clone repo
|
||||||
|
|
||||||
2. change setting
|
2. change setting
|
||||||
|
|
||||||
```
|
```bash
|
||||||
# copy example compose file
|
# copy compose file
|
||||||
cp docker-compose.example.yml docker-compose.env
|
cp docker-compose.example.yml docker-compose.yml
|
||||||
|
|
||||||
# edit compose file
|
# copy and edit .env
|
||||||
vim .docker-compose
|
cp .example.env .env
|
||||||
|
vim .env
|
||||||
```
|
```
|
||||||
|
|
||||||
3. RUN
|
3. add your access token
|
||||||
|
```bash
|
||||||
|
touch token.secret
|
||||||
|
vim token.secret
|
||||||
```
|
```
|
||||||
|
|
||||||
|
4. RUN
|
||||||
|
|
||||||
|
```bash
|
||||||
docker compose up
|
docker compose up
|
||||||
docker compose down
|
docker compose down
|
||||||
```
|
```
|
||||||
|
@ -28,20 +38,20 @@ docker compose down
|
||||||
|
|
||||||
2. make venv
|
2. make venv
|
||||||
|
|
||||||
```
|
```bash
|
||||||
python3 -m venv venv
|
python3 -m venv venv
|
||||||
source ./venv/bin/activate
|
source ./venv/bin/activate
|
||||||
```
|
```
|
||||||
|
|
||||||
3. install modules
|
3. install modules
|
||||||
|
|
||||||
```
|
```bash
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
4. change setting
|
4. change setting(changing the sentences and words directories as a absolute path is recommended)
|
||||||
|
|
||||||
```
|
```bash
|
||||||
# copy example setting file
|
# copy example setting file
|
||||||
cp .example.env .env
|
cp .example.env .env
|
||||||
|
|
||||||
|
@ -51,7 +61,7 @@ vim .env
|
||||||
|
|
||||||
5. RUN
|
5. RUN
|
||||||
|
|
||||||
```
|
```bash
|
||||||
python main.py
|
python main.py
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,8 @@ services:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: ./Dockerfile
|
dockerfile: ./Dockerfile
|
||||||
environment:
|
environment:
|
||||||
- MISSKEY_INSTANCE_ADDRESS=worldc.one
|
- MASTODON_INSTANCE_ADDRESS=${MASTODON_INSTANCE_ADDRESS}
|
||||||
- MISSKEY_ACCESS_TOKEN=BWbGlK6lWuUgXQpFM7igtmbZ30g6BOIc
|
- SENTENCES_DIRECTORIES=${SENTENCES_DIRECTORIES}
|
||||||
# - SENTENCES_FILES=['/data/sentences/default.txt']
|
- WORDS_DIRECTORIES=${WORDS_DIRECTORIES}
|
||||||
- SENTENCES_DIRECTORIES=['/data/sentences/']
|
|
||||||
volumes:
|
volumes:
|
||||||
- ./data:/data
|
- ./data:/app/data
|
||||||
|
|
14
main.py
14
main.py
|
@ -1,7 +1,7 @@
|
||||||
import os
|
import os
|
||||||
import random
|
import random
|
||||||
|
|
||||||
from misskey import Misskey
|
from mastodon import Mastodon
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
from src.choose_sentence import chooseSentence
|
from src.choose_sentence import chooseSentence
|
||||||
|
@ -10,7 +10,7 @@ from src.generate_sentence import generateSentence
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
|
|
||||||
# authentication to misskey
|
# authentication to misskey
|
||||||
misskey = Misskey(address=os.environ["MISSKEY_INSTANCE_ADDRESS"], i=os.environ["MISSKEY_ACCESS_TOKEN"])
|
mastodon = Mastodon(access_token="token.secret", api_base_url=os.environ["MASTODON_INSTANCE_ADDRESS"])
|
||||||
|
|
||||||
|
|
||||||
def writeRandomSentenceNote():
|
def writeRandomSentenceNote():
|
||||||
|
@ -22,12 +22,12 @@ def writeRandomSentenceNote():
|
||||||
# choose method and get sentence
|
# choose method and get sentence
|
||||||
sentence: str = random.choice(choice_methods)()
|
sentence: str = random.choice(choice_methods)()
|
||||||
|
|
||||||
|
|
||||||
# write note
|
# write note
|
||||||
random_sentence_note = misskey.notes_create(text=sentence)
|
toot = mastodon.toot(sentence)
|
||||||
note_id = random_sentence_note["createdNote"]["id"]
|
toot_url = toot["url"]
|
||||||
note_text = random_sentence_note["createdNote"]["text"]
|
toot_content = toot["content"]
|
||||||
print(f"{note_id} | {note_text}")
|
toot_created_at = toot["created_at"]
|
||||||
|
print(f"{toot_created_at} {toot_url} : {toot_content}")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
@ -1,3 +1,2 @@
|
||||||
Misskey.py
|
Mastodon.py
|
||||||
python-dotenv
|
python-dotenv
|
||||||
|
|
||||||
|
|
|
@ -8,32 +8,34 @@ from dotenv import load_dotenv
|
||||||
|
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
|
|
||||||
_sentences=[]
|
_sentences: list[str] =[]
|
||||||
try:
|
|
||||||
sentence_files=[]
|
|
||||||
|
|
||||||
if os.environ.get("SENTENCES_FILE") and os.path.isfile(os.environ["SENTENCES_FILE"]):
|
# try:
|
||||||
sentence_files.append(os.environ["SENTENCE_FILES"])
|
sentence_files=[]
|
||||||
|
|
||||||
if os.environ.get("SENTENCES_FILES"):
|
# if os.environ.get("SENTENCES_FILE") and os.path.isfile(os.environ["SENTENCES_FILE"]):
|
||||||
sentence_files.extend(list(filter(os.path.isfile, json.loads(os.environ["SENTENCES_FILES"]))))
|
# sentence_files.append(os.environ["SENTENCE_FILES"])
|
||||||
|
|
||||||
if os.environ.get("SENTENCES_DIRECTORY") and os.path.isdir(os.environ["SENTENCES_DIRECTORY"]):
|
# if os.environ.get("SENTENCES_FILES"):
|
||||||
sentence_files.extend(glob(f'{os.environ["SENTENCES_DIRECTORY"]}*.txt'))
|
# sentence_files.extend(list(filter(os.path.isfile, json.loads(os.environ["SENTENCES_FILES"]))))
|
||||||
|
|
||||||
if os.environ.get("SENTENCES_DIRECTORIES"):
|
# if os.environ.get("SENTENCES_DIRECTORY") and os.path.isdir(os.environ["SENTENCES_DIRECTORY"]):
|
||||||
# 원라인 똥 뿌직(터져도 책임 안짐)
|
# sentence_files.extend(glob(f'{os.environ["SENTENCES_DIRECTORY"]}*.txt'))
|
||||||
sentence_files.extend([glob(f"{_dir}*.txt") for _dir in filter(os.path.isdir, json.loads(os.environ["SENTENCES_DIRECTORIES"]))][0])
|
|
||||||
|
|
||||||
for sentence_file in sentence_files:
|
# if os.environ.get("SENTENCES_DIRECTORIES"):
|
||||||
|
|
||||||
|
# get the directories including the sentences files
|
||||||
|
sentence_files.extend([glob(f"{_dir}*.txt") for _dir in filter(os.path.isdir, json.loads(os.environ["SENTENCES_DIRECTORIES"]))][0])
|
||||||
|
|
||||||
|
for sentence_file in sentence_files:
|
||||||
with open(sentence_file, "r") as f:
|
with open(sentence_file, "r") as f:
|
||||||
_sentences.extend(f.readlines())
|
_sentences.extend(f.readlines())
|
||||||
except:
|
# except:
|
||||||
e = sys.exc_info()[1]
|
# e = sys.exc_info()[1]
|
||||||
_sentences = [f"에러발생(진짜임): {e}"]
|
# _sentences = [f"Runtime error(Please contact to the admin): {e}"]
|
||||||
|
|
||||||
|
|
||||||
# choose random sentence in google spread sheet
|
# choose random sentence in google spread sheet
|
||||||
def chooseSentence() -> str:
|
def chooseSentence() -> str:
|
||||||
# choice random sentence
|
# choice random sentence
|
||||||
return random.choice(_sentences).replace("\\n","\n")
|
return random.choice(_sentences).replace("\\n","\n")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue