django搭建一个AI博客进行YouTube视频自动生成文字博客,Django搭建AI博客,实现YouTube视频自动生成文字博客功能

马肤

温馨提示:这篇文章已超过453天没有更新,请注意相关的内容是否还可用!

摘要:使用Django框架搭建一个AI博客平台,该平台具备自动生成文字博客的功能。通过集成YouTube视频解析技术与自然语言处理技术,实现将YouTube视频内容自动转化为文字博客。用户上传视频后,AI博客平台能够提取视频中的关键信息,并生成相应的文字描述,为用户提供便捷的视频内容分享与文字记录体验。

文章目录

  • 一、生成Django框架
  • 二、项目代码(前端)
    • 1、编写前端代码(正文界面)
      • 1.1、生产html框架
      • 1.2、添加live preview扩展
      • 1.3、更改title元素中文本
      • 1.4、添加CDN(CSS)样式链接
      • 1.5、nav标签
      • 1.6、在body标签中添加类
      • 1.7、nav下创建div标签
      • 1.8、当前界面预览
      • 1.9、在div标签后添加footer
      • 1.10、完整代码
      • 2、编写前端代码(登录注册界面)
        • 2.1、创建html框架并添加cdn样式表
        • 2.2、创建密码登录框(完整代码)
        • 3、编写前端代码(注册页面)
          • 3.1、完整代码
          • 4、编写前端代码(文章保存记录)
            • 4.1、完整代码
            • 5、编写前端代码(文章页面)
              • 5.1、完整代码
              • 三、Django代码(后端)
                • 1、添加app功能
                • 2、blog_generato添加index视图(views.py)
                • 3、添加数据库
                • 4、创建管理员用户
                  • 4.1、后台中文化
                  • 4.2、在blog_generato下的urls.py中添加url
                  • 4.3、将注册登录html页面添加到views中
                  • 5、获取ai转换
                  • 6、获取openai秘钥
                  • 四、修改后的完整代码(前后端)
                    • 1、 ai_blog_app--> settings.py
                    • 2、ai_blog_app--> urls.py
                    • 3、ai_blog_app --> _init_.py
                    • 4、blog_generato --> admin.py
                    • 5、blog_generato --> models.py
                    • blog_generato --> urls.py
                    • 7、 blog_generato --> viwes.py
                    • 8、templates --> all-logs.html(修改后)
                    • 9、templates -->blog-details.html(修改后)
                    • 10、templates -->index.html(修改后)
                    • 11、templates -->https://blog.csdn.net/weixin_44774550/article/details/login.html(修改后)
                    • 12、templates -->https://blog.csdn.net/weixin_44774550/article/details/signup.html(修改后)

                      一、生成Django框架

                      我这里使用的是PyCharm 2021.3.3

                      创建流程:

                      • 打开PyCharm
                      • 点击左上角File
                      • 选择New Project
                      • 选择Django
                      • 最后点击Create
                      • 然后在Django项目中添加一个文件夹,以便用来保存html文件

                        django搭建一个AI博客进行YouTube视频自动生成文字博客,Django搭建AI博客,实现YouTube视频自动生成文字博客功能 第1张

                        二、项目代码(前端)

                        1、编写前端代码(正文界面)

                        1.1、生产html框架

                        使用Visual Studio Code打开你刚刚在django项目创建的用来编写html文件的文件夹

                        首先创建一个index.html文件

                        django搭建一个AI博客进行YouTube视频自动生成文字博客,Django搭建AI博客,实现YouTube视频自动生成文字博客功能 第2张

                        英文感叹号加回车键生成html框架

                        django搭建一个AI博客进行YouTube视频自动生成文字博客,Django搭建AI博客,实现YouTube视频自动生成文字博客功能 第3张

                        1.2、添加live preview扩展

                        Live Preview 扩展的作用是在VSCode内部实现边写边预览的效果。

                        这个扩展主要用于HTML文件,它允许开发者在编写代码的同时实时查看代码渲染的效果,而不需要离开编辑器或打开浏览器。具体来说,Live Preview 扩展提供了以下几个便利的功能:

                        实时预览:当你在编辑HTML文件时,任何对代码的更改都会立即反映在预览窗口中,这样你可以即时看到改动效果,提高开发效率。

                        高度集成:作为微软官方插件,Live Preview与VSCode的集成程度非常高,使用起来非常流畅和方便。

                        简化操作:相比于其他如LiveServer等插件,Live Preview无需额外的保存和重启服务步骤,减少了繁琐的操作流程。

                        易于安装:你可以通过VSCode的扩展商店直接搜索并安装Live Preview,安装过程简单快捷。

                        自定义布局:你可以根据自己的需要调整预览窗口的位置,选择向上/下/左/右拆分,以适应不同的工作流程和屏幕布局。

                        django搭建一个AI博客进行YouTube视频自动生成文字博客,Django搭建AI博客,实现YouTube视频自动生成文字博客功能 第4张

                        直接安装即可

                        右键点击index.html文件,然后选择显示预览

                        django搭建一个AI博客进行YouTube视频自动生成文字博客,Django搭建AI博客,实现YouTube视频自动生成文字博客功能 第5张

                        1.3、更改title元素中文本

                        更改第六行的title元素

                        AI 博客
                        

                        然后ctrl + s保存

                        1.4、添加CDN(CSS)样式链接

                        在第七行添加css的链接

                         

                        1.5、nav标签

                        从第十一行开始为nav标签

                            
                                
                            
                        

                        在第一个nav标签中添加一个类

                            
                            
                        

                        在nav标签中添加div标签

                        AI 博客生成器

                        1.6、在body标签中添加类

                         

                        1.7、nav下创建div标签

                        创建h2标签之前先要创建三对div标签,三十八行到四十五行

                           

                        欢迎来到AI博客生成器

                        在最后一对div标签中创建h2和p标签

                           

                        欢迎来到AI博客生成器

                        使用人工智能从YouTube视频中生成高质量的博客文章。 只需输入链接到下面的YouTube视频,让人工智能为你创建内容!

                        为前面两对div添加元素

                           

                        欢迎来到AI博客生成器

                        使用人工智能从YouTube视频中生成高质量的博客文章。 只需输入链接到下面的YouTube视频,让人工智能为你创建内容!

                        1.8、当前界面预览

                        django搭建一个AI博客进行YouTube视频自动生成文字博客,Django搭建AI博客,实现YouTube视频自动生成文字博客功能 第6张

                        在第二对div标签中添加内容

                            

                        欢迎来到AI博客生成器

                        使用人工智能从YouTube视频中生成高质量的博客文章。 只需输入链接到下面的YouTube视频,让人工智能为你创建内容!


                        请输入YouTube视频链接

                        提交

                        添加section标签

                            

                        欢迎来到AI博客生成器

                        使用人工智能从YouTube视频中生成高质量的博客文章。 只需输入链接到下面的YouTube视频,让人工智能为你创建内容!


                        请输入YouTube视频链接

                        提交

                        生产博客文章

                        1.9、在div标签后添加footer

                            
                                作者YouTube链接
                            
                        

                        1.10、完整代码

                        
                        
                            
                            
                            AI 博客
                            
                            
                                @keyframes rotatehttps://blog.csdn.net/weixin_44774550/article/details/{
                                    fromhttps://blog.csdn.net/weixin_44774550/article/details/{
                                        transform: rotate(0deg);
                                    }
                                    tohttps://blog.csdn.net/weixin_44774550/article/details/{
                                        transform: rotate(360deg);
                                    }
                                }
                                @-webkit-keyframes rotatehttps://blog.csdn.net/weixin_44774550/article/details/{
                                    fromhttps://blog.csdn.net/weixin_44774550/article/details/{
                                        -webkit-transform: rotate(0deg);
                                    }
                                    tohttps://blog.csdn.net/weixin_44774550/article/details/{
                                        -webkit-transform: rotate(360deg);
                                    }
                                }
                                .loadhttps://blog.csdn.net/weixin_44774550/article/details/{
                                    width: 100px;
                                    height: 100px;
                                    margin: 110px auto 0;
                                    border: solid 10px #8822aa;
                                    border-radius: 50%;
                                    border-right-color: transparent;
                                    border-bottom-color: transparent ;
                                     -webkit-transform: all 0.5s ease-in;
                                    -webkit-animation-name: rotate;
                                    -webkit-animation-duration: 1.0s;
                                    -webkit-animation-iteration-count: infinite;
                                    -webkit-animation-timing-function: linear;
                                        transition: all 0.5s ease-in;
                                        animation-name: rotate;
                                        animation-iteration-count: infinite;
                                        animation-timing-function: linear;
                                }
                            
                        
                        
                            
                                

                        AI 博客生成器



                        欢迎来到AI博客生成器

                        使用人工智能从YouTube视频中生成高质量的博客文章。 只需输入链接到下面的YouTube视频,让人工智能为你创建内容!


                        请输入YouTube视频链接

                        提交

                        生产博客文章

                        作者YouTube链接

                        django搭建一个AI博客进行YouTube视频自动生成文字博客,Django搭建AI博客,实现YouTube视频自动生成文字博客功能 第7张

                        2、编写前端代码(登录注册界面)

                        2.1、创建html框架并添加cdn样式表

                        
                        
                            
                            
                            AI博客-登录
                            
                        
                        
                        
                        
                        

                        2.2、创建密码登录框(完整代码)

                        
                        
                            
                            
                            AI博客-登录
                            
                        
                        
                            
                                

                        AI 博客生成器

                        登录

                        用户名
                        密码
                        登录

                        django搭建一个AI博客进行YouTube视频自动生成文字博客,Django搭建AI博客,实现YouTube视频自动生成文字博客功能 第8张

                        3、编写前端代码(注册页面)

                        3.1、完整代码

                        
                        
                            
                            
                            AI博客-注册
                            
                        
                        
                            
                                

                        AI 博客生成器


                        注册

                        用户名
                        邮箱地址
                        密码
                        密码确认
                        注册

                        django搭建一个AI博客进行YouTube视频自动生成文字博客,Django搭建AI博客,实现YouTube视频自动生成文字博客功能 第9张

                        4、编写前端代码(文章保存记录)

                        4.1、完整代码

                        
                        
                            
                            
                            AI博客-历史记录
                            
                        
                        
                            
                                

                        AI 博客生成器



                        AI博客-历史记录

                        博客文章标题1

                        这是博客文章的内容,非常感谢

                        博客文章标题1

                        这是博客文章的内容,非常感谢








                        作者YouTube链接

                        django搭建一个AI博客进行YouTube视频自动生成文字博客,Django搭建AI博客,实现YouTube视频自动生成文字博客功能 第10张

                        5、编写前端代码(文章页面)

                        5.1、完整代码

                        
                        
                            
                            
                            博客文章
                            
                        
                        
                            
                                

                        AI 博客生成器

                        博客文章详情

                        博客文章标题

                        博客文章内容


                        YouTube标题

                        YouTube视频标签

                        YouTube链接

                        https://www.youtube.com







                        作者YouTube链接

                        三、Django代码(后端)

                        1、添加app功能

                        ai_blog_app是生成django模版时随着django生成的

                        django搭建一个AI博客进行YouTube视频自动生成文字博客,Django搭建AI博客,实现YouTube视频自动生成文字博客功能 第11张

                        INSTALLED_APPS = [
                            'django.contrib.admin',
                            'django.contrib.auth',
                            'django.contrib.contenttypes',
                            'django.contrib.sessions',
                            'django.contrib.messages',
                            'django.contrib.staticfiles',
                            'blog_generato'
                        ]
                        

                        然后将ai_blog_app中的urls.py复制到blog_generato中

                        django搭建一个AI博客进行YouTube视频自动生成文字博客,Django搭建AI博客,实现YouTube视频自动生成文字博客功能 第12张

                        在blog_generato下的urls.py中添加url

                        from  . import views
                        from django.urls import path
                        urlpatterns = [
                            path('', views.index,name="index"),
                        ]
                        

                        2、blog_generato添加index视图(views.py)

                        首先在ai_blog_app的urls.py文件中添加url路径

                        from django.contrib import admin
                        from django.urls import path,include
                        urlpatterns = [
                            path('admin/', admin.site.urls),
                            path('',include('blog_generato.urls'))
                        ]
                        

                        创建一个templates文件夹用来存放html前端代码,然后在ai_blog_app的settings.py问价中添加BASE_DIR , ‘templates’

                        TEMPLATES = [
                            https://blog.csdn.net/weixin_44774550/article/details/{
                                'BACKEND': 'django.template.backends.django.DjangoTemplates',
                                'DIRS': [BASE_DIR , 'templates']
                                ,
                                'APP_DIRS': True,
                                'OPTIONS': https://blog.csdn.net/weixin_44774550/article/details/{
                                    'context_processors': [
                                        'django.template.context_processors.debug',
                                        'django.template.context_processors.request',
                                        'django.contrib.auth.context_processors.auth',
                                        'django.contrib.messages.context_processors.messages',
                                    ],
                                },
                            },
                        ]
                        

                        3、添加数据库

                        首先连接mysql数据库

                        django搭建一个AI博客进行YouTube视频自动生成文字博客,Django搭建AI博客,实现YouTube视频自动生成文字博客功能 第13张

                        django搭建一个AI博客进行YouTube视频自动生成文字博客,Django搭建AI博客,实现YouTube视频自动生成文字博客功能 第14张

                        根据自己使用的数据库来选择

                        注意:记得pip instal pymysql来安装mysql,然后在ai_blog_app下的_init_.py中添加代码,且已经创建好了django中需要使用的mysql环境

                        import pymysql
                        pymysql.install_as_MySQLdb()
                        

                        然后更改ai_blog_app下settings.py中的mysql配置

                        DATABASES = https://blog.csdn.net/weixin_44774550/article/details/{
                            'default': https://blog.csdn.net/weixin_44774550/article/details/{
                                'ENGINE': 'django.db.backends.mysql',
                                'NAME': 'ai_blog_app',
                                'USER': 'root',
                                'PASSWORD': 'yuan3128..',
                                'HOST': 'localhost',
                                'PORT': '3306',
                            }
                        

                        最后进行数据库迁移

                        PS E:\ai_blog_app> python manage.py makemigrations
                        PS E:\ai_blog_app> python manage.py migrate
                        

                        4、创建管理员用户

                        PS E:\ai_blog_app> python manage.py createsuperuser
                        Username (leave blank to use 'yuanl'): (用户名)
                        Email address: (邮箱)
                        Password: (密码)
                        Password (again):(再次输入密码)
                        Superuser created successfully.
                        

                        然后运行django项目,在浏览器中输入http://127.0.0.1:8000/admin进入后台管理页面

                        django搭建一个AI博客进行YouTube视频自动生成文字博客,Django搭建AI博客,实现YouTube视频自动生成文字博客功能 第15张

                        4.1、后台中文化

                        在seetings.py文件中将配置项LANGUAGE_CODE的值设置为“zh-Hans” ,TIME_ZONE的值设置为"Asia/Shanghai"

                        在seetings.py文件中配置项MIDDLEWARE(中间件)中添加本地化中间件

                        “django.middleware.locale.LocaleMiddleware”

                        LANGUAGE_CODE = 'zh-Hans'
                        TIME_ZONE = 'UTC'
                        USE_I18N = True
                        USE_TZ = True
                        

                        4.2、在blog_generato下的urls.py中添加url

                        urlpatterns = [
                            path('', views.index,name="index"),
                            path('https://blog.csdn.net/weixin_44774550/article/details/login', views.https://blog.csdn.net/weixin_44774550/article/details/login, name="https://blog.csdn.net/weixin_44774550/article/details/login"),
                            path('https://blog.csdn.net/weixin_44774550/article/details/signup', views.https://blog.csdn.net/weixin_44774550/article/details/signup, name="https://blog.csdn.net/weixin_44774550/article/details/signup"),
                            path('logout', views.logout, name="logout"),
                        ]
                        

                        4.3、将注册登录html页面添加到views中

                        from django.shortcuts import render
                        # Create your views here.
                        def index(request):
                            return render(request,'index.html')
                        def user_https://blog.csdn.net/weixin_44774550/article/details/login(request):
                            return render(request,'https://blog.csdn.net/weixin_44774550/article/details/login.html')
                        def user_https://blog.csdn.net/weixin_44774550/article/details/signup(request):
                            return render(request,'https://blog.csdn.net/weixin_44774550/article/details/signup.html')
                        

                        修改https://blog.csdn.net/weixin_44774550/article/details/signup.html中的代码

                         
                        

                        修改https://blog.csdn.net/weixin_44774550/article/details/login.html中的代码

                         
                        

                        5、获取ai转换

                        地址:https://www.assemblyai.com/

                        注意:assemblyai库和websockets版本在10.0到11.0之间(根据自己的版本进行安装)

                        django搭建一个AI博客进行YouTube视频自动生成文字博客,Django搭建AI博客,实现YouTube视频自动生成文字博客功能 第16张

                        修改ai_blog_app中settings.py文件,并创建一个media文件夹

                        """
                        Django settings for ai_blog_app project.
                        Generated by 'django-admin startproject' using Django 5.0.
                        For more information on this file, see
                        https://docs.djangoproject.com/en/5.0/topics/settings/
                        For the full list of settings and their values, see
                        https://docs.djangoproject.com/en/5.0/ref/settings/
                        """
                        import os.path
                        from pathlib import Path
                        import os
                        # Build paths inside the project like this: BASE_DIR / 'subdir'.
                        BASE_DIR = Path(__file__).resolve().parent.parent
                        # Quick-start development settings - unsuitable for production
                        # See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/
                        # SECURITY WARNING: keep the secret key used in production secret!
                        SECRET_KEY = 'django-insecure-am#drmftow4qax@!l4v%_jg%pcr5)!@ibi*%@g(%he%!-i88#8'
                        # SECURITY WARNING: don't run with debug turned on in production!
                        DEBUG = True
                        ALLOWED_HOSTS = []
                        # Application definition
                        INSTALLED_APPS = [
                            'django.contrib.admin',
                            'django.contrib.auth',
                            'django.contrib.contenttypes',
                            'django.contrib.sessions',
                            'django.contrib.messages',
                            'django.contrib.staticfiles',
                            'blog_generato',
                        ]
                        MIDDLEWARE = [
                            'django.middleware.security.SecurityMiddleware',
                            'django.contrib.sessions.middleware.SessionMiddleware',
                            'django.middleware.common.CommonMiddleware',
                            'django.middleware.csrf.CsrfViewMiddleware',
                            'django.contrib.auth.middleware.AuthenticationMiddleware',
                            'django.contrib.messages.middleware.MessageMiddleware',
                            'django.middleware.clickjacking.XFrameOptionsMiddleware',
                        ]
                        ROOT_URLCONF = 'ai_blog_app.urls'
                        TEMPLATES = [
                            https://blog.csdn.net/weixin_44774550/article/details/{
                                'BACKEND': 'django.template.backends.django.DjangoTemplates',
                                'DIRS': [BASE_DIR , 'templates']
                                ,
                                'APP_DIRS': True,
                                'OPTIONS': https://blog.csdn.net/weixin_44774550/article/details/{
                                    'context_processors': [
                                        'django.template.context_processors.debug',
                                        'django.template.context_processors.request',
                                        'django.contrib.auth.context_processors.auth',
                                        'django.contrib.messages.context_processors.messages',
                                    ],
                                },
                            },
                        ]
                        WSGI_APPLICATION = 'ai_blog_app.wsgi.application'
                        # Database
                        # https://docs.djangoproject.com/en/5.0/ref/settings/#databases
                        # DATABASES = https://blog.csdn.net/weixin_44774550/article/details/{
                        #     'default': https://blog.csdn.net/weixin_44774550/article/details/{
                        #         'ENGINE': 'django.db.backends.sqlite3',
                        #         'NAME': BASE_DIR / 'db.sqlite3',
                        #     }
                        # }
                        DATABASES = https://blog.csdn.net/weixin_44774550/article/details/{
                            'default': https://blog.csdn.net/weixin_44774550/article/details/{
                                'ENGINE': 'django.db.backends.mysql',
                                'NAME': 'ai_blog_app',
                                'USER': 'root',
                                'PASSWORD': 'yuan3128..',
                                'HOST': '127.0.0.1',
                                'PORT': '3306',
                            }
                        }
                        # Password validation
                        # https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators
                        AUTH_PASSWORD_VALIDATORS = [
                            https://blog.csdn.net/weixin_44774550/article/details/{
                                'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
                            },
                            https://blog.csdn.net/weixin_44774550/article/details/{
                                'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
                            },
                            https://blog.csdn.net/weixin_44774550/article/details/{
                                'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
                            },
                            https://blog.csdn.net/weixin_44774550/article/details/{
                                'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
                            },
                        ]
                        # Internationalization
                        # https://docs.djangoproject.com/en/5.0/topics/i18n/
                        LANGUAGE_CODE = 'zh-Hans'
                        TIME_ZONE = 'UTC'
                        USE_I18N = True
                        USE_TZ = True
                        # Static files (CSS, JavaScript, Images)
                        # https://docs.djangoproject.com/en/5.0/howto/static-files/
                        STATIC_URL = 'static/'
                        # Default primary key field type
                        # https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field
                        DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
                        MEDIA_URL = '/media/'
                        MEDIA_ROOT = os.path.join(BASE_DIR,'media')
                        LOGIN_URL = 'https://blog.csdn.net/weixin_44774550/article/details/login'
                        

                        6、获取openai秘钥

                        地址:https://platform.openai.com/

                        因为地区原因无法注册

                        所以转文字功能无法使用

                        四、修改后的完整代码(前后端)

                        django搭建一个AI博客进行YouTube视频自动生成文字博客,Django搭建AI博客,实现YouTube视频自动生成文字博客功能 第17张

                        1、 ai_blog_app–> settings.py

                        import os.path
                        from pathlib import Path
                        import os
                        # Build paths inside the project like this: BASE_DIR / 'subdir'.
                        BASE_DIR = Path(__file__).resolve().parent.parent
                        # Quick-start development settings - unsuitable for production
                        # See https://docs.djangoproject.com/en/5.0/howto/deployment/checklist/
                        # SECURITY WARNING: keep the secret key used in production secret!
                        SECRET_KEY = 'django-insecure-am#drmftow4qax@!l4v%_jg%pcr5)!@ibi*%@g(%he%!-i88#8'
                        # SECURITY WARNING: don't run with debug turned on in production!
                        DEBUG = True
                        ALLOWED_HOSTS = []
                        # Application definition
                        INSTALLED_APPS = [
                            'django.contrib.admin',
                            'django.contrib.auth',
                            'django.contrib.contenttypes',
                            'django.contrib.sessions',
                            'django.contrib.messages',
                            'django.contrib.staticfiles',
                            'blog_generato',
                        ]
                        MIDDLEWARE = [
                            'django.middleware.security.SecurityMiddleware',
                            'django.contrib.sessions.middleware.SessionMiddleware',
                            'django.middleware.common.CommonMiddleware',
                            'django.middleware.csrf.CsrfViewMiddleware',
                            'django.contrib.auth.middleware.AuthenticationMiddleware',
                            'django.contrib.messages.middleware.MessageMiddleware',
                            'django.middleware.clickjacking.XFrameOptionsMiddleware',
                        ]
                        ROOT_URLCONF = 'ai_blog_app.urls'
                        TEMPLATES = [
                            https://blog.csdn.net/weixin_44774550/article/details/{
                                'BACKEND': 'django.template.backends.django.DjangoTemplates',
                                'DIRS': [BASE_DIR , 'templates']
                                ,
                                'APP_DIRS': True,
                                'OPTIONS': https://blog.csdn.net/weixin_44774550/article/details/{
                                    'context_processors': [
                                        'django.template.context_processors.debug',
                                        'django.template.context_processors.request',
                                        'django.contrib.auth.context_processors.auth',
                                        'django.contrib.messages.context_processors.messages',
                                    ],
                                },
                            },
                        ]
                        WSGI_APPLICATION = 'ai_blog_app.wsgi.application'
                        # Database
                        # https://docs.djangoproject.com/en/5.0/ref/settings/#databases
                        # DATABASES = https://blog.csdn.net/weixin_44774550/article/details/{
                        #     'default': https://blog.csdn.net/weixin_44774550/article/details/{
                        #         'ENGINE': 'django.db.backends.sqlite3',
                        #         'NAME': BASE_DIR / 'db.sqlite3',
                        #     }
                        # }
                        DATABASES = https://blog.csdn.net/weixin_44774550/article/details/{
                            'default': https://blog.csdn.net/weixin_44774550/article/details/{
                                'ENGINE': 'django.db.backends.mysql',
                                'NAME': 'ai_blog_app',
                                'USER': 'root',
                                'PASSWORD': 'yuan3128..',
                                'HOST': '127.0.0.1',
                                'PORT': '3306',
                            }
                        }
                        # Password validation
                        # https://docs.djangoproject.com/en/5.0/ref/settings/#auth-password-validators
                        AUTH_PASSWORD_VALIDATORS = [
                            https://blog.csdn.net/weixin_44774550/article/details/{
                                'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
                            },
                            https://blog.csdn.net/weixin_44774550/article/details/{
                                'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
                            },
                            https://blog.csdn.net/weixin_44774550/article/details/{
                                'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
                            },
                            https://blog.csdn.net/weixin_44774550/article/details/{
                                'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
                            },
                        ]
                        # Internationalization
                        # https://docs.djangoproject.com/en/5.0/topics/i18n/
                        LANGUAGE_CODE = 'zh-Hans'
                        TIME_ZONE = 'UTC'
                        USE_I18N = True
                        USE_TZ = True
                        # Static files (CSS, JavaScript, Images)
                        # https://docs.djangoproject.com/en/5.0/howto/static-files/
                        STATIC_URL = 'static/'
                        # Default primary key field type
                        # https://docs.djangoproject.com/en/5.0/ref/settings/#default-auto-field
                        DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
                        MEDIA_URL = '/media/'
                        MEDIA_ROOT = os.path.join(BASE_DIR,'media')
                        LOGIN_URL = 'https://blog.csdn.net/weixin_44774550/article/details/login'
                        

                        2、ai_blog_app–> urls.py

                        from django.contrib import admin
                        from django.urls import path,include
                        from django.conf import settings
                        from django.conf.urls.static import static
                        urlpatterns = [
                            path('admin/', admin.site.urls),
                            path('',include('blog_generato.urls'))
                        ]
                        urlpatterns =urlpatterns+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
                        

                        3、ai_blog_app --> init.py

                        import pymysql
                        pymysql.install_as_MySQLdb()
                        

                        4、blog_generato --> admin.py

                        from django.contrib import admin
                        from .models import BlogPost
                        # Register your models here.
                        admin.site.register(BlogPost)
                        

                        5、blog_generato --> models.py

                        from django.db import models
                        from django.contrib.auth.models import User
                        # Create your models here.
                        class BlogPost(models.Model):
                            user = models.ForeignKey(User,on_delete=models.CASCADE)
                            youtube_title = models.CharField(max_length=3000)
                            youtube_link = models.URLField()
                            generated_content = models.TextField()
                            created_at = models.DateTimeField(auto_now_add=True)
                            def __str__(self):
                                return  self.youtube_title
                        

                        blog_generato --> urls.py

                        from . import views
                        from django.urls import path
                        urlpatterns = [
                            path('', views.index, name="index"),
                            path('https://blog.csdn.net/weixin_44774550/article/details/login', views.user_https://blog.csdn.net/weixin_44774550/article/details/login, name="https://blog.csdn.net/weixin_44774550/article/details/login"),
                            path('https://blog.csdn.net/weixin_44774550/article/details/signup', views.user_https://blog.csdn.net/weixin_44774550/article/details/signup, name="https://blog.csdn.net/weixin_44774550/article/details/signup"),
                            path('logout', views.user_logout, name="logout"),
                            path('generate', views.generate_blog, name="generate"),
                            path('blog-list', views.blog_list, name="blog-list"),
                            path('blog-details//', views.blog_details, name="blog-details"),
                        ]
                        

                        7、 blog_generato --> viwes.py

                        import json
                        import os.path
                        import os
                        from django.contrib.auth.models import User
                        from django.contrib.auth import authenticate,https://blog.csdn.net/weixin_44774550/article/details/login,logout
                        from django.shortcuts import render,redirect
                        from django.contrib.auth.decorators import https://blog.csdn.net/weixin_44774550/article/details/login_required
                        from django.views.decorators.csrf import csrf_exempt
                        from django.http import JsonResponse
                        from pytube import YouTube
                        from django.conf import settings
                        import assemblyai as aai
                        # (无法注册)import openai
                        from .models import BlogPost
                        # Create your views here.
                        @https://blog.csdn.net/weixin_44774550/article/details/login_required
                        def index(request):
                            return render(request,'index.html')
                        @csrf_exempt
                        def generate_blog(request):
                            if request.method == 'POST':
                                try:
                                    data = json.loads(request.body)
                                    yt_link = data['link']
                                    return JsonResponse(https://blog.csdn.net/weixin_44774550/article/details/{'content':yt_link})
                                except(KeyError,json.JSONDecodeError):
                                    return JsonResponse(https://blog.csdn.net/weixin_44774550/article/details/{'error':'无效的链接'},status=304)
                                title = yt_title(yt_link)
                                transcription = get_transcription(yt_link)
                                if not transcription:
                                    return JsonResponse(https://blog.csdn.net/weixin_44774550/article/details/{'error':'未能获得转录'},status=500)
                                blog_content = generate_blog_from_transcription(transcription)
                                if not blog_content:
                                    return JsonResponse(https://blog.csdn.net/weixin_44774550/article/details/{'error': '未能获得转录'}, status=500)
                                new_blog_article = BlogPost.objects.create(
                                    user= request.user,
                                    youtube_title=title,
                                    youtube_link=yt_link,
                                    generated_content=blog_content,
                                )
                                new_blog_article.save()
                                return JsonResponse(https://blog.csdn.net/weixin_44774550/article/details/{'content':blog_content})
                            else:
                                return JsonResponse(https://blog.csdn.net/weixin_44774550/article/details/{'error':'无效的请求'},status=404)
                        def yt_title(link):
                            yt = YouTube(link)
                            title = yt.title
                            return title
                        def download_audio(link):
                            yt = YouTube(link)
                            video = yt.streams.filter(only_audio=True).first()
                            out_file = video.download(output_path=settings.MEDIA_ROOT)
                            base,ext = os.path.splitext(out_file)
                            new_file = base + '.mp3'
                            os.rename(out_file,new_file)
                            return new_file
                        def get_transcription(link):
                            audio_file = download_audio(link)
                            aai.settings.api_key = '5184545617204a3f80ef1fffc0a1056c'
                            transcriber = aai.Transcriber
                            transcriber = transcriber.transcriber(audio_file)
                            return transcriber.text
                        def generate_blog_from_transcription(transcription):
                            openai.api_key =" "
                            prompt = f"Base on the following transcript from a YouTuBe vido,write a comprehensive blog article,write it based on the transcript,but dont make it look like a youtube video,make it look like a proper blog article:\n\nhttps://blog.csdn.net/weixin_44774550/article/details/{transcription}\n\nArticle:"
                            response = openai.Completion.create(
                                model = "text-davinci-003",
                                prompt = prompt,
                                max_tokens = 1000
                            )
                            generated_content = response.choices[0].text.strip()
                            return generated_content
                        def blog_list(request):
                            blog_articles = BlogPost.objects.filter(user=request.user)
                            return render(request,"all-logs.html",https://blog.csdn.net/weixin_44774550/article/details/{'blog_articles':blog_articles})
                        def blog_details(request,pk):
                            blog_article_detail = BlogPost.objects.get(id=pk)
                            if request.user == blog_article_detail.user:
                                return  render(request,'blog-details.html',https://blog.csdn.net/weixin_44774550/article/details/{'blog_article_detail':blog_article_detail})
                            else:
                                return redirect('/')
                        def user_https://blog.csdn.net/weixin_44774550/article/details/login(request):
                            if request.method == 'POST':
                                username = request.POST['username']
                                password = request.POST['password']
                                user = authenticate(request,username=username,password=password)
                                if user is not None:
                                    https://blog.csdn.net/weixin_44774550/article/details/login(request,user)
                                    return redirect('/')
                                else:
                                    error_message='没有该用户或密码错误'
                                    return render(request,'https://blog.csdn.net/weixin_44774550/article/details/login.html',https://blog.csdn.net/weixin_44774550/article/details/{'error_message':error_message})
                            return render(request,'https://blog.csdn.net/weixin_44774550/article/details/login.html')
                        def user_https://blog.csdn.net/weixin_44774550/article/details/signup(request):
                            if request.method == 'POST':
                                username = request.POST['username']
                                email = request.POST['email']
                                password = request.POST['password']
                                repeatPassword = request.POST['repeatPassword']
                                if password == repeatPassword:
                                    try:
                                        user = User.objects.create_user(username,email,password)
                                        user.save()
                                        https://blog.csdn.net/weixin_44774550/article/details/login(request,user)
                                        return redirect('/')
                                    except:
                                        error_message='创建账号失败'
                                        return render(request, 'https://blog.csdn.net/weixin_44774550/article/details/signup.html', https://blog.csdn.net/weixin_44774550/article/details/{'errot_message': error_message})
                                else:
                                    error_message = '密码输入错误'
                                    return  render(request,'https://blog.csdn.net/weixin_44774550/article/details/signup.html', https://blog.csdn.net/weixin_44774550/article/details/{'errot_message':error_message})
                            return render(request,'https://blog.csdn.net/weixin_44774550/article/details/signup.html')
                        def user_logout(request):
                            logout(request)
                            return redirect('/')
                        

                        8、templates --> all-logs.html(修改后)

                        
                        
                            
                            
                            AI博客-历史记录
                            
                        
                        
                            
                                

                        AI 博客生成器



                        AI博客-历史记录

                        https://blog.csdn.net/weixin_44774550/article/details/{% for article in blog_articles reversed %}

0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码