当前位置: 首页 > news >正文

自己做免费手机网站吗网络营销难不难学

自己做免费手机网站吗,网络营销难不难学,现在做跨境电商平台有哪些,中企高呈网站建设本地短视频服务器 背景#xff1a;我的NAS中存放了很多短视频#xff0c;多到很多没看过#xff0c;于是写了这个程序来随机查看并删除短视频 运行#xff1a; 安装依赖后运行main.py 直接使用docker#xff1a; docker pull realwang/short_video docker run -d -p 3000:…本地短视频服务器 背景我的NAS中存放了很多短视频多到很多没看过于是写了这个程序来随机查看并删除短视频 运行 安装依赖后运行main.py 直接使用docker docker pull realwang/short_video docker run -d -p 3000:3000 -v /path/to/your/video:/app/video realwang/short_video 功能 扫描本地视频和图片并在网页上显示 在网页上 点赞和删除文件 上下滑动来切换文件 媒体文件放在video目录下 本地数据库 代码由4个文件组成 1.数据库操作 # database.pyimport sqlite3def init_db():conn sqlite3.connect(media.db)c conn.cursor()c.execute(CREATE TABLE IF NOT EXISTS media(id INTEGER PRIMARY KEY, name TEXT, path TEXT, views INTEGER DEFAULT 0, likes INTEGER DEFAULT 0))conn.commit()conn.close()def add_media(name, path):try:conn sqlite3.connect(media.db)c conn.cursor()c.execute(INSERT INTO media (name, path) VALUES (?, ?), (name, path))conn.commit()conn.close()return Trueexcept sqlite3.IntegrityError:# 处理重复键错误等数据库约束错误return Falseexcept Exception as e:print(fError inserting {name} into database: {str(e)})return Falsedef update_views(media_id):conn sqlite3.connect(media.db)c conn.cursor()c.execute(UPDATE media SET views views 1 WHERE id ?, (media_id,))conn.commit()conn.close()def update_likes(media_id):conn sqlite3.connect(media.db)c conn.cursor()c.execute(UPDATE media SET likes likes 1 WHERE id ?, (media_id,))conn.commit()conn.close()def delete_media(media_id):conn sqlite3.connect(media.db)c conn.cursor()c.execute(DELETE FROM media WHERE id ?, (media_id,))conn.commit()conn.close()def get_random_media():conn sqlite3.connect(media.db)c conn.cursor()c.execute(SELECT id, name, path FROM media ORDER BY RANDOM() LIMIT 1)media c.fetchone()conn.close()return media 2.文件扫描 #scanner.py import os import time import sqlite3 from database import init_db, add_mediadef scan_directory(directoryvideo):init_db()print(f扫描目录: {directory})for root, dirs, files in os.walk(directory):for file in files:if file.endswith((.mp4, .jpg, .png, .gif)):path os.path.join(root, file)print(f发现文件: {file} 路径: {path})try:result add_media(file, path)#print(fadd_media 返回: {result}) # Debug: Print the return valueif result:print(f插入 {file} 到数据库)else:print(f插入 {file} 到数据库失败)except Exception as e:print(f由于异常无法插入 {file} 到数据库: {str(e)})def incremental_scan(directoryvideo):scanned_files set()conn sqlite3.connect(media.db)c conn.cursor()c.execute(SELECT path FROM media)for row in c.fetchall():scanned_files.add(row[0])conn.close()print(开始增量扫描...)for root, dirs, files in os.walk(directory):for file in files:if file.endswith((.mp4, .jpg, .png, .gif)):path os.path.join(root, file)if path not in scanned_files:print(f发现新文件: {file} 路径: {path})try:result add_media(file, path)print(fadd_media 返回: {result}) # Debug: Print the return valueif result:print(f插入 {file} 到数据库)else:print(f插入 {file} 到数据库失败)except Exception as e:print(f由于异常无法插入 {file} 到数据库: {str(e)})else:print(f跳过已存在文件: {file})if __name__ __main__:init_db()while True:incremental_scan()time.sleep(3600) # 每小时扫描一次 3.web服务 #app.pyfrom flask import Flask, render_template, request, send_file, jsonify, send_from_directory import os import sqlite3 import random # 导入 random 模块 from database import init_db, update_views, update_likes, delete_media, get_random_mediaapp Flask(__name__)def is_video_file(path):return path.lower().endswith(.mp4)def is_image_file(path):return path.lower().endswith(.jpg) or path.lower().endswith(.jpeg) or path.lower().endswith(.png)def get_random_media():conn sqlite3.connect(media.db)c conn.cursor()rand_num random.random() # Generate a random number between 0 and 1if rand_num 0.9:c.execute(SELECT id, name, path FROM media WHERE path LIKE %.mp4 ORDER BY RANDOM() LIMIT 1;)else:c.execute(SELECT id, name, path FROM media WHERE path LIKE %.jpg OR path LIKE %.jpeg OR path LIKE %.png ORDER BY RANDOM() LIMIT 1;)media c.fetchone()conn.close()return mediaapp.route(/) def index():media get_random_media()if media:media_id, name, path mediaupdate_views(media_id)conn sqlite3.connect(media.db)c conn.cursor()c.execute(SELECT likes FROM media WHERE id ?, (media_id,))likes c.fetchone()[0]conn.close()return render_template(index.html, media_idmedia_id, namename, pathpath, likeslikes,is_videois_video_file(path), is_imageis_image_file(path))return No media foundapp.route(/media/path:filename) def media(filename):return send_from_directory(directoryos.path.dirname(filename), pathos.path.basename(filename))app.route(/like/int:media_id, methods[POST]) def like(media_id):update_likes(media_id)conn sqlite3.connect(media.db)c conn.cursor()c.execute(SELECT likes FROM media WHERE id ?, (media_id,))likes c.fetchone()[0]conn.close()return jsonify(successTrue, likeslikes)app.route(/delete/int:media_id, methods[POST]) def delete(media_id):conn sqlite3.connect(media.db)c conn.cursor()c.execute(SELECT path FROM media WHERE id ?, (media_id,))path c.fetchone()[0]conn.close()if os.path.exists(path):os.remove(path)delete_media(media_id)return jsonify(successTrue)app.route(/download/int:media_id) def download(media_id):conn sqlite3.connect(media.db)c conn.cursor()c.execute(SELECT path FROM media WHERE id ?, (media_id,))path c.fetchone()[0]conn.close()return send_file(path, as_attachmentTrue)if __name__ __main__:init_db() # 确保数据库和表被初始化app.run(host0.0.0.0, port3000, debugTrue) 4.启动器 import os import threading import time# 定义运行scanner.py的函数 def run_scanner():# 清空并创建scanner.log文件with open(log/scanner.log, wb) as f:passos.system(python scanner.py log/scanner.log 21)# 定义运行app.py的函数 def run_app():# 清空并创建app.log文件with open(log/app.log, wb) as f:passos.system(python app.py log/app.log 21)if __name__ __main__:# 创建log子目录os.makedirs(log, exist_okTrue)# 创建并启动线程运行scanner.pyscanner_thread threading.Thread(targetrun_scanner)scanner_thread.start()# 等待3秒钟time.sleep(3)# 创建并启动线程运行app.pyapp_thread threading.Thread(targetrun_app)app_thread.start()
http://www.hkea.cn/news/14357525/

相关文章:

  • 租车网站系统规划国外文本排版设计网站
  • 厦门专业做网站湖州建设培训入口网站
  • 亦庄公司做网站网站首页策划
  • 西安网站建设外包长春网站建设模板制作
  • 最炫的网站期货直播室网站建设
  • 中国旅游网站排名天津seo数据监控
  • 做视频网站需要多大空间网站不绑定域名解析
  • 专题网站建设策划方案网站建设策略营销
  • 天津网站建设定制东营建设信息网站电话
  • 做网站需要深圳保障性住房和安居房的区别
  • 开网站建设公司好公司名高端大气不重名
  • 嘉兴做网站费用wordpress问卷模板下载
  • 网站宽屏版网站没有百度快照
  • 网站建设前准备工作网站首页图片怎么更换
  • 如何做一个移动网站台州网站建设 推广公司
  • 郑州400建站网站建设购物网站
  • 四川法制建设网站兴仁企业建站公司
  • 国防教育网站建设说明书网站制作商家入驻
  • 珠海专业网站制作公司seo网页推广
  • 外贸零售网站建设做pop网站
  • 图文网站建设樟木头电子网站建设报价
  • 大学网站设计网络营销推广的技巧有哪些
  • 做美食的网站哪个好做面点的网站
  • 做资格核查在哪个网站移动电子商务的概念
  • 网站编辑兼职免费的软件下载安装
  • 公司网站开发招标书电子商务网站建设与管理实务
  • 哪家企业网站建设好建设一个跟京东一样的网站
  • php 快速网站开发简网app工场怎么创app
  • h5网站如何做wordpress 数据库 缓存6
  • 郑州房地产网站建立网站数据库实验报告