Skip to content

Commit 89d653b

Browse files
author
mithmith
committed
WIP: update int4 to int8 (BigInteger)
1 parent ac46ef1 commit 89d653b

3 files changed

Lines changed: 66 additions & 64 deletions

File tree

migrations/versions/2024_03_10_0047-e5c52e63bc97_initial.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,11 @@ def upgrade() -> None:
7474
sa.Column("title", sa.String(), nullable=False),
7575
sa.Column("description", sa.String(), nullable=True),
7676
sa.Column("duration", sa.Integer(), nullable=False),
77-
sa.Column("view_count", sa.Integer(), nullable=True),
77+
sa.Column("view_count", sa.BigInteger(), nullable=True),
7878
sa.Column("upload_date", sa.DateTime(), nullable=True),
79-
sa.Column("like_count", sa.Integer(), nullable=True, server_default="0"),
79+
sa.Column("like_count", sa.BigInteger(), nullable=True, server_default="0"),
8080
sa.Column("defaultaudiolanguage", sa.String(), nullable=True),
81-
sa.Column("comment_count", sa.Integer(), nullable=True, server_default="0"),
81+
sa.Column("comment_count", sa.BigInteger(), nullable=True, server_default="0"),
8282
sa.Column("last_update", sa.DateTime(), nullable=True, server_default=sa.text("now()")),
8383
sa.ForeignKeyConstraint(
8484
["channel_id"], [f"{settings.db_schema}.channels.channel_id"], name="videos_channel_id_fkey"
@@ -91,11 +91,11 @@ def upgrade() -> None:
9191
op.create_index("videos_channel_id_idx", "videos", ["channel_id"], schema=settings.db_schema)
9292
op.create_table(
9393
"video_history",
94-
sa.Column("id", sa.Integer(), nullable=False),
94+
sa.Column("id", sa.BigInteger(), nullable=False),
9595
sa.Column("video_id", sa.dialects.postgresql.UUID(as_uuid=True), nullable=False),
96-
sa.Column("view_count", sa.Integer(), nullable=True),
97-
sa.Column("like_count", sa.Integer(), nullable=True),
98-
sa.Column("comment_count", sa.Integer(), nullable=True),
96+
sa.Column("view_count", sa.BigInteger(), nullable=True),
97+
sa.Column("like_count", sa.BigInteger(), nullable=True),
98+
sa.Column("comment_count", sa.BigInteger(), nullable=True),
9999
sa.Column("recorded_at", sa.DateTime(), nullable=False, server_default=sa.text("now()")),
100100
sa.ForeignKeyConstraint(["video_id"], [f"{settings.db_schema}.videos.id"], name="video_history_video_id_fkey"),
101101
sa.PrimaryKeyConstraint("id", name="video_history_pkey"),

run_youtube_worker.sh

Lines changed: 58 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
ACTION=$1 # start|stop|logs|restart
1212
ENV_FILE=$2 # /path/to/*.env
1313
CHANNELS_JSON=$3 # /path/to/*.json
14-
MODE=$4 # -d (detach) или пусто
14+
MODE=$4 # -d или пусто
1515

1616
# Проверка аргументов
1717
if [[ -z "$ACTION" || -z "$ENV_FILE" ]]; then
@@ -22,7 +22,7 @@ fi
2222

2323
# Если start, то требуем JSON-файл
2424
if [[ "$ACTION" == "start" && -z "$CHANNELS_JSON" ]]; then
25-
echo "❌ Ошибка: для команды start необходимо указать JSON-файл!"
25+
echo "❌ Ошибка: для команды start нужно указать JSON-файл!"
2626
exit 1
2727
fi
2828

@@ -35,32 +35,26 @@ fi
3535
# Загружаем переменные из .env (убирая строки с #)
3636
export $(grep -v '^#' "$ENV_FILE" | xargs)
3737

38-
# -------------------------------------------
39-
# Подготавливаем нужные переменные окружения
40-
# -------------------------------------------
41-
42-
# DOCKER_NETWORK (если не задана в env, используем default)
38+
# --------------------------------------------------------------------
39+
# Готовим основные переменные (если чего-то нет, можно задать дефолт)
40+
# --------------------------------------------------------------------
4341
if [[ -z "$DOCKER_NETWORK" ]]; then
4442
DOCKER_NETWORK="proxy_net"
4543
fi
4644

47-
# DOCKER_IMAGE (если не задана, пусть будет youtube-monitoring-app)
4845
if [[ -z "$DOCKER_IMAGE" ]]; then
4946
DOCKER_IMAGE="youtube-monitoring-app"
5047
fi
5148

52-
# CONTAINER_NAME формируем на основе JSON-файла (youtube-имя_файла)
53-
# Пример: channels_list.json -> youtube-channels_list
49+
# Генерируем имя контейнера на основе JSON-файла (без .json)
5450
if [[ "$ACTION" == "start" ]]; then
5551
CONTAINER_NAME="youtube-$(basename "$CHANNELS_JSON" .json)"
5652
else
57-
# Если мы делаем stop|logs|restart, контейнер нужно как-то определить
58-
# Либо также генерируем имя, либо (более надёжно) попросим указывать явно.
59-
# Для простоты используем ту же логику:
53+
# Для stop/logs/restart — аналогично
6054
CONTAINER_NAME="youtube-$(basename "$CHANNELS_JSON" .json)"
6155
fi
6256

63-
# Проверяем, существует ли сеть
57+
# Проверяем, существует ли указанная сеть, если нет, создаём
6458
if ! docker network ls --format '{{.Name}}' | grep -q "^$DOCKER_NETWORK$"; then
6559
echo "🌐 Сеть $DOCKER_NETWORK не найдена. Создаю..."
6660
docker network create "$DOCKER_NETWORK"
@@ -70,40 +64,49 @@ if ! docker network ls --format '{{.Name}}' | grep -q "^$DOCKER_NETWORK$"; then
7064
fi
7165
fi
7266

73-
# Логи: LOGS_PATH (внутри контейнера будет /app/logs)
74-
if [[ -z "$LOGS_PATH" ]]; then
75-
echo "⚠️ LOGS_PATH не задан в .env! Логи не будут проброшены."
76-
MOUNT_LOGS=""
67+
# Сборка монтирований (если HOST_* и *PATH заданы)
68+
# 1) ЛОГИ
69+
if [[ -n "$HOST_LOGS_PATH" && -n "$LOGS_PATH" ]]; then
70+
mkdir -p "$HOST_LOGS_PATH"
71+
MOUNT_LOGS="-v \"$(realpath "$HOST_LOGS_PATH"):$LOGS_PATH\""
7772
else
78-
mkdir -p "$LOGS_PATH"
79-
MOUNT_LOGS="-v \"$(realpath "$LOGS_PATH"):/app/logs\""
73+
MOUNT_LOGS=""
8074
fi
8175

82-
# Хранилище: STORAGE_PATH (внутри контейнера /app/storage — или как вам нужно)
83-
if [[ -z "$STORAGE_PATH" ]]; then
84-
echo "⚠️ STORAGE_PATH не задан в .env! Не будет папки для скачанных файлов."
85-
MOUNT_STORAGE=""
76+
# 2) ХРАНИЛИЩЕ
77+
if [[ -n "$HOST_STORAGE_PATH" && -n "$STORAGE_PATH" ]]; then
78+
mkdir -p "$HOST_STORAGE_PATH"
79+
MOUNT_STORAGE="-v \"$(realpath "$HOST_STORAGE_PATH"):$STORAGE_PATH\""
8680
else
87-
mkdir -p "$STORAGE_PATH"
88-
MOUNT_STORAGE="-v \"$(realpath "$STORAGE_PATH"):/app/storage\""
81+
MOUNT_STORAGE=""
8982
fi
9083

91-
# Шаблоны
92-
if [[ -n "$TG_NEW_VIDEO_TEMPLATE" && -f "$TG_NEW_VIDEO_TEMPLATE" ]]; then
93-
MOUNT_NEW_VIDEO="-v \"$(realpath "$TG_NEW_VIDEO_TEMPLATE"):/app/templates/new_video.md\""
84+
# 3) Шаблоны: new_video.md
85+
if [[ -n "$HOST_TG_NEW_VIDEO_TEMPLATE" && -n "$TG_NEW_VIDEO_TEMPLATE" && -f "$HOST_TG_NEW_VIDEO_TEMPLATE" ]]; then
86+
MOUNT_NEW_VIDEO="-v \"$(realpath "$HOST_TG_NEW_VIDEO_TEMPLATE"):$TG_NEW_VIDEO_TEMPLATE\""
9487
else
9588
MOUNT_NEW_VIDEO=""
9689
fi
9790

98-
if [[ -n "$TG_SHORTS_TEMPLATE" && -f "$TG_SHORTS_TEMPLATE" ]]; then
99-
MOUNT_SHORTS="-v \"$(realpath "$TG_SHORTS_TEMPLATE"):/app/templates/shorts.md\""
91+
# 4) Шаблоны: shorts.md
92+
if [[ -n "$HOST_TG_SHORTS_TEMPLATE" && -n "$TG_SHORTS_TEMPLATE" && -f "$HOST_TG_SHORTS_TEMPLATE" ]]; then
93+
MOUNT_SHORTS="-v \"$(realpath "$HOST_TG_SHORTS_TEMPLATE"):$TG_SHORTS_TEMPLATE\""
10094
else
10195
MOUNT_SHORTS=""
10296
fi
10397

104-
# Собираем аргументы для docker run
105-
# Каналы будут внутри контейнера как /app/channels_list.json
106-
RUN_DOCKER_CMD="
98+
# Список каналов монтируем в /app/channels_list.json (внутри контейнера)
99+
# (Программа должна читать именно /app/channels_list.json, либо берёт путь из env)
100+
if [[ "$ACTION" == "start" ]]; then
101+
if [[ ! -f "$CHANNELS_JSON" ]]; then
102+
echo "❌ Ошибка: файл JSON '$CHANNELS_JSON' не найден!"
103+
exit 1
104+
fi
105+
MOUNT_CHANNELS="-v \"$(realpath "$CHANNELS_JSON"):/app/channels_list.json\""
106+
fi
107+
108+
# Собираем docker run команду
109+
RUN_CMD="
107110
docker run \
108111
--name \"$CONTAINER_NAME\" \
109112
--network \"$DOCKER_NETWORK\" \
@@ -112,39 +115,38 @@ $MOUNT_LOGS \
112115
$MOUNT_STORAGE \
113116
$MOUNT_NEW_VIDEO \
114117
$MOUNT_SHORTS \
115-
-v \"$(realpath "$CHANNELS_JSON"):/app/channels_list.json\" \
118+
$MOUNT_CHANNELS \
116119
"
117120

118-
# Если фоновый режим
121+
# Если просили фоновый режим
119122
if [[ "$MODE" == "-d" ]]; then
120-
RUN_DOCKER_CMD="$RUN_DOCKER_CMD -d"
123+
RUN_CMD="$RUN_CMD -d"
121124
else
122-
# интерактивный + автоматическое удаление после остановки
123-
RUN_DOCKER_CMD="$RUN_DOCKER_CMD --rm"
125+
# Интерактивно + удалять контейнер после остановки
126+
RUN_CMD="$RUN_CMD --rm"
124127
fi
125128

126-
# Дополняем командой об образе
127-
RUN_DOCKER_CMD="$RUN_DOCKER_CMD $DOCKER_IMAGE
129+
# Дополняем указанием образа
130+
RUN_CMD="$RUN_CMD $DOCKER_IMAGE
128131
"
129132

130-
# -------------------------------------------
131-
# Ветки действий
132-
# -------------------------------------------
133+
# -------------------------------------------------------------------
134+
# Запускаем в зависимости от ACTION
135+
# -------------------------------------------------------------------
133136
case "$ACTION" in
134137
start)
135-
# Проверяем, есть ли такой контейнер (в любом статусе)
138+
# Если контейнер уже есть (в любом статусе), стоп/удаление
136139
if docker ps -a --format '{{.Names}}' | grep -q "^$CONTAINER_NAME$"; then
137140
echo "⚠️ Контейнер $CONTAINER_NAME уже существует. Останавливаю и удаляю..."
138141
docker stop "$CONTAINER_NAME"
139142
docker rm "$CONTAINER_NAME"
140143
fi
141-
144+
142145
echo "🚀 Запускаем контейнер: $CONTAINER_NAME"
143-
echo " Образ: $DOCKER_IMAGE"
144-
echo " Сеть: $DOCKER_NETWORK"
145-
echo " JSON: $CHANNELS_JSON"
146-
# Выполняем команду
147-
eval "$RUN_DOCKER_CMD"
146+
echo " Образ: $DOCKER_IMAGE"
147+
echo " Сеть: $DOCKER_NETWORK"
148+
echo " JSON: $CHANNELS_JSON"
149+
eval "$RUN_CMD"
148150
;;
149151

150152
stop)
@@ -167,11 +169,11 @@ case "$ACTION" in
167169
*)
168170
echo "Usage: $0 {start|stop|logs|restart} /path/to/envfile /path/to/json [-d]"
169171
echo "Примеры:"
170-
echo " $0 start /home/user/my.env /home/user/list.json # Запуск в интерактивном режиме"
171-
echo " $0 start /home/user/my.env /home/user/list.json -d # Запуск в фоновом режиме"
172-
echo " $0 stop /home/user/my.env /home/user/list.json # Остановка контейнера"
173-
echo " $0 logs /home/user/my.env /home/user/list.json # Просмотр логов"
174-
echo " $0 restart /home/user/my.env /home/user/list.json # Перезапуск контейнера"
172+
echo " $0 start /home/user/my.env /home/user/list.json # интерактив"
173+
echo " $0 start /home/user/my.env /home/user/list.json -d # в фоне"
174+
echo " $0 stop /home/user/my.env /home/user/list.json # остановка"
175+
echo " $0 logs /home/user/my.env /home/user/list.json # логи"
176+
echo " $0 restart /home/user/my.env /home/user/list.json # перезапуск"
175177
exit 1
176178
;;
177179
esac

templates/new_video.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
🎥 **[{{ video_title }}]({{ video_url }})**
2-
На канале «[{{ channel_name }}]({{ channel_url }})» 📺 вышло новое видео\!
2+
На канале 📺 «[{{ channel_name }}]({{ channel_url }})» вышло новое видео\!
33
🎬 {{ all_hashtags }}

0 commit comments

Comments
 (0)