Giter VIP home page Giter VIP logo

ravager's Introduction

> neofetch
⣿⡇⣿⣿⣿⠛⠁⣴⣿⡿⠿⠧⠹⠿⠘⣿⣿⣿⡇⢸⡻⣿⣿⣿⣿⣿⣿⣿      coolfool@github
⢹⡇⣿⣿⣿⠄⣞⣯⣷⣾⣿⣿⣧⡹⡆⡀⠉⢹⡌⠐⢿⣿⣿⣿⡞⣿⣿⣿      ---------------------
⣾⡇⣿⣿⡇⣾⣿⣿⣿⣿⣿⣿⣿⣿⣄⢻⣦⡀⠁⢸⡌⠻⣿⣿⣿⡽⣿⣿      OS: Arch Linux x86_64
⡇⣿⠹⣿⡇⡟⠛⣉⠁⠉⠉⠻⡿⣿⣿⣿⣿⣿⣦⣄⡉⠂⠈⠙⢿⣿⣝⣿      Kernel: 6.8.7.zen1
⠤⢿⡄⠹⣧⣷⣸⡇⠄⠄⠲⢰⣌⣾⣿⣿⣿⣿⣿⣿⣶⣤⣤⡀⠄⠈⠻⢮      Shell: zsh 5.9 
⠄⢸⣧⠄⢘⢻⣿⡇⢀⣀⠄⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⡀⠄⢀      Desktop Environment: Plasma 6.0.4
⠄⠈⣿⡆⢸⣿⣿⣿⣬⣭⣴⣿⣿⣿⣿⣿⣿⣿⣯⠝⠛⠛⠙⢿⡿⠃⠄⢸      Languages: Python, Golang, JavaScript, C++
⠄⠄⢿⣿⡀⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣿⡾⠁⢠⡇⢀      Technologies/Frameworks: Flask, SQLAlchemy, Celery, Node.js, ElectronJS, ReactJS
⠄⠄⢸⣿⡇⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣏⣫⣻⡟⢀⠄⣿⣷⣾      DevOps & SDLC: Git, Docker, Kubernetes, Terraform, Ansible, CI/CD
⠄⠄⢸⣿⡇⠄⠈⠙⠿⣿⣿⣿⣮⣿⣿⣿⣿⣿⣿⣿⣿⡿⢠⠊⢀⡇⣿⣿      Hobbies: Gaming, CTF
⠒⠤⠄⣿⡇⢀⡲⠄⠄⠈⠙⠻⢿⣿⣿⠿⠿⠟⠛⠋⠁⣰⠇⠄⢸⣿⣿⣿      Total Stars Earned: 84
⠄⠄⠄⣿⡇⢬⡻⡇⡄⠄⠄⠄⡰⢖⠔⠉⠄⠄⠄⠄⣼⠏⠄⠄⢸⣿⣿⣿      Actual Commits (2024): 26
⠄⠄⠄⣿⡇⠄⠙⢌⢷⣆⡀⡾⡣⠃⠄⠄⠄⠄⠄⣼⡟⠄⠄⠄⠄⢿⣿⣿      Contact: [email protected]

ravager's People

Contributors

coolfool 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

Watchers

 avatar  avatar

ravager's Issues

[Suggestion] Add full list of shared drives

I have lot of shared drives on my google account and the bot only shows first few ones alphabetically. I had to rename my drive so that it would show up in the bot, it'd be great if you can just add folder id of the drive you want to add or show whole list of drives.

Estou recebendo esse ereo

2022-05-30 14:03:11 +0000] [10] [INFO] Reason: Worker failed to boot.
2022-05-30T14:03:12.229728+00:00 heroku[web.1]: State changed from up to crashed
2022-05-30T14:03:12.119821+00:00 heroku[web.1]: Process exited with status 3
2022-05-30T14:02:48.753727+00:00 app[api]: Scaled to web@0:Free by user [email protected]
2022-05-30T14:02:52.745603+00:00 app[api]: Scaled to web@1:Free by user [email protected]
2022-05-30T14:05:44.074308+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=jasrac.herokuapp.com request_id=8bac7746-b22e-4642-8564-d1f5b11c81cd fwd="44.197.251.4" dyno= connect= service= status=503 bytes= protocol=http

No download status

Deployed to heroku, download does not start, it just sits at "Processing Download", log shows following:
`

2022-05-13T08:40:37.293535+00:00 app[web.1]: return self.callback(update, context)

2022-05-13T08:40:37.293535+00:00 app[web.1]: File "/app/ravager/bot/helpers/validators.py", line 110, in wrapper

2022-05-13T08:40:37.293536+00:00 app[web.1]: return handlers(self, update, context, *args, **kwargs)

2022-05-13T08:40:37.293536+00:00 app[web.1]: File "/app/ravager/bot/helpers/validators.py", line 128, in wrapper

2022-05-13T08:40:37.293537+00:00 app[web.1]: return handlers(self, update, context, *args, **kwargs)

2022-05-13T08:40:37.293537+00:00 app[web.1]: File "/app/ravager/bot/commands/abort.py", line 25, in stop_tasks

2022-05-13T08:40:37.293537+00:00 app[web.1]: status = task.status

2022-05-13T08:40:37.293538+00:00 app[web.1]: AttributeError: 'NoneType' object has no attribute 'status'`

Issue with gauth [No Issue]

Earlier it wasn't there, today I redeployed your latest build and got this issue while trying to authorize my google account.
Screenshot

Edit: Oops, I changed bot name while deploying but forgot to change it in Google cloud console, my bad.

Err on render

"2022-05-31 17:52:48,123 — /app/ravager/housekeeping.py — INFO — :11 — Database setup at sqlite:////app/database/ravager.db?check_same_thread=False"
May 31 11:52:48 PM "2022-05-31 17:52:48,132 — /app/ravager/housekeeping.py — INFO — :13 — 0"
May 31 11:52:48 PM "2022-05-31 17:52:48,253 — /app/ravager/housekeeping.py — INFO — :49 — True"
May 31 11:52:48 PM "2022-05-31 17:52:48,253 — /app/ravager/housekeeping.py — INFO — :50 — aria2c started"
May 31 11:53:01 PM "2022-05-31 17:53:01,928 — /app/ravager/housekeeping.py — INFO — :11 — Database setup at sqlite:////app/database/ravager.db?check_same_thread=False"
May 31 11:53:01 PM "2022-05-31 17:53:01,935 — /app/ravager/housekeeping.py — INFO — :13 — 0"
May 31 11:53:02 PM "2022-05-31 17:53:02,002 — /app/ravager/housekeeping.py — INFO — :49 — True"
May 31 11:53:02 PM "2022-05-31 17:53:02,003 — /app/ravager/housekeeping.py — INFO — :50 — aria2c started"
May 31 11:53:09 PM No messages purged from 1 queue.
May 31 11:53:10 PM "2022-05-31 17:53:10,002 — /app/ravager/services/aria/handler.py — INFO — :100 — Started listening to aria2 notifications"
May 31 11:53:20 PM [2022-05-31 17:53:20 +0000] [14] [INFO] Starting gunicorn 20.1.0
May 31 11:53:20 PM [2022-05-31 17:53:20 +0000] [14] [INFO] Listening at: http://0.0.0.0:10000 (14)
May 31 11:53:20 PM [2022-05-31 17:53:20 +0000] [14] [INFO] Using worker: sync
May 31 11:53:20 PM [2022-05-31 17:53:20 +0000] [15] [INFO] Booting worker with pid: 15
May 31 11:53:23 PM No messages purged from 1 queue.
May 31 11:53:23 PM "2022-05-31 17:53:23,900 — /app/ravager/services/aria/handler.py — INFO — :100 — Started listening to aria2 notifications"
May 31 11:53:34 PM [2022-05-31 17:53:34 +0000] [15] [INFO] Starting gunicorn 20.1.0
May 31 11:53:34 PM [2022-05-31 17:53:34 +0000] [15] [ERROR] Connection in use: ('0.0.0.0', 6801)
May 31 11:53:34 PM [2022-05-31 17:53:34 +0000] [15] [ERROR] Retrying in 1 second.
May 31 11:53:35 PM /opt/pysetup/.venv/lib/python3.10/site-packages/celery/platforms.py:840: SecurityWarning: You're running the worker with superuser privileges: this is
May 31 11:53:35 PM absolutely not recommended!
May 31 11:53:35 PM
May 31 11:53:35 PM Please specify a different user using the --uid option.
May 31 11:53:35 PM
May 31 11:53:35 PM User information: uid=0 euid=0 gid=0 egid=0
May 31 11:53:35 PM
May 31 11:53:35 PM warnings.warn(SecurityWarning(ROOT_DISCOURAGED.format(
May 31 11:53:35 PM [2022-05-31 17:53:35 +0000] [15] [ERROR] Connection in use: ('0.0.0.0', 6801)
May 31 11:53:35 PM [2022-05-31 17:53:35 +0000] [15] [ERROR] Retrying in 1 second.
May 31 11:53:36 PM
May 31 11:53:36 PM -------------- celery@srv-cab5bdc41ls9f3cj3lug-kn-00001-deployment-6f9b5b8c6b-phjm2 v5.2.3 (dawn-chorus)
May 31 11:53:36 PM --- ***** -----
May 31 11:53:36 PM -- ******* ---- Linux-5.13.0-1025-aws-x86_64-with-glibc2.28 2022-05-31 17:53:36
May 31 11:53:36 PM - *** --- * ---
May 31 11:53:36 PM - ** ---------- [config]
May 31 11:53:36 PM - ** ---------- .> app: Essential Bot Tasks:0x7fe1c9c34040
May 31 11:53:36 PM - ** ---------- .> transport: redis://unkusr:@redis-11269.c135.eu-central-1-1.ec2.cloud.redislabs.com:11269//
May 31 11:53:36 PM - ** ---------- .> results: redis://unkusr:
@redis-11269.c135.eu-central-1-1.ec2.cloud.redislabs.com:11269/
May 31 11:53:36 PM - *** --- * --- .> concurrency: {min=5, max=10} (prefork)
May 31 11:53:36 PM -- ******* ---- .> task events: ON
May 31 11:53:36 PM --- ***** -----
May 31 11:53:36 PM -------------- [queues]
May 31 11:53:36 PM .> celery exchange=celery(direct) key=celery
May 31 11:53:36 PM
May 31 11:53:36 PM
May 31 11:53:36 PM [tasks]
May 31 11:53:36 PM . download_updater
May 31 11:53:36 PM . ravager.celery_tasks.tasks.clean_database
May 31 11:53:36 PM . ravager.celery_tasks.tasks.keep_heroku_alive
May 31 11:53:36 PM . ravager.celery_tasks.tasks.restart_heroku
May 31 11:53:36 PM . start_download
May 31 11:53:36 PM . start_upload

Sysinfo error

"2022-05-29 14:17:04,440 — telegram.ext.dispatcher — ERROR — process_update:573 — An uncaught error was raised while handling the error."
Traceback (most recent call last):
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/ext/dispatcher.py", line 555, in process_update
handler.handle_update(update, self, check, context)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/ext/conversationhandler.py", line 626, in handle_update
new_state = handler.handle_update(update, dispatcher, check_result, context)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/ext/handler.py", line 198, in handle_update
return self.callback(update, context)
File "/app/ravager/bot/commands/admin_interface.py", line 204, in system_options
text = sys_info_text.format(cpu_percent, used_mem.size, used_mem.suffix, available_mem.size, available_mem.suffix,
AttributeError: 'humanized' object has no attribute 'suffix'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/ext/dispatcher.py", line 567, in process_update
self.dispatch_error(update, exc)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/ext/dispatcher.py", line 810, in dispatch_error
callback(update, context)
File "/app/ravager/bot/commands/error.py", line 8, in error_handler
update.message.reply_text(quote=True, text="Error Occurred while handling request")
AttributeError: 'NoneType' object has no attribute 'reply_text'

Bot don't start

`ubuntu:~/environment/Ravager (main) $ docker logs -f ravager
"2023-06-28 09:32:46,124 — /app/ravager/housekeeping.py — INFO — :11 — Database setup at sqlite:////app/database/ravager.db?check_same_thread=False"
"2023-06-28 09:32:46,131 — /app/ravager/housekeeping.py — INFO — :13 — 0"
"2023-06-28 09:32:46,147 — /app/ravager/housekeeping.py — INFO — :49 — True"
"2023-06-28 09:32:46,147 — /app/ravager/housekeeping.py — INFO — :50 — aria2c started"
"2023-06-28 09:32:48,052 — /app/ravager/services/aria/handler.py — INFO — :100 — Started listening to aria2 notifications"
Traceback (most recent call last):
File "/opt/pysetup/.venv/lib/python3.10/site-packages/kombu/transport/virtual/base.py", line 925, in create_channel
return self._avail_channels.pop()
IndexError: pop from empty list

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/opt/pysetup/.venv/lib/python3.10/site-packages/redis/retry.py", line 46, in call_with_retry
return do()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/redis/connection.py", line 612, in
lambda: self._connect(), lambda error: self.disconnect(error)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/redis/connection.py", line 677, in _connect
raise err
File "/opt/pysetup/.venv/lib/python3.10/site-packages/redis/connection.py", line 665, in _connect
sock.connect(socket_address)
TimeoutError: [Errno 110] Connection timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/opt/pysetup/.venv/bin/celery", line 8, in
sys.exit(main())
File "/opt/pysetup/.venv/lib/python3.10/site-packages/celery/main.py", line 15, in main
sys.exit(_main())
File "/opt/pysetup/.venv/lib/python3.10/site-packages/celery/bin/celery.py", line 217, in main
return celery(auto_envvar_prefix="CELERY")
File "/opt/pysetup/.venv/lib/python3.10/site-packages/click/core.py", line 1130, in call
return self.main(*args, **kwargs)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/click/core.py", line 1657, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/opt/pysetup/.venv/lib/python3.10/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/click/decorators.py", line 26, in new_func
return f(get_current_context(), *args, **kwargs)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/celery/bin/base.py", line 134, in caller
return f(ctx, *args, **kwargs)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/celery/bin/purge.py", line 62, in purge
messages = sum(_purge(conn, queue) for queue in names)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/celery/bin/purge.py", line 62, in
messages = sum(_purge(conn, queue) for queue in names)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/celery/bin/purge.py", line 57, in _purge
return conn.default_channel.queue_purge(queue) or 0
File "/opt/pysetup/.venv/lib/python3.10/site-packages/kombu/connection.py", line 895, in default_channel
self._ensure_connection(**conn_opts)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/kombu/connection.py", line 433, in _ensure_connection
return retry_over_time(
File "/opt/pysetup/.venv/lib/python3.10/site-packages/kombu/utils/functional.py", line 312, in retry_over_time
return fun(*args, **kwargs)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/kombu/connection.py", line 877, in _connection_factory
self._connection = self._establish_connection()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/kombu/connection.py", line 812, in _establish_connection
conn = self.transport.establish_connection()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/kombu/transport/virtual/base.py", line 949, in establish_connection
self._avail_channels.append(self.create_channel(self))
File "/opt/pysetup/.venv/lib/python3.10/site-packages/kombu/transport/virtual/base.py", line 927, in create_channel
channel = self.Channel(connection)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/kombu/transport/redis.py", line 737, in init
self.client.ping()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/redis/commands/core.py", line 1132, in ping
return self.execute_command("PING", **kwargs)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/redis/client.py", line 1235, in execute_command
conn = self.connection or pool.get_connection(command_name, **options)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/redis/connection.py", line 1387, in get_connection
connection.connect()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/redis/connection.py", line 611, in connect
sock = self.retry.call_with_retry(
File "/opt/pysetup/.venv/lib/python3.10/site-packages/redis/retry.py", line 49, in call_with_retry
fail(error)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/redis/connection.py", line 612, in
lambda: self._connect(), lambda error: self.disconnect(error)
TypeError: Channel._connparams..Connection.disconnect() takes 1 positional argument but 2 were given
[2023-06-28 09:34:59 +0000] [31] [INFO] Starting gunicorn 20.1.0
[2023-06-28 09:34:59 +0000] [31] [INFO] Listening at: http://0.0.0.0:8443 (31)
[2023-06-28 09:34:59 +0000] [31] [INFO] Using worker: sync
[2023-06-28 09:34:59 +0000] [32] [INFO] Booting worker with pid: 32
/opt/pysetup/.venv/lib/python3.10/site-packages/celery/platforms.py:840: SecurityWarning: You're running the worker with superuser privileges: this is
absolutely not recommended!

Please specify a different user using the --uid option.

User information: uid=0 euid=0 gid=0 egid=0

warnings.warn(SecurityWarning(ROOT_DISCOURAGED.format(

-------------- celery@d2595b795205 v5.2.7 (dawn-chorus)
--- ***** -----
-- ******* ---- Linux-5.4.0-1103-aws-x86_64-with-glibc2.28 2023-06-28 09:35:00

  • *** --- * ---
  • ** ---------- [config]
  • ** ---------- .> app: Essential Bot Tasks:0x7fcd69154a00
  • ** ---------- .> transport: redis://redis:6379//
  • ** ---------- .> results: redis://redis/
  • *** --- * --- .> concurrency: {min=5, max=10} (prefork)
    -- ******* ---- .> task events: ON
    --- ***** -----
    -------------- [queues]
    .> celery exchange=celery(direct) key=celery

[tasks]
. download_updater
. ravager.celery_tasks.tasks.clean_database
. ravager.celery_tasks.tasks.keep_heroku_alive
. ravager.celery_tasks.tasks.restart_heroku
. start_download
. start_upload

"2023-06-28 09:35:05,841 — telegram.vendor.ptb_urllib3.urllib3.connectionpool — WARNING — urlopen:689 — Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by 'ConnectTimeoutError(<telegram.vendor.ptb_urllib3.urllib3.connection.VerifiedHTTPSConnection object at 0x7fc3e2a315d0>, 'Connection to api.telegram.org timed out. (connect timeout=5.0)')': /bot5623099390:AAFpibdnmq7VStUm1chOpynZ_xamvmZyqZQ/deleteWebhook"
"2023-06-28 09:35:10,848 — telegram.vendor.ptb_urllib3.urllib3.connectionpool — WARNING — urlopen:689 — Retrying (Retry(total=1, connect=None, read=None, redirect=None)) after connection broken by 'ConnectTimeoutError(<telegram.vendor.ptb_urllib3.urllib3.connection.VerifiedHTTPSConnection object at 0x7fc3e2a31870>, 'Connection to api.telegram.org timed out. (connect timeout=5.0)')': /bot5623099390:AAFpibdnmq7VStUm1chOpynZ_xamvmZyqZQ/deleteWebhook"
"2023-06-28 09:35:15,854 — telegram.vendor.ptb_urllib3.urllib3.connectionpool — WARNING — urlopen:689 — Retrying (Retry(total=0, connect=None, read=None, redirect=None)) after connection broken by 'ConnectTimeoutError(<telegram.vendor.ptb_urllib3.urllib3.connection.VerifiedHTTPSConnection object at 0x7fc3e2a32620>, 'Connection to api.telegram.org timed out. (connect timeout=5.0)')': /bot5623099390:AAFpibdnmq7VStUm1chOpynZ_xamvmZyqZQ/deleteWebhook"
[2023-06-28 09:35:20 +0000] [32] [ERROR] Exception in worker process
Traceback (most recent call last):
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connection.py", line 140, in _new_conn
conn = connection.create_connection(
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/util/connection.py", line 83, in create_connection
raise err
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/util/connection.py", line 73, in create_connection
sock.connect(sa)
TimeoutError: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connectionpool.py", line 614, in urlopen
httplib_response = self._make_request(conn, method, url,
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connectionpool.py", line 360, in _make_request
self._validate_conn(conn)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connectionpool.py", line 857, in _validate_conn
super(HTTPSConnectionPool, self)._validate_conn(conn)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connectionpool.py", line 289, in _validate_conn
conn.connect()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connection.py", line 284, in connect
conn = self._new_conn()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connection.py", line 144, in _new_conn
raise ConnectTimeoutError(
telegram.vendor.ptb_urllib3.urllib3.exceptions.ConnectTimeoutError: (<telegram.vendor.ptb_urllib3.urllib3.connection.VerifiedHTTPSConnection object at 0x7fc3e2a322f0>, 'Connection to api.telegram.org timed out. (connect timeout=5.0)')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/utils/request.py", line 259, in _request_wrapper
resp = self._con_pool.request(*args, **kwargs)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/request.py", line 68, in request
return self.request_encode_body(method, url, fields=fields,
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/request.py", line 148, in request_encode_body
return self.urlopen(method, url, **extra_kw)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/poolmanager.py", line 244, in urlopen
response = conn.urlopen(method, u.request_uri, **kw)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connectionpool.py", line 691, in urlopen
return self.urlopen(method, url, body, headers, retries,
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connectionpool.py", line 691, in urlopen
return self.urlopen(method, url, body, headers, retries,
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connectionpool.py", line 691, in urlopen
return self.urlopen(method, url, body, headers, retries,
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connectionpool.py", line 665, in urlopen
retries = retries.increment(method, url, error=e, _pool=self,
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/util/retry.py", line 376, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
telegram.vendor.ptb_urllib3.urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.telegram.org', port=443): Max retries exceeded with url: /bot5623099390:AAFpibdnmq7VStUm1chOpynZ_xamvmZyqZQ/deleteWebhook (Caused by ConnectTimeoutError(<telegram.vendor.ptb_urllib3.urllib3.connection.VerifiedHTTPSConnection object at 0x7fc3e2a322f0>, 'Connection to api.telegram.org timed out. (connect timeout=5.0)'))

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/opt/pysetup/.venv/lib/python3.10/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
worker.init_process()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/gunicorn/workers/base.py", line 134, in init_process
self.load_wsgi()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
self.wsgi = self.app.wsgi()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
return self.load_wsgiapp()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
return util.import_app(self.app_uri)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/gunicorn/util.py", line 359, in import_app
mod = importlib.import_module(module)
File "/usr/local/lib/python3.10/importlib/init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1050, in _gcd_import
File "", line 1027, in _find_and_load
File "", line 1006, in _find_and_load_unlocked
File "", line 688, in _load_unlocked
File "", line 883, in exec_module
File "", line 241, in _call_with_frames_removed
File "/app/ravager/main.py", line 159, in
update_queue, job, dispatch = setup()
File "/app/ravager/main.py", line 117, in setup
bot.delete_webhook()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/bot.py", line 133, in decorator
result = func(*args, **kwargs)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/bot.py", line 3206, in delete_webhook
result = self._post('deleteWebhook', data, timeout=timeout, api_kwargs=api_kwargs)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/bot.py", line 298, in _post
return self.request.post(
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/utils/request.py", line 361, in post
result = self._request_wrapper(
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/utils/request.py", line 265, in _request_wrapper
raise NetworkError(f'urllib3 HTTPError {error}') from error
telegram.error.NetworkError: urllib3 HTTPError HTTPSConnectionPool(host='api.telegram.org', port=443): Max retries exceeded with url: /bot5623099390:AAFpibdnmq7VStUm1chOpynZ_xamvmZyqZQ/deleteWebhook (Caused by ConnectTimeoutError(<telegram.vendor.ptb_urllib3.urllib3.connection.VerifiedHTTPSConnection object at 0x7fc3e2a322f0>, 'Connection to api.telegram.org timed out. (connect timeout=5.0)'))
[2023-06-28 09:35:20 +0000] [32] [INFO] Worker exiting (pid: 32)
[2023-06-28 09:35:21 +0000] [31] [INFO] Shutting down: Master
[2023-06-28 09:35:21 +0000] [31] [INFO] Reason: Worker failed to boot.
"2023-06-28 11:00:45,777 — /app/ravager/housekeeping.py — INFO — :11 — Database setup at sqlite:////app/database/ravager.db?check_same_thread=False"
"2023-06-28 11:00:45,786 — /app/ravager/housekeeping.py — INFO — :13 — 0"
"2023-06-28 11:00:45,889 — /app/ravager/housekeeping.py — INFO — :49 — True"
"2023-06-28 11:00:45,889 — /app/ravager/housekeeping.py — INFO — :50 — aria2c started"
"2023-06-28 11:00:48,426 — /app/ravager/services/aria/handler.py — INFO — :100 — Started listening to aria2 notifications"
"2023-06-28 11:03:20,471 — /app/ravager/housekeeping.py — INFO — :11 — Database setup at sqlite:////app/database/ravager.db?check_same_thread=False"
"2023-06-28 11:03:20,478 — /app/ravager/housekeeping.py — INFO — :13 — 0"
"2023-06-28 11:03:20,566 — /app/ravager/housekeeping.py — INFO — :49 — True"
"2023-06-28 11:03:20,566 — /app/ravager/housekeeping.py — INFO — :50 — aria2c started"
"2023-06-28 11:03:23,025 — /app/ravager/services/aria/handler.py — INFO — :100 — Started listening to aria2 notifications"
Traceback (most recent call last):
File "/opt/pysetup/.venv/lib/python3.10/site-packages/kombu/transport/virtual/base.py", line 925, in create_channel
return self._avail_channels.pop()
IndexError: pop from empty list

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/opt/pysetup/.venv/lib/python3.10/site-packages/redis/retry.py", line 46, in call_with_retry
return do()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/redis/connection.py", line 612, in
lambda: self._connect(), lambda error: self.disconnect(error)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/redis/connection.py", line 677, in _connect
raise err
File "/opt/pysetup/.venv/lib/python3.10/site-packages/redis/connection.py", line 665, in _connect
sock.connect(socket_address)
TimeoutError: [Errno 110] Connection timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/opt/pysetup/.venv/bin/celery", line 8, in
sys.exit(main())
File "/opt/pysetup/.venv/lib/python3.10/site-packages/celery/main.py", line 15, in main
sys.exit(_main())
File "/opt/pysetup/.venv/lib/python3.10/site-packages/celery/bin/celery.py", line 217, in main
return celery(auto_envvar_prefix="CELERY")
File "/opt/pysetup/.venv/lib/python3.10/site-packages/click/core.py", line 1130, in call
return self.main(*args, **kwargs)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/click/core.py", line 1657, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/opt/pysetup/.venv/lib/python3.10/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/click/decorators.py", line 26, in new_func
return f(get_current_context(), *args, **kwargs)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/celery/bin/base.py", line 134, in caller
return f(ctx, *args, **kwargs)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/celery/bin/purge.py", line 62, in purge
messages = sum(_purge(conn, queue) for queue in names)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/celery/bin/purge.py", line 62, in
messages = sum(_purge(conn, queue) for queue in names)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/celery/bin/purge.py", line 57, in _purge
return conn.default_channel.queue_purge(queue) or 0
File "/opt/pysetup/.venv/lib/python3.10/site-packages/kombu/connection.py", line 895, in default_channel
self._ensure_connection(**conn_opts)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/kombu/connection.py", line 433, in _ensure_connection
return retry_over_time(
File "/opt/pysetup/.venv/lib/python3.10/site-packages/kombu/utils/functional.py", line 312, in retry_over_time
return fun(*args, **kwargs)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/kombu/connection.py", line 877, in _connection_factory
self._connection = self._establish_connection()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/kombu/connection.py", line 812, in _establish_connection
conn = self.transport.establish_connection()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/kombu/transport/virtual/base.py", line 949, in establish_connection
self._avail_channels.append(self.create_channel(self))
File "/opt/pysetup/.venv/lib/python3.10/site-packages/kombu/transport/virtual/base.py", line 927, in create_channel
channel = self.Channel(connection)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/kombu/transport/redis.py", line 737, in init
self.client.ping()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/redis/commands/core.py", line 1132, in ping
return self.execute_command("PING", **kwargs)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/redis/client.py", line 1235, in execute_command
conn = self.connection or pool.get_connection(command_name, **options)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/redis/connection.py", line 1387, in get_connection
connection.connect()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/redis/connection.py", line 611, in connect
sock = self.retry.call_with_retry(
File "/opt/pysetup/.venv/lib/python3.10/site-packages/redis/retry.py", line 49, in call_with_retry
fail(error)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/redis/connection.py", line 612, in
lambda: self._connect(), lambda error: self.disconnect(error)
TypeError: Channel._connparams..Connection.disconnect() takes 1 positional argument but 2 were given
[2023-06-28 11:05:33 +0000] [32] [INFO] Starting gunicorn 20.1.0
[2023-06-28 11:05:33 +0000] [32] [INFO] Listening at: http://0.0.0.0:8443 (32)
[2023-06-28 11:05:33 +0000] [32] [INFO] Using worker: sync
[2023-06-28 11:05:33 +0000] [33] [INFO] Booting worker with pid: 33
/opt/pysetup/.venv/lib/python3.10/site-packages/celery/platforms.py:840: SecurityWarning: You're running the worker with superuser privileges: this is
absolutely not recommended!

Please specify a different user using the --uid option.

User information: uid=0 euid=0 gid=0 egid=0

warnings.warn(SecurityWarning(ROOT_DISCOURAGED.format(

-------------- celery@d2595b795205 v5.2.7 (dawn-chorus)
--- ***** -----
-- ******* ---- Linux-5.4.0-1103-aws-x86_64-with-glibc2.28 2023-06-28 11:05:35

  • *** --- * ---
  • ** ---------- [config]
  • ** ---------- .> app: Essential Bot Tasks:0x7f6204184a00
  • ** ---------- .> transport: redis://redis:6379//
  • ** ---------- .> results: redis://redis/
  • *** --- * --- .> concurrency: {min=5, max=10} (prefork)
    -- ******* ---- .> task events: ON
    --- ***** -----
    -------------- [queues]
    .> celery exchange=celery(direct) key=celery

[tasks]
. download_updater
. ravager.celery_tasks.tasks.clean_database
. ravager.celery_tasks.tasks.keep_heroku_alive
. ravager.celery_tasks.tasks.restart_heroku
. start_download
. start_upload

"2023-06-28 11:05:40,488 — telegram.vendor.ptb_urllib3.urllib3.connectionpool — WARNING — urlopen:689 — Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by 'ConnectTimeoutError(<telegram.vendor.ptb_urllib3.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9abb2a9390>, 'Connection to api.telegram.org timed out. (connect timeout=5.0)')': /bot5623099390:AAFpibdnmq7VStUm1chOpynZ_xamvmZyqZQ/deleteWebhook"
"2023-06-28 11:05:45,495 — telegram.vendor.ptb_urllib3.urllib3.connectionpool — WARNING — urlopen:689 — Retrying (Retry(total=1, connect=None, read=None, redirect=None)) after connection broken by 'ConnectTimeoutError(<telegram.vendor.ptb_urllib3.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9abb2a9630>, 'Connection to api.telegram.org timed out. (connect timeout=5.0)')': /bot5623099390:AAFpibdnmq7VStUm1chOpynZ_xamvmZyqZQ/deleteWebhook"
"2023-06-28 11:05:50,501 — telegram.vendor.ptb_urllib3.urllib3.connectionpool — WARNING — urlopen:689 — Retrying (Retry(total=0, connect=None, read=None, redirect=None)) after connection broken by 'ConnectTimeoutError(<telegram.vendor.ptb_urllib3.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9abb2aa3e0>, 'Connection to api.telegram.org timed out. (connect timeout=5.0)')': /bot5623099390:AAFpibdnmq7VStUm1chOpynZ_xamvmZyqZQ/deleteWebhook"
[2023-06-28 11:05:55 +0000] [33] [ERROR] Exception in worker process
Traceback (most recent call last):
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connection.py", line 140, in _new_conn
conn = connection.create_connection(
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/util/connection.py", line 83, in create_connection
raise err
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/util/connection.py", line 73, in create_connection
sock.connect(sa)
TimeoutError: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connectionpool.py", line 614, in urlopen
httplib_response = self._make_request(conn, method, url,
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connectionpool.py", line 360, in _make_request
self._validate_conn(conn)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connectionpool.py", line 857, in _validate_conn
super(HTTPSConnectionPool, self)._validate_conn(conn)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connectionpool.py", line 289, in _validate_conn
conn.connect()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connection.py", line 284, in connect
conn = self._new_conn()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connection.py", line 144, in _new_conn
raise ConnectTimeoutError(
telegram.vendor.ptb_urllib3.urllib3.exceptions.ConnectTimeoutError: (<telegram.vendor.ptb_urllib3.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9abb2aa0b0>, 'Connection to api.telegram.org timed out. (connect timeout=5.0)')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/utils/request.py", line 259, in _request_wrapper
resp = self._con_pool.request(*args, **kwargs)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/request.py", line 68, in request
return self.request_encode_body(method, url, fields=fields,
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/request.py", line 148, in request_encode_body
return self.urlopen(method, url, **extra_kw)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/poolmanager.py", line 244, in urlopen
response = conn.urlopen(method, u.request_uri, **kw)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connectionpool.py", line 691, in urlopen
return self.urlopen(method, url, body, headers, retries,
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connectionpool.py", line 691, in urlopen
return self.urlopen(method, url, body, headers, retries,
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connectionpool.py", line 691, in urlopen
return self.urlopen(method, url, body, headers, retries,
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/connectionpool.py", line 665, in urlopen
retries = retries.increment(method, url, error=e, _pool=self,
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/vendor/ptb_urllib3/urllib3/util/retry.py", line 376, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
telegram.vendor.ptb_urllib3.urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.telegram.org', port=443): Max retries exceeded with url: /bot5623099390:AAFpibdnmq7VStUm1chOpynZ_xamvmZyqZQ/deleteWebhook (Caused by ConnectTimeoutError(<telegram.vendor.ptb_urllib3.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9abb2aa0b0>, 'Connection to api.telegram.org timed out. (connect timeout=5.0)'))

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/opt/pysetup/.venv/lib/python3.10/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
worker.init_process()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/gunicorn/workers/base.py", line 134, in init_process
self.load_wsgi()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
self.wsgi = self.app.wsgi()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
return self.load_wsgiapp()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
return util.import_app(self.app_uri)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/gunicorn/util.py", line 359, in import_app
mod = importlib.import_module(module)
File "/usr/local/lib/python3.10/importlib/init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1050, in _gcd_import
File "", line 1027, in _find_and_load
File "", line 1006, in _find_and_load_unlocked
File "", line 688, in _load_unlocked
File "", line 883, in exec_module
File "", line 241, in _call_with_frames_removed
File "/app/ravager/main.py", line 159, in
update_queue, job, dispatch = setup()
File "/app/ravager/main.py", line 117, in setup
bot.delete_webhook()
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/bot.py", line 133, in decorator
result = func(*args, **kwargs)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/bot.py", line 3206, in delete_webhook
result = self._post('deleteWebhook', data, timeout=timeout, api_kwargs=api_kwargs)
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/bot.py", line 298, in _post
return self.request.post(
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/utils/request.py", line 361, in post
result = self._request_wrapper(
File "/opt/pysetup/.venv/lib/python3.10/site-packages/telegram/utils/request.py", line 265, in _request_wrapper
raise NetworkError(f'urllib3 HTTPError {error}') from error
telegram.error.NetworkError: urllib3 HTTPError HTTPSConnectionPool(host='api.telegram.org', port=443): Max retries exceeded with url: /bot5623099390:AAFpibdnmq7VStUm1chOpynZ_xamvmZyqZQ/deleteWebhook (Caused by ConnectTimeoutError(<telegram.vendor.ptb_urllib3.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9abb2aa0b0>, 'Connection to api.telegram.org timed out. (connect timeout=5.0)'))
[2023-06-28 11:05:55 +0000] [33] [INFO] Worker exiting (pid: 33)
[2023-06-28 11:05:55 +0000] [32] [INFO] Shutting down: Master
[2023-06-28 11:05:55 +0000] [32] [INFO] Reason: Worker failed to boot.
`

cant create redis server on heroku.

so heroku doesn't allow you to create a redis server anymore if you dont link a credit card. Would it be possible to use a free redis database from redis.com instead. I tried it but it isnt working because it gives you a "Public endpoint" and a database name and password instead of a simple redis url.

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.