Skip to content

Commit fbf2686

Browse files
committed
Merge remote-tracking branch 'upstream/main'
2 parents ad4c719 + d5c0588 commit fbf2686

77 files changed

Lines changed: 6939 additions & 1034 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.editorconfig

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# EditorConfig helps keep one coding style across editors: https://editorconfig.org
2+
# The rules below describe the style the repository already uses.
3+
4+
root = true
5+
6+
[*]
7+
charset = utf-8
8+
end_of_line = lf
9+
indent_style = space
10+
indent_size = 4
11+
insert_final_newline = true
12+
trim_trailing_whitespace = true
13+
14+
# Python module, tests and helper scripts
15+
[*.py]
16+
indent_size = 4
17+
18+
# Web Dashboard template, including its inline CSS and JavaScript
19+
[*.html]
20+
indent_size = 4
21+
22+
# Workflows, issue forms, Compose and MkDocs configuration
23+
[*.{yml,yaml}]
24+
indent_size = 2
25+
26+
[*.{toml,json}]
27+
indent_size = 2
28+
29+
# Two trailing spaces are a line break in Markdown, so leave them alone
30+
[*.md]
31+
trim_trailing_whitespace = false
32+
33+
[Dockerfile]
34+
indent_size = 4
35+
36+
[Makefile]
37+
indent_style = tab
38+
39+
# Verbatim upstream text that must never be reformatted
40+
[LICENSE]
41+
insert_final_newline = unset
42+
trim_trailing_whitespace = unset

.gitattributes

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Git stores and checks out LF everywhere, which is the line ending .editorconfig declares.
2+
# This keeps Windows contributors from committing CRLF into a repository that is LF only.
3+
* text=auto eol=lf
4+
5+
# Types Git cannot always infer, so diffs and merges stay textual
6+
*.py text diff=python
7+
*.md text diff=markdown
8+
*.html text diff=html
9+
*.yml text
10+
*.yaml text
11+
*.toml text
12+
*.cff text
13+
*.json text
14+
*.txt text
15+
*.in text
16+
*.tape text
17+
Dockerfile text
18+
LICENSE text
19+
20+
# Screenshots and the demo recording must never be normalized or diffed as text
21+
*.png binary
22+
*.jpg binary
23+
*.jpeg binary
24+
*.gif binary
25+
26+
# Nothing is marked export-ignore on purpose: the source archives attached to a release
27+
# carry the complete repository, including tests, documentation and CI configuration.

.github/CODEOWNERS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Every change is reviewed by the maintainer.
2+
* @misiektoja

.github/FUNDING.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Renders the Sponsor button on the repository page.
2+
# Only the copy on the default branch is used: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository
3+
github: misiektoja
4+
buy_me_a_coffee: misiektoja
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
name: Bug report
2+
description: Monitoring stops, an alert is wrong or behavior does not match the documentation
3+
labels:
4+
- bug
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Do not report a suspected vulnerability here. Follow [SECURITY.md](https://github.com/misiektoja/instagram_monitor/blob/main/SECURITY.md) instead.
10+
11+
Never paste a session cookie, an Instagram password, an SMTP password, a webhook URL or an ntfy token into an issue. Logs and `--doctor` output can contain the accounts you monitor, so redact anything you do not want public.
12+
13+
- type: textarea
14+
id: what-happened
15+
attributes:
16+
label: What happened
17+
description: What you expected and what you got instead.
18+
validations:
19+
required: true
20+
21+
- type: textarea
22+
id: reproduce
23+
attributes:
24+
label: How to reproduce
25+
description: The steps, including the command you ran and the relevant settings from your configuration file. Redact usernames, credentials and webhook URLs.
26+
validations:
27+
required: true
28+
29+
- type: textarea
30+
id: doctor
31+
attributes:
32+
label: Doctor output
33+
description: "Output of `instagram_monitor --doctor`, redacted. It reports the selected login method, connectivity, session state and target reachability."
34+
render: shell
35+
validations:
36+
required: false
37+
38+
- type: textarea
39+
id: logs
40+
attributes:
41+
label: Log or error output
42+
description: "The error as printed or the relevant part of the log file. Adding `--debug` records the request flow."
43+
render: shell
44+
validations:
45+
required: false
46+
47+
- type: input
48+
id: version
49+
attributes:
50+
label: instagram_monitor version
51+
description: "Output of `instagram_monitor --version`."
52+
placeholder: "3.9"
53+
validations:
54+
required: true
55+
56+
- type: dropdown
57+
id: install-method
58+
attributes:
59+
label: How it is installed
60+
options:
61+
- PyPI (pip install instagram_monitor)
62+
- Standalone script
63+
- Docker image
64+
- Docker Compose
65+
- From source
66+
validations:
67+
required: true
68+
69+
- type: input
70+
id: environment
71+
attributes:
72+
label: Operating system and Python version
73+
placeholder: macOS 26.1, Python 3.13.2
74+
validations:
75+
required: true
76+
77+
- type: dropdown
78+
id: login-mode
79+
attributes:
80+
label: Login method in use
81+
options:
82+
- Instaloader session login
83+
- No login (public data only)
84+
- Imported browser session (Firefox)
85+
- Imported browser session (Chrome, Brave or Chromium)
86+
- Not sure
87+
validations:
88+
required: true
89+
90+
- type: dropdown
91+
id: view-mode
92+
attributes:
93+
label: View mode where it happens
94+
options:
95+
- Text output
96+
- Terminal dashboard
97+
- Web Dashboard
98+
- Not specific to a view mode
99+
validations:
100+
required: false

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Report a vulnerability
4+
url: https://github.com/misiektoja/instagram_monitor/security/advisories/new
5+
about: Report privately through GitHub. Never open a public issue for a suspected vulnerability.
6+
- name: Documentation
7+
url: https://misiektoja.github.io/instagram_monitor/
8+
about: Installation, setup, configuration, view modes, anti-detection and troubleshooting.
9+
- name: Question or idea
10+
url: https://github.com/misiektoja/instagram_monitor/discussions
11+
about: Ask about usage or discuss an approach before opening an issue.
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
name: Feature request
2+
description: Ask for a capability that instagram_monitor does not have yet
3+
labels:
4+
- enhancement
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
The [documentation](https://misiektoja.github.io/instagram_monitor/) describes what is already supported, including view modes, notification channels, proxy handling and anti-detection controls. Check [Configuration](https://misiektoja.github.io/instagram_monitor/configuration/) before asking for a setting that may already exist.
10+
11+
- type: textarea
12+
id: problem
13+
attributes:
14+
label: What are you trying to do
15+
description: The monitoring problem, not the implementation you have in mind.
16+
validations:
17+
required: true
18+
19+
- type: textarea
20+
id: proposal
21+
attributes:
22+
label: What would solve it
23+
description: The behavior, setting or command-line option you would like.
24+
validations:
25+
required: true
26+
27+
- type: dropdown
28+
id: area
29+
attributes:
30+
label: Which part of the tool this concerns
31+
options:
32+
- Monitoring and detection
33+
- Notifications (email, Discord, ntfy, webhooks)
34+
- Web Dashboard
35+
- Terminal dashboard or text output
36+
- Setup wizard and configuration
37+
- Login, sessions and anti-detection
38+
- Media downloads and CSV output
39+
- Docker and deployment
40+
- Documentation
41+
- Other
42+
validations:
43+
required: false
44+
45+
- type: textarea
46+
id: workaround
47+
attributes:
48+
label: Current workaround
49+
description: What you do today instead, if anything.
50+
validations:
51+
required: false

.github/dependabot.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,36 @@ updates:
2121
groups:
2222
docker:
2323
patterns: ["*"]
24+
ignore:
25+
# Digest and patch refreshes only, so a Python major or minor move stays a deliberate upgrade
26+
- dependency-name: "python"
27+
update-types: ["version-update:semver-major", "version-update:semver-minor"]
2428
commit-message:
2529
prefix: "build"
30+
31+
# Python runtime and test dependencies declared in pyproject.toml
32+
- package-ecosystem: "pip"
33+
directory: "/"
34+
target-branch: "dev"
35+
schedule:
36+
interval: "weekly"
37+
open-pull-requests-limit: 5
38+
groups:
39+
python-minor-and-patch:
40+
patterns: ["*"]
41+
update-types: ["minor", "patch"]
42+
commit-message:
43+
prefix: "build"
44+
45+
# Documentation site build dependencies
46+
- package-ecosystem: "pip"
47+
directory: "/docs"
48+
target-branch: "dev"
49+
schedule:
50+
interval: "weekly"
51+
open-pull-requests-limit: 3
52+
groups:
53+
docs:
54+
patterns: ["*"]
55+
commit-message:
56+
prefix: "docs"

.github/pull_request_template.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# What this changes
2+
3+
<!-- What the change does and why. Link the issue it closes. -->
4+
5+
## Validation
6+
7+
<!-- Which of these you ran and anything that failed. -->
8+
9+
- [ ] `python -m pytest`
10+
- [ ] `python -m pytest tests/test_browser_e2e.py`, for a Web Dashboard change
11+
- [ ] `mkdocs build --strict`, for a documentation change
12+
- [ ] `docker build .`, for a container or packaging change
13+
- [ ] Exercised against a real Instagram account, for a detection or session change
14+
15+
<!-- A monitoring or session change is not verified by the offline suite alone, which never contacts
16+
Instagram. Say what you ran it against, without usernames or credentials. -->
17+
18+
## Documentation and release notes
19+
20+
- [ ] User-facing behavior is documented under `docs/`
21+
- [ ] `RELEASE_NOTES.md` carries an entry or the change is not user facing
22+
23+
## Anything a reviewer should know
24+
25+
<!-- Trade-offs, follow-up work or parts you are unsure about. -->
26+
27+
<!-- Never include session cookies, Instagram or SMTP passwords, webhook URLs, ntfy tokens or the
28+
usernames you monitor in a pull request. -->

.github/workflows/codeql.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
name: CodeQL
2+
3+
on:
4+
push:
5+
branches: [main, dev]
6+
pull_request:
7+
workflow_dispatch:
8+
schedule:
9+
# A weekly run picks up new queries published after a change merged.
10+
- cron: "41 5 * * 2"
11+
12+
permissions: {}
13+
14+
jobs:
15+
analyze:
16+
name: Analyze Python
17+
runs-on: ubuntu-latest
18+
permissions:
19+
contents: read
20+
actions: read
21+
security-events: write
22+
23+
steps:
24+
- name: Checkout repository
25+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
26+
with:
27+
persist-credentials: false
28+
29+
- name: Initialize CodeQL
30+
uses: github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8
31+
with:
32+
languages: python
33+
# Python needs no compilation, so nothing is built before the database is created.
34+
build-mode: none
35+
queries: security-extended
36+
37+
- name: Perform CodeQL analysis
38+
uses: github/codeql-action/analyze@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4.37.8
39+
with:
40+
category: "/language:python"

0 commit comments

Comments
 (0)