No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-13 23:01:20 +02:00
.gitignore img size limit handling bugfix, adj readme 2026-10-06 22:48:44 +02:00
burn_sky.py quick fixes for untested prev commit 2026-10-01 22:01:20 +02:00
config_template.py moved lastpostage to config 2026-10-12 15:28:49 +02:00
nskyte2.py rem unec. prints() 2026-10-13 23:01:20 +02:00
postd.py itinit 2026-09-28 23:58:10 +02:00
readme.md small bugfix in download_img(), fix link in readme 2026-10-12 13:59:45 +02:00
seltest.py moved lastpostage to config 2026-10-12 15:28:49 +02:00

corssposter

SETUP "GUIDE"

  • get signal cli (portable is good) and write path (STARTING FROM YOUR HOME DIR) to config.py
    • use config_template.py for crearing config.py
    • for example "signalcli/signal-cli-0.14.8/bin/signal-cli",
  • get ublock-lite and unpack it to this_folder/extension/uBoLite.......
  • create a venv here or somewhere & activate it and install atproto, seleniumbase :
python -m venv somename
source somename/bin/active
pip install atproto seleniumbase 
  • use this venv to run both skripts (ig you could use 2 different ones too)
  • setup signalcli
  • get a group id from signal-cli , write it to config.py (mby you can also do it by name by now not sure)
  • get bsky acc access code and write with bsky-handle to config.py
  • select an instagram acc by writing it in config.py
  • should work now (atl the signal part)
  • if signalcli hasnt been initialized, it still works
  • FOR ASPECT RATIO DETECTION: install identify and ffmpeg/ffprobe (pre installed with some distros)

structure:

seltest.py

  • contains the 'main' program: gets recent posts, checks if theyre new, then downloads them, posts to signal and STAGES bsky posting via a .json file

postd.py

contains postd class used by seltest.py (in the Post class) and directly by nksyte2.py

config.py {has to be created manually}

contains logins, insta-target, signalcli path & setup. use config_template.py as reference

nskyte2.py

  • posts the staged posts to bsky (not implemented yet)
    • rn it checks if its connected through tor. so call it with torify
      • not sure if some stuff still leaks. hostname-lookups could go past torify. easiest way to be sure is some wireguard analysis ig
  • basic process:
    • read bsky_Staged_Posts_TMP.json and turn back into post objects
    • post them & add to hashset
    • delete bsky_Staged_Posts_TMP.json

burn_sky.py

  • deletes all post from bsky. useful for testing

TODOS:

(seltest.py) better Server Error handling:

Sometimes imginn returns a server error. seems to be rare up to now and resolved within 24h.

current state:

  • detection is implemented. see Post.open_with_check() method.

  • Post.download() method returns false if it happened with multi-img/vid post:

    • with single vid postsites it doesnt matter, the overview cdnlink is already all the quality we can get
    • with single img post, the overview cdnlink is also used (lower quality but acceptable)
    • with multiimg it prints the error and skips { mby stage for retrying}

at overview the error is currently unhandled. ig we just rescedule then

(nskyte2.py) compress/resize image to get under 10^6 BYTE bsky server limit (for imgs)

  • rn it skips those

(nskyte2.py) pass image/video aspect ratio to server (IMPLEMENTED,LIMITED TESTING DONE, PLS DO MORE)

  • otherwise its shown as 1:1 with padding (might look better tho)
  • currently this uses 'identify' bash calls. might be easier/more reliable with a python image lib that could need for further features anw

(seltest.py) implement stories

  • not sure how to post them, but might still be nice as a backup

nskyte2.py