Code Monkey home page Code Monkey logo

teledrive's Introduction

TeleDrive logo

TeleDrive lets you automatically backup ANY files to Telegram Saved Messages - this means UNLIMITED storage, as long as each file is under 2GB

Download as an AppImage

Download links:
Windows (NSIS) --- macOS (DMG)


Alternatively, for macOS, install using homebrew

brew cask install --no-quarantine khushrajrathod/teledrive/teledrive

See code signing for more info on why --no-quarantine is used

Screenshots

Authentication - Phone Number Authentication - Select Dir Authentication - Success Conflict

How does it work?

TeleDrive watches a folder for changes and automatically uploads any files contained within that folder to Telegram's saved messages. TeleDrive tags sub folders with their names, so when you restore your files using TeleDrive, you automatically get your folder structure back. For e.x if a TeleDrive's synced folder contains two sub folders, each containing one file:

TeleDriveSync ---- ----- Folder1 ----- MyFile1.txt
                 |
                 |
                 |
                 | ----- Folder2 ----- MyFile2.txt

Then TeleDrive will upload your files with the following tags:

  • #TeleDrive /Folder1/MyFile1.txt
  • #TeleDrive /Folder2/MyFile2.txt

This preserves your folder structure, even in a chat like Telegram's saved messages - This means that when you restore your files, you get the exact same folder structure back.

TeleDriveSync ---- ----- Folder1 ----- MyFile1.txt
                 |
                 |
                 |
                 | ----- Folder2 ----- MyFile2.txt

Features

  • Watch a folder for changes and automatically reupload when files are changed
  • Preserve folder structure when restoring using TeleDrive
  • Uses a master file for quickly finding messages and file versioning
  • SHA256 based file versioning
  • Queue viewer for uploads
  • Built in conflict resolver
    • When there's a newer file on Saved Messages but you're trying to backup

Running from source

  1. Clone repository:
git clone https://github.com/khrj/TeleDrive
cd TeleDrive
  1. Get dependencies:
yarn
  1. Run:
yarn start

Built with:

License:

  • TeleDrive is licensed under the GPLv3 license

teledrive's People

Contributors

dependabot-preview[bot] avatar dependabot[bot] avatar khrj avatar renovate-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

teledrive's Issues

Docs

https://www.khushrajrathod.me/TeleDrive/docs/

  • Short summary of features in README
  • Short explanation of how it works
  • Running instructions
  • Screenshots
  • TeleDrive Intro Video
  • Video for homebrew macOS installation process
  • Make 'currently syncing ...' clickable
  • Show popup on first launch to documentation

  • Documentation explaining each feature

    • Signing in
    • Selecting a folder to place TeleDriveSync in
    • Uploading files
    • Restoring files
    • Conflict Resolver
  • Videos for each feature

    • Signing in
    • Selecting a folder to place TeleDriveSync in
    • Uploading files
    • Restoring files
    • Conflict Resolver

Great job!

This is both hilarious and beautiful at the same time. How long until telegram patches this 🤣

Error after deleting files

Hello, I just tried teledrive, from Android.
If I upload one file, and then I go to Telegram app and delete it from there, going back to teledrive, the file seems to be still there.
Trying to download/open the files teledrive returns an Error 520 from Cloudfare

Code signing on macOS

Apple requires developers to have paid developer IDs to notarize applications. I'm already using a free code signing certificate, but I don't want to invest in a paid developer ID for a free app (feel free to buy me one if you want the Application notarized). This results in a popup that says the Application isn't from a recognized developer. The easiest way to workaround this is that when you see the popup, click "Show in finder", then right click TeleDrive.app and click open. You'll see a popup asking if you want to open TeleDrive anyway. Click Open and you're good to go.

Full list of workarounds (only required the first time you open TeleDrive):

  • Finder > Applications > TeleDrive > Right click > Open > (Popup) Open
  • Try opening TeleDrive > Apple Icon on top left > System Preferences > Security & Privacy > Under general tab > Open Anyway > (Popup) Open
  • Terminal > xattr -r -d com.apple.quarantine /Applications/TeleDrive.app > Launch TeleDrive normally
  • Terminal > spctl --add /Applications/TeleDrive.app > (Popup) Enter details > Modify Settings
  • Terminal > sudo spctl --master-disable > Type user account password (won't be visible) > Enter
  • Install TeleDrive using brew and use --no-quarantine
    brew cask install --no-quarantine khushrajrathod/teledrive/teledrive

If you have alternative methods to do this, or a way to solve this, please open a new issue

Doesn't support file over 2gb

You can't upload files bigger than 2gb on telegram so the app stops. Can you make a feature tthat splits biger files in a series of 2gb files, back up it and hen you restore tthe file it merge togheter the multiple partition of 2gb files?

Auto-updates

  • Windows:
    • NSIS
    • AppX
  • macOS:
    • DMG
    • Brew
  • Linux:
    • Snap
    • AppImage

Code signing

  • Windows:
    • NSIS - #wontfix
    • AppX - Automatically signed by Microsoft Store
  • macOS - Signing implemented using regular certificate, #wontfix paid certificate (as of now)
  • Linux:
    • Snap - Automatically signed by Snap Store

unable to run at windows 7 & windows 10

Dear Friend, when i downloaed windows version of your app and installed app then the app was running was showning on tasks bar i clicked on it or clicked on show but at all the gui of the app was unable to run as you have shown on your site.So i was failed to use your app. i tried that on windows 10 as well 7. If i am making any mistake or the above app needs a special procedure to run or a special feature must be present on pc, kindly inform me about that.
Thanks in advance. --- Shailendra Srivastava.

SHA should be used along with Date and Time

  • SHA256 is used to keep track of files currently
  • All checksums are stored in the TeleDriveMaster.json
  • This can make the TeleDriveMaster.json file huge for files made by Auto saving applications
  • This can also create unnecessary conflicts, such as when a user undoes changes
  • OS-based date and time is probably a better solution, which could potentially be used with a SHA256 for the last version

Website

  • Basic layout
  • Downloads script
  • Documentation section

Snaps broken

  • No tray icon in snaps
  • Snaps randomly break on Ubuntu 20.04 (and possibly also 19.04)

(node:71073) UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, open 'libssl.so.1.0.0'

freephoenix888@FreePhoenix888:~/Programming/teledrive$ yarn
yarn install v1.22.22
warning package-lock.json found. Your project contains lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
Done in 16.69s.
freephoenix888@FreePhoenix888:~/Programming/teledrive$ yarn start
yarn run v1.22.22
$ electron .
APPIMAGE env is not defined, current application is not an AppImage
18:38:43.229 › [SETUP] App storage:
18:38:43.232 › /home/freephoenix888/.config/TeleDrive
(node:71073) UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, open 'libssl.so.1.0.0'
    at Object.openSync (fs.js:476:3)
    at Object.func [as openSync] (electron/js2c/asar_bundle.js:5:1846)
    at readFileSync (fs.js:377:35)
    at e.readFileSync (electron/js2c/asar_bundle.js:5:8643)
    at new DynamicLibrary (/home/freephoenix888/Programming/teledrive/node_modules/ffi-napi/lib/dynamic_library.js:68:23)
    at Object.Library (/home/freephoenix888/Programming/teledrive/node_modules/ffi-napi/lib/library.js:47:10)
    at new TdJsonClient (/home/freephoenix888/Programming/teledrive/node_modules/airgram/components/TdJsonClient.js:86:27)
    at new Airgram (/home/freephoenix888/Programming/teledrive/node_modules/airgram/Airgram.js:50:116)
    at module.exports.create (/home/freephoenix888/Programming/teledrive/src/telegram-binder/index.js:153:12)
    at App.<anonymous> (/home/freephoenix888/Programming/teledrive/src/app.js:78:14)
(Use `electron --trace-warnings ...` to show where the warning was created)
(node:71073) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:71073) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
libva error: vaGetDriverNameByIndex() failed with unknown libva error, driver_name = (null)
libva error: vaGetDriverNameByIndex() failed with unknown libva error, driver_name = (null)
libva error: vaGetDriverNameByIndex() failed with unknown libva error, driver_name = (null)
[71073:0603/173844.832612:FATAL:gpu_data_manager_impl_private.cc(415)] GPU process isn't usable. Goodbye.
/home/freephoenix888/Programming/teledrive/node_modules/electron/dist/electron exited with signal SIGTRAP
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Teledrive crashes with SIGSEGV on startup

I tried googling this and could not find a suitable fix or workaround, so filing this defect report.

dave@Pluto:/projects/TeleDrive$ yarn
yarn install v1.22.17
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
Done in 20.60s.
dave@Pluto:
/projects/TeleDrive$ yarn start
yarn run v1.22.17
$ electron .
/home/dave/projects/TeleDrive/node_modules/electron/dist/electron exited with signal SIGSEGV
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

I found how to run yarn with verbose output:

dave@Pluto:~/projects/TeleDrive$ yarn --verbose start
yarn run v1.22.17
verbose 0.329063467 Checking for configuration file "/home/dave/projects/TeleDrive/.npmrc".
verbose 0.32984086 Checking for configuration file "/home/dave/.npmrc".
verbose 0.330133725 Checking for configuration file "/usr/etc/npmrc".
verbose 0.330820745 Checking for configuration file "/home/dave/projects/TeleDrive/.npmrc".
verbose 0.33156761 Checking for configuration file "/home/dave/projects/.npmrc".
verbose 0.332511673 Checking for configuration file "/home/dave/.npmrc".
verbose 0.333180968 Checking for configuration file "/home/.npmrc".
verbose 0.335626429 Checking for configuration file "/home/dave/projects/TeleDrive/.yarnrc".
verbose 0.33629815 Checking for configuration file "/home/dave/.yarnrc".
verbose 0.336704096 Found configuration file "/home/dave/.yarnrc".
verbose 0.337166518 Checking for configuration file "/usr/etc/yarnrc".
verbose 0.337603424 Checking for configuration file "/home/dave/projects/TeleDrive/.yarnrc".
verbose 0.337867444 Checking for configuration file "/home/dave/projects/.yarnrc".
verbose 0.338077686 Checking for configuration file "/home/dave/.yarnrc".
verbose 0.338431397 Found configuration file "/home/dave/.yarnrc".
verbose 0.338835689 Checking for configuration file "/home/.yarnrc".
verbose 0.34589468 current time: 2022-01-12T14:17:45.795Z
$ electron .
/home/dave/projects/TeleDrive/node_modules/electron/dist/electron exited with signal SIGSEGV
verbose 1.239582432 Error: Command failed with exit code 1.
at ProcessTermError.ExtendableBuiltin (/usr/share/yarn/lib/cli.js:721:66)
at ProcessTermError.MessageError (/usr/share/yarn/lib/cli.js:750:123)
at new ProcessTermError (/usr/share/yarn/lib/cli.js:790:113)
at /usr/share/yarn/lib/cli.js:34672:30
at Generator.throw ()
at step (/usr/share/yarn/lib/cli.js:310:30)
at /usr/share/yarn/lib/cli.js:323:13
at processTicksAndRejections (internal/process/task_queues.js:97:5)
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

It's not working on Windows 10

Hello and thank you for developing this program. It has some unique features and a GUI, pretty rare for this type of script. I wanted to try it but after installation it does nothing. I have the same issue as the one reported on #41. I tried to install from source and got this:

yarn run v1.22.10
$ electron .

Skip checkForUpdatesAndNotify because application is not packed

[SETUP] App storage:
C:\Users\kms\AppData\Roaming\TeleDrive
(node:2376) UnhandledPromiseRejectionWarning: Error: Dynamic Linking Error: Win32 error 126
at new DynamicLibrary (D:\TeleGram\TeleDrive\node_modules\ffi-napi\lib\dynamic_library.js:75:11)
at Object.Library (D:\TeleGram\TeleDrive\node_modules\ffi-napi\lib\library.js:47:10)
at new TdJsonClient (D:\TeleGram\TeleDrive\node_modules\airgram\components\TdJsonClient.js:86:27)
at new Airgram (D:\TeleGram\TeleDrive\node_modules\airgram\Airgram.js:50:116)
at module.exports.create (D:\TeleGram\TeleDrive\src\telegram-binder\index.js:153:12)
at App. (D:\TeleGram\TeleDrive\src\app.js:78:14)
at App.emit (events.js:315:20)
(Use electron --trace-warnings ... to show where the warning was created)
(node:2376) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:2376) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Any solution?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.