Merge branch 'dev' of https://github.com/rebelonion/Dantotsu into dev
This commit is contained in:
commit
31a67c8edb
12 changed files with 693 additions and 5 deletions
9
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
9
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: 🧑💻 Dantotsu Help on Discord
|
||||
url: https://discord.com/invite/4HPZ5nAWwM
|
||||
about: Get support, ask questions, and join the community discussions.
|
||||
|
||||
- name: 📱 Dantotsu Help on Telegram
|
||||
url: https://t.me/dantotsuapp
|
||||
about: Connect with the community, ask questions, and get help directly on Telegram.
|
35
.github/ISSUE_TEMPLATE/question.yml
vendored
Normal file
35
.github/ISSUE_TEMPLATE/question.yml
vendored
Normal file
|
@ -0,0 +1,35 @@
|
|||
name: ❓ Question
|
||||
description: Submit a question or query related to Dantotsu
|
||||
labels: [question]
|
||||
body:
|
||||
- type: textarea
|
||||
id: question-details
|
||||
attributes:
|
||||
label: Question Details
|
||||
description: Provide a detailed explanation of your question or query.
|
||||
placeholder: |
|
||||
Example:
|
||||
"How do I customize the settings in Dartotsu to optimize performance?"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
id: related-features
|
||||
attributes:
|
||||
label: Related Features (if applicable)
|
||||
description: Mention any specific feature or section of Dantotsu related to your question.
|
||||
placeholder: |
|
||||
Example: "Settings > Performance"
|
||||
|
||||
- type: checkboxes
|
||||
id: submission-checklist
|
||||
attributes:
|
||||
label: Submission Checklist
|
||||
description: Review the following items before submitting your question.
|
||||
options:
|
||||
- label: I have searched existing issues to see if this question has already been answered.
|
||||
required: true
|
||||
- label: I have provided a clear and concise question title.
|
||||
required: true
|
||||
- label: I have provided all relevant details to understand my question fully.
|
||||
required: true
|
101
.github/ISSUE_TEMPLATE/report_issue.yml
vendored
Normal file
101
.github/ISSUE_TEMPLATE/report_issue.yml
vendored
Normal file
|
@ -0,0 +1,101 @@
|
|||
name: 🐛 Issue Report
|
||||
description: Report a bug or problem in Dantotsu
|
||||
labels: [bug]
|
||||
body:
|
||||
- type: textarea
|
||||
id: steps-to-reproduce
|
||||
attributes:
|
||||
label: Steps to Reproduce
|
||||
description: Outline the steps needed to trigger the issue.
|
||||
placeholder: |
|
||||
Example:
|
||||
1. Navigate to the home screen.
|
||||
2. Click on "Start."
|
||||
3. Observe the error message.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: expected-outcome
|
||||
attributes:
|
||||
label: Expected Outcome
|
||||
description: Describe what you expected to happen.
|
||||
placeholder: |
|
||||
Example:
|
||||
"The application should have successfully loaded the dashboard..."
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: actual-outcome
|
||||
attributes:
|
||||
label: Actual Outcome
|
||||
description: Detail what actually occurred when following the steps.
|
||||
placeholder: |
|
||||
Example:
|
||||
"The app crashed and displayed an error message instead..."
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: error-logs
|
||||
attributes:
|
||||
label: Error Logs (if applicable)
|
||||
description: |
|
||||
If the issue involves crashes, please attach relevant logs. Access them via **Settings → About → Log to file → Share**.
|
||||
placeholder: |
|
||||
Paste the logs here or upload as an attachment.
|
||||
|
||||
- type: input
|
||||
id: dartotsu-version
|
||||
attributes:
|
||||
label: Dartotsu Version
|
||||
description: Specify the version of Dartotsu in which the issue occurred.
|
||||
placeholder: |
|
||||
Example: "1.2.3"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
id: os-version
|
||||
attributes:
|
||||
label: Operating System Version
|
||||
description: Mention the OS version you are using.
|
||||
placeholder: |
|
||||
Example: "Android 12"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
id: device-info
|
||||
attributes:
|
||||
label: Device Information
|
||||
description: Provide your device name and model.
|
||||
placeholder: |
|
||||
Example: "Samsung Galaxy S21"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: additional-information
|
||||
attributes:
|
||||
label: Additional Information
|
||||
placeholder: |
|
||||
Include any other relevant details or attachments that may help diagnose the issue.
|
||||
|
||||
- type: checkboxes
|
||||
id: submission-checklist
|
||||
attributes:
|
||||
label: Submission Checklist
|
||||
description: Ensure you've reviewed these items before submitting your report.
|
||||
options:
|
||||
- label: I have searched existing issues to confirm this is not a duplicate.
|
||||
required: true
|
||||
- label: I have provided a clear and descriptive title.
|
||||
required: true
|
||||
- label: I am using the **[latest](https://github.com/rebelonion/Dantotsu/latest)** version of Dantotsu. If not, I have provided a reason for not updating.
|
||||
required: true
|
||||
- label: I have updated all relevant extensions or dependencies.
|
||||
required: true
|
||||
- label: I have filled out all the requested information accurately.
|
||||
required: true
|
54
.github/ISSUE_TEMPLATE/request_feature.yml
vendored
Normal file
54
.github/ISSUE_TEMPLATE/request_feature.yml
vendored
Normal file
|
@ -0,0 +1,54 @@
|
|||
name: 🚀 Feature Request
|
||||
description: Propose a new feature to enhance Dantotsu
|
||||
labels: [enhancement]
|
||||
body:
|
||||
- type: textarea
|
||||
id: feature-summary
|
||||
attributes:
|
||||
label: Feature Summary
|
||||
description: Provide a concise summary of the feature you'd like to see.
|
||||
placeholder: |
|
||||
Example:
|
||||
"Add support for dark mode..."
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: detailed-description
|
||||
attributes:
|
||||
label: Detailed Description
|
||||
description: Elaborate on how this feature should function and its potential impact.
|
||||
placeholder: |
|
||||
Example:
|
||||
"The dark mode should automatically activate based on system settings..."
|
||||
value: |
|
||||
### Current Behavior
|
||||
- Describe the current functionality or lack thereof.
|
||||
|
||||
### Proposed Solution
|
||||
- Detail how the feature should work and any potential benefits.
|
||||
|
||||
### Considerations
|
||||
- Mention any potential challenges or alternatives.
|
||||
|
||||
- type: textarea
|
||||
id: additional-context
|
||||
attributes:
|
||||
label: Additional Context
|
||||
description: Provide any other information, relevant screenshots, or references.
|
||||
placeholder: "Include links to relevant resources, external tools, or related issues."
|
||||
|
||||
- type: checkboxes
|
||||
id: checklist
|
||||
attributes:
|
||||
label: Submission Checklist
|
||||
description: Ensure you've completed these before submitting.
|
||||
options:
|
||||
- label: I have searched the existing issues and confirm that this feature has not been requested before.
|
||||
required: true
|
||||
- label: I have provided a clear and descriptive title.
|
||||
required: true
|
||||
- label: I am using the **[latest](https://github.com/rebelonion/Dantotsu/releases/latest)** version of Dantotsu. If not, I have provided a reason for using an older version.
|
||||
required: true
|
||||
- label: I understand that not all feature requests will be accepted, and if declined, I won't resubmit the same request.
|
||||
required: true
|
84
.github/workflows/bug_greetings.yml
vendored
Normal file
84
.github/workflows/bug_greetings.yml
vendored
Normal file
|
@ -0,0 +1,84 @@
|
|||
name: Bug Report Greeting
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
jobs:
|
||||
greeting:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v2
|
||||
- name: Check if the issue is labeled as a Bug Report
|
||||
id: check_bug_label
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
ISSUE_NUMBER=$(jq -r '.issue.number' "$GITHUB_EVENT_PATH")
|
||||
LABELS=$(gh issue view $ISSUE_NUMBER --json labels --jq '.labels[].name')
|
||||
|
||||
if echo "$LABELS" | grep -q 'bug'; then
|
||||
echo "This issue is labeled as a bug report. Checking if the issue creator is the repository owner."
|
||||
echo "skip_label_check=false" >> $GITHUB_ENV
|
||||
else
|
||||
echo "This issue is not labeled as a bug report. Skipping greeting message."
|
||||
echo "skip_label_check=true" >> $GITHUB_ENV
|
||||
fi
|
||||
- name: Check if the issue creator is the repo owner
|
||||
if: env.skip_label_check == 'false'
|
||||
id: check_owner
|
||||
run: |
|
||||
ISSUE_AUTHOR=$(jq -r '.issue.user.login' "$GITHUB_EVENT_PATH")
|
||||
REPO_OWNER=$(jq -r '.repository.owner.login' "$GITHUB_EVENT_PATH")
|
||||
if [ "$ISSUE_AUTHOR" = "$REPO_OWNER" ]; then
|
||||
echo "The issue creator is the repository owner. Skipping greeting message."
|
||||
echo "skip=true" >> $GITHUB_ENV
|
||||
else
|
||||
echo "The issue creator is not the repository owner. Checking for previous bug reports..."
|
||||
echo "skip=false" >> $GITHUB_ENV
|
||||
fi
|
||||
- name: Check if the user has submitted a bug report before
|
||||
if: env.skip == 'false'
|
||||
id: check_first_bug_report
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
ISSUE_AUTHOR=$(jq -r '.issue.user.login' "$GITHUB_EVENT_PATH")
|
||||
ISSUE_NUMBER=$(jq -r '.issue.number' "$GITHUB_EVENT_PATH")
|
||||
|
||||
# Get all issues (both open and closed) by the author except the current one
|
||||
PREVIOUS_REPORTS=$(gh issue list --author "$ISSUE_AUTHOR" --label "Bug" --state all --json number --jq '. | map(select(.number != '$ISSUE_NUMBER')) | length')
|
||||
echo "User $ISSUE_AUTHOR has submitted $PREVIOUS_REPORTS bug report(s) previously"
|
||||
|
||||
if [ "$PREVIOUS_REPORTS" -eq 0 ]; then
|
||||
echo "This is the user's first bug report. Sending greeting message."
|
||||
echo "skip_first_report=false" >> $GITHUB_ENV
|
||||
else
|
||||
echo "User has previous bug reports. Skipping greeting message."
|
||||
echo "skip_first_report=true" >> $GITHUB_ENV
|
||||
fi
|
||||
- name: Send Greeting Message
|
||||
if: env.skip_label_check == 'false' && env.skip != 'true' && env.skip_first_report != 'true'
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
script: |
|
||||
const issueNumber = context.payload.issue.number;
|
||||
const message = `
|
||||
**🛠️ Thank you for reporting a bug!**
|
||||
Your issue has been successfully submitted and is now awaiting review. We appreciate your help in making Dantotsu better.
|
||||
**🔍 What Happens Next**
|
||||
- Our team will investigate the issue and provide updates as soon as possible.
|
||||
- You may be asked for additional details or clarification if needed.
|
||||
- Once resolved, we'll notify you of the fix or provide a workaround.
|
||||
**👥 Connect with Us**
|
||||
- **[Discord](https://discord.com/invite/4HPZ5nAWwM)**: Engage with our community and ask questions.
|
||||
- **[Telegram](https://t.me/dantotsuapp)**: Reach out for real-time discussions and updates.
|
||||
We're working hard to resolve the issue and appreciate your patience!
|
||||
`;
|
||||
await github.rest.issues.createComment({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: issueNumber,
|
||||
body: message
|
||||
});
|
112
.github/workflows/extension-issue-handling.yml
vendored
Normal file
112
.github/workflows/extension-issue-handling.yml
vendored
Normal file
|
@ -0,0 +1,112 @@
|
|||
name: Extension Issue Handling
|
||||
on:
|
||||
issues:
|
||||
types: [opened, labeled]
|
||||
|
||||
jobs:
|
||||
handle-extension-issues:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check Issue Content
|
||||
id: check-issue
|
||||
env:
|
||||
ISSUE_TITLE: ${{ github.event.issue.title }}
|
||||
ISSUE_BODY: ${{ github.event.issue.body }}
|
||||
run: |
|
||||
# Regex patterns for extension-related issues
|
||||
EXTENSION_REGEX_PATTERNS=(
|
||||
# Extension not working (more flexible match)
|
||||
".*(\w+)\s*(extension)?\s*(not working|doesn't work|does not work|cant work|can't work).*"
|
||||
|
||||
# No extension available
|
||||
".*(no|can't find|cannot find|missing).*extension.*"
|
||||
|
||||
# No repo or repositories available
|
||||
".*(no|can't find|cannot find|missing).*repo(s)?\s*(available|found|accessible).*"
|
||||
|
||||
# Specific server/stream issues
|
||||
".*(no streams|server).*(available|working).*"
|
||||
|
||||
# Variants of extension problems
|
||||
".*{.*}.*not working.*"
|
||||
".*{.*}.*extension.*(issue|problem).*"
|
||||
)
|
||||
|
||||
# Convert to lowercase for case-insensitive matching
|
||||
LOWER_TITLE=$(echo "$ISSUE_TITLE" | tr '[:upper:]' '[:lower:]')
|
||||
LOWER_BODY=$(echo "$ISSUE_BODY" | tr '[:upper:]' '[:lower:]')
|
||||
|
||||
# Flag to track issue type
|
||||
IS_EXTENSION_ISSUE=false
|
||||
IS_NO_EXTENSION_ISSUE=false
|
||||
|
||||
# Check title and body against regex patterns
|
||||
for pattern in "${EXTENSION_REGEX_PATTERNS[@]}"; do
|
||||
if [[ "$LOWER_TITLE" =~ $pattern ]] || [[ "$LOWER_BODY" =~ $pattern ]]; then
|
||||
IS_EXTENSION_ISSUE=true
|
||||
|
||||
# Special check for no extensions available
|
||||
if [[ "$LOWER_TITLE" =~ "no extension" ]] || [[ "$LOWER_TITLE" =~ "can't find extension" ]]; then
|
||||
IS_NO_EXTENSION_ISSUE=true
|
||||
fi
|
||||
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Explicitly output boolean values
|
||||
if [ "$IS_EXTENSION_ISSUE" = true ]; then
|
||||
echo "is_extension_issue=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "is_extension_issue=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
if [ "$IS_NO_EXTENSION_ISSUE" = true ]; then
|
||||
echo "is_no_extension_issue=true" >> $GITHUB_OUTPUT
|
||||
else
|
||||
echo "is_no_extension_issue=false" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Comment and Close Extension Issue
|
||||
if: steps.check-issue.outputs.is_extension_issue == 'true'
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||
script: |
|
||||
const issueNumber = context.issue.number;
|
||||
|
||||
// Check if it's a "No Extension" issue
|
||||
if (${{ steps.check-issue.outputs.is_no_extension_issue }}) {
|
||||
// DMCA notice message
|
||||
await github.rest.issues.createComment({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: issueNumber,
|
||||
body: "# Automated Message\n" +
|
||||
"On 13 June 2024, the official Aniyomi repository got a DMCA notice and had to remove all of their extensions. Because of this, we will not be providing anyone with any links or extensions to avoid legal problems.\n" +
|
||||
"# How to add repos?\n" +
|
||||
"Although we do not give or maintain any repositories, we support adding custom repository links to your Dantotsu. \n" +
|
||||
"Go to `Profile > Settings > Extensions` then paste your anime or manga links there.\n" +
|
||||
"# How to find repos?\n" +
|
||||
"It's very easy. Search on Google. But remember that the URL must end with <u><b>index.min.json</b></u> or else it won't work.\n" +
|
||||
"`TLDR: We will not give repo links.`"
|
||||
});
|
||||
} else {
|
||||
// Standard extension issue message
|
||||
await github.rest.issues.createComment({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: issueNumber,
|
||||
body: `Dantotsu doesn't maintain extensions.
|
||||
If the extension doesn't work we cannot help you.
|
||||
Contact the owner of Respective Repo for extension-related problems`
|
||||
});
|
||||
}
|
||||
|
||||
// Close the issue
|
||||
await github.rest.issues.update({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: issueNumber,
|
||||
state: 'closed'
|
||||
});
|
86
.github/workflows/feature_greetings.yml
vendored
Normal file
86
.github/workflows/feature_greetings.yml
vendored
Normal file
|
@ -0,0 +1,86 @@
|
|||
name: Feature Request Greeting
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
|
||||
jobs:
|
||||
greeting:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Check if the issue is labeled as a Feature Request
|
||||
id: check_feature_label
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
ISSUE_NUMBER=$(jq -r '.issue.number' "$GITHUB_EVENT_PATH")
|
||||
LABELS=$(gh issue view $ISSUE_NUMBER --json labels --jq '.labels[].name')
|
||||
|
||||
if echo "$LABELS" | grep -q 'enhancement'; then
|
||||
echo "This issue is labeled as a feature request. Checking if the issue creator is the repository owner."
|
||||
echo "skip_label_check=false" >> $GITHUB_ENV
|
||||
else
|
||||
echo "This issue is not labeled as a feature request. Skipping greeting message."
|
||||
echo "skip_label_check=true" >> $GITHUB_ENV
|
||||
fi
|
||||
|
||||
- name: Check if the user has submitted a feature request before
|
||||
if: env.skip_label_check == 'false'
|
||||
id: check_first_request
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
ISSUE_AUTHOR=$(jq -r '.issue.user.login' "$GITHUB_EVENT_PATH")
|
||||
REPO_OWNER=$(jq -r '.repository.owner.login' "$GITHUB_EVENT_PATH")
|
||||
ISSUE_NUMBER=$(jq -r '.issue.number' "$GITHUB_EVENT_PATH")
|
||||
|
||||
if [ "$ISSUE_AUTHOR" = "$REPO_OWNER" ]; then
|
||||
echo "The issue creator is the repository owner. Skipping greeting message."
|
||||
echo "skip_first_request=true" >> $GITHUB_ENV
|
||||
else
|
||||
echo "Checking for previous feature requests..."
|
||||
# Get all issues (both open and closed) by the author except the current one
|
||||
PREVIOUS_REQUESTS=$(gh issue list --author "$ISSUE_AUTHOR" --label "New Feature" --state all --json number --jq '. | map(select(.number != '$ISSUE_NUMBER')) | length')
|
||||
echo "User $ISSUE_AUTHOR has submitted $PREVIOUS_REQUESTS feature request(s) previously"
|
||||
|
||||
if [ "$PREVIOUS_REQUESTS" -eq 0 ]; then
|
||||
echo "This is the user's first feature request. Sending greeting message."
|
||||
echo "skip_first_request=false" >> $GITHUB_ENV
|
||||
else
|
||||
echo "User has previous feature requests. Skipping greeting message."
|
||||
echo "skip_first_request=true" >> $GITHUB_ENV
|
||||
fi
|
||||
fi
|
||||
|
||||
- name: Send Greeting Message
|
||||
if: env.skip_label_check == 'false' && env.skip_first_request == 'false'
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
script: |
|
||||
const issueNumber = context.payload.issue.number;
|
||||
const message = `
|
||||
**💡 Thank you for your feature request!**
|
||||
Your request has been successfully submitted and is now under consideration. We value your input in shaping the future of Dantotsu.
|
||||
|
||||
**📈 What to Expect Next**
|
||||
- Our team will review your request and assess its feasibility.
|
||||
- We may reach out for additional details or clarification.
|
||||
- Updates on the request will be provided, and it may be scheduled for future development.
|
||||
|
||||
**👥 Stay Connected**
|
||||
- **[Discord](https://discord.com/invite/4HPZ5nAWwM)**: Join our community to discuss ideas and stay updated.
|
||||
- **[Telegram](https://t.me/dantotsuapp)**: Connect with us directly for real-time updates.
|
||||
|
||||
We appreciate your suggestion and look forward to potentially implementing it!
|
||||
`;
|
||||
await github.rest.issues.createComment({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: issueNumber,
|
||||
body: message
|
||||
});
|
80
.github/workflows/pr_greetings.yml
vendored
Normal file
80
.github/workflows/pr_greetings.yml
vendored
Normal file
|
@ -0,0 +1,80 @@
|
|||
name: PR Greetings
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened]
|
||||
pull_request_target:
|
||||
types: [opened]
|
||||
|
||||
jobs:
|
||||
greeting:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
pull-requests: write
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Check if the PR creator is the repo owner or Weblate
|
||||
id: check_owner
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
PR_AUTHOR=$(jq -r '.pull_request.user.login' "$GITHUB_EVENT_PATH")
|
||||
REPO_OWNER=$(jq -r '.repository.owner.login' "$GITHUB_EVENT_PATH")
|
||||
|
||||
if [ "$PR_AUTHOR" = "$REPO_OWNER" ] || [ "$PR_AUTHOR" = "weblate" ]; then
|
||||
echo "The PR creator is the repository owner or Weblate. Skipping greeting message."
|
||||
echo "skip=true" >> $GITHUB_ENV
|
||||
else
|
||||
echo "The PR creator is not the repository owner or Weblate. Checking for previous PRs..."
|
||||
|
||||
# Check for both open and closed pull requests by the author
|
||||
OPEN_PRS=$(gh pr list --author "$PR_AUTHOR" --state open --json number --jq '. | length')
|
||||
CLOSED_PRS=$(gh pr list --author "$PR_AUTHOR" --state closed --json number --jq '. | length')
|
||||
TOTAL_PRS=$((OPEN_PRS + CLOSED_PRS))
|
||||
|
||||
echo "User $PR_AUTHOR has created $TOTAL_PRS pull request(s) in total"
|
||||
echo "Open PRs: $OPEN_PRS"
|
||||
echo "Closed PRs: $CLOSED_PRS"
|
||||
|
||||
if [ "$TOTAL_PRS" -eq 1 ]; then
|
||||
echo "This is the user's first pull request. Sending greeting message."
|
||||
echo "skip=false" >> $GITHUB_ENV
|
||||
else
|
||||
echo "User has previous pull requests. Skipping greeting message."
|
||||
echo "skip=true" >> $GITHUB_ENV
|
||||
fi
|
||||
fi
|
||||
|
||||
- name: Send Greeting Message
|
||||
if: env.skip != 'true'
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
script: |
|
||||
const prNumber = context.payload.pull_request.number;
|
||||
const message = `
|
||||
**🎉 Thank you for your contribution!**
|
||||
|
||||
Your Pull Request has been successfully submitted and is now awaiting review. We truly appreciate your efforts to improve Dantotsu.
|
||||
|
||||
**👥 Connect with the Community**
|
||||
|
||||
While you're here, why not join our communities to stay engaged?
|
||||
- **[Discord](https://discord.com/invite/4HPZ5nAWwM)**: Chat with fellow developers, ask questions, and get the latest updates.
|
||||
- **[Telegram](https://t.me/dantotsuapp)**: Connect directly with us for real-time discussions and updates.
|
||||
|
||||
**📋 What to Expect Next**
|
||||
- Our team will review your pull request as soon as possible.
|
||||
- You'll receive notifications if further information or changes are needed.
|
||||
- Once approved, your changes will be merged into the main project.
|
||||
|
||||
We're excited to collaborate with you. Stay tuned for updates!
|
||||
`;
|
||||
|
||||
await github.rest.issues.createComment({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: prNumber,
|
||||
body: message
|
||||
});
|
21
README.md
21
README.md
|
@ -16,6 +16,25 @@ Dantotsu is an [Anilist](https://anilist.co/) only client.
|
|||
|
||||
<a href="https://www.buymeacoffee.com/rebelonion"><img src="https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=&slug=rebelonion&button_colour=FFDD00&font_colour=030201&font_family=Poppins&outline_colour=000000&coffee_colour=ffffff" /></a>
|
||||
|
||||
## Terms of Use
|
||||
By downloading, installing, or using this application, you agree to:
|
||||
- Use the application in compliance with all applicable laws
|
||||
- Not use the application to infringe on copyrighted content
|
||||
- Take full responsibility for any extensions you install or use
|
||||
- Understand that the developer(s) are not responsible for third-party extensions or user actions
|
||||
|
||||
This application is designed for anime tracking and legal streaming service integration. The developers do not provide, maintain, or endorse any extensions that enable access to unauthorized content.
|
||||
|
||||
## Important Notice
|
||||
This application is an anime tracking and management tool. The extension system is designed to integrate with legal streaming services like Jellyfin.
|
||||
|
||||
We do not:
|
||||
- Provide or maintain any streaming extensions
|
||||
- Host or distribute copyrighted content
|
||||
- Endorse or encourage copyright infringement
|
||||
|
||||
Users are responsible for ensuring their use of this software complies with local laws and regulations.
|
||||
|
||||
### 🚀 STAR THIS REPOSITORY TO SUPPORT THE DEVELOPER AND ENCOURAGE THE DEVELOPMENT OF THE APPLICATION!
|
||||
|
||||
## WANT TO CONTRIBUTE? 🤝
|
||||
|
@ -38,4 +57,4 @@ You can come hang out with our awesome community, request new features, and repo
|
|||
|
||||
## LICENSE 📜
|
||||
|
||||
Dantotsu is licensed under the [GNU General Public License v3.0](LICENSE.md)
|
||||
Dantotsu is licensed under the Unabandon Public License (UPL). More info can be found [here.](LICENSE.md)
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
// this code was kanged from the greatest mind of this era, aka shivam brahmkshatriya
|
||||
// please subscribe to my only fans here: https://github.com/brahmkshatriya
|
||||
package ani.dantotsu.connections.discord
|
||||
|
||||
|
||||
|
|
|
@ -72,14 +72,14 @@ class SubtitleDownloader {
|
|||
|
||||
val client = Injekt.get<NetworkHelper>().client
|
||||
val request = Request.Builder().url(url).build()
|
||||
val reponse = client.newCall(request).execute()
|
||||
val response = client.newCall(request).execute()
|
||||
|
||||
if (!reponse.isSuccessful) {
|
||||
if (!response.isSuccessful) {
|
||||
snackString("Failed to download subtitle")
|
||||
return
|
||||
}
|
||||
|
||||
reponse.body.byteStream().use { input ->
|
||||
response.body.byteStream().use { input ->
|
||||
subtitleFile.openOutputStream(context, false).use { output ->
|
||||
if (output == null) throw Exception("Could not open output stream")
|
||||
input.copyTo(output)
|
||||
|
|
106
privacy_policy.md
Normal file
106
privacy_policy.md
Normal file
|
@ -0,0 +1,106 @@
|
|||
# Privacy Policy
|
||||
|
||||
Last Updated: Dec 30, 2024
|
||||
|
||||
## Introduction
|
||||
This Privacy Policy describes how we collect, use, and handle your information when you use Dantotsu. We are committed to protecting your privacy and ensuring transparency about our data practices.
|
||||
|
||||
## Information We Collect
|
||||
|
||||
### Crash Reports and Analytics
|
||||
We use Firebase Crashlytics to collect crash reports and technical information about your device to improve app stability and performance. This may include:
|
||||
- Device type and model
|
||||
- Operating system version
|
||||
- Time and date of crashes
|
||||
- Technical crash information
|
||||
- App version
|
||||
- Your AniList username (for crash reports)
|
||||
- Anonymous Country-level geolocation data
|
||||
|
||||
Crash reports are associated with your AniList username to allow us to contact you if we need additional information about a specific issue. However, you can choose to anonymize your crash reports through the app settings, which will remove your AniList username from the reports.
|
||||
|
||||
Firebase Analytics collects anonymous usage data, including country-level geolocation information. This helps us understand how Dantotsu is being used across different regions.
|
||||
|
||||
### Third-Party Authentication and Integration
|
||||
Dantotsu allows you to authenticate with the following third-party services:
|
||||
- AniList
|
||||
- MyAnimeList
|
||||
- Discord
|
||||
|
||||
When using Discord Rich Presence (RPC) functionality, the app will share your current watching activity with Discord, including:
|
||||
- The series you are watching
|
||||
- The current episode number
|
||||
|
||||
This information is only shared while you are actively using Dantotsu and have Discord RPC enabled.
|
||||
|
||||
While we facilitate these connections, we do not store your login credentials. Authentication tokens are stored securely on your device only. Please note that these third-party services may collect additional information according to their own privacy policies, which we encourage you to review:
|
||||
- [AniList Privacy Policy Link](https://anilist.co/terms)
|
||||
- [MyAnimeList Privacy Policy Link](https://myanimelist.net/about/privacy_policy)
|
||||
- [Discord Privacy Policy Link](https://discord.com/privacy)
|
||||
|
||||
### Comments System
|
||||
Our in-house comments API uses your AniList authentication token for verification purposes when you initially open Dantotsu. While this token is used for authentication, it is never stored on our servers. We only store:
|
||||
- Your AniList ID (for authentication)
|
||||
- Profile picture URL
|
||||
- Comments you post
|
||||
- Your upvotes on comments
|
||||
|
||||
We do not track or store:
|
||||
- Your AniList authentication token
|
||||
- Content you view or watch
|
||||
- Browsing history
|
||||
- Watch history
|
||||
- Personal information beyond what's listed above
|
||||
|
||||
## How We Use Your Information
|
||||
|
||||
### Crash Reports and Analytics
|
||||
We use crash reports and analytics to:
|
||||
- Identify and fix technical issues
|
||||
- Improve app stability
|
||||
- Enhance user experience
|
||||
- Contact users about specific crash issues when necessary
|
||||
- Understand app usage patterns across different regions
|
||||
|
||||
You can control your privacy preferences:
|
||||
- Anonymize crash reports through app settings
|
||||
- Control app permissions through your device settings
|
||||
|
||||
### Comments System
|
||||
We use comment data to:
|
||||
- Display your comments to other users
|
||||
- Show upvote counts
|
||||
- Associate comments with your profile
|
||||
|
||||
## Data Storage and Security
|
||||
- Authentication tokens are stored locally on your device
|
||||
- Comment data is stored securely on our servers
|
||||
- We implement appropriate security measures to protect your information
|
||||
|
||||
## Data Sharing
|
||||
We do not sell or share your personal information with third parties except:
|
||||
- When required by law
|
||||
- To provide the core functionality of the app through our integrated services
|
||||
|
||||
## Your Rights and Data Protection
|
||||
Under the General Data Protection Regulation (GDPR) and other data protection laws, you have certain rights regarding your personal data. You can:
|
||||
- Access your comment data
|
||||
- Request deletion of your comments and associated data
|
||||
|
||||
To exercise these rights or request deletion of your data, you can contact the developer:
|
||||
- On AniList: "rebelonion"
|
||||
- On Discord: "@rebelonion"
|
||||
|
||||
While we don't have an automated process for data deletion, we will process your request manually as soon as possible.
|
||||
|
||||
## Children's Privacy
|
||||
Our service is not directed to children under 13. We do not knowingly collect personal information from children under 13.
|
||||
|
||||
## Changes to This Privacy Policy
|
||||
We may update this Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page and updating the "Last Updated" date.
|
||||
|
||||
## Contact Us
|
||||
If you have any questions about this Privacy Policy, please contact us via:
|
||||
- GitHub: [Dantotsu Issues](https://github.com/rebelonion/Dantotsu/issues)
|
||||
- Discord: "@rebelonion"
|
||||
- AniList: "rebelonion"
|
Loading…
Add table
Add a link
Reference in a new issue