Total Pageviews

Saturday, 28 February 2026

你看时间等过谁

 

FaceFusion

 

Industry leading face manipulation platform

facefusion.io   

Installation

Be aware, the installation needs technical skills and is not recommended for beginners. In case you are not comfortable using a terminal, our Windows Installer and macOS Installer get you started.

Usage

Run the command:

python facefusion.py [commands] [options]

options:
  -h, --help                                      show this help message and exit
  -v, --version                                   show program's version number and exit

commands:
    run                                           run the program
    headless-run                                  run the program in headless mode
    batch-run                                     run the program in batch mode
    force-download                                force automate downloads and exit
    benchmark                                     benchmark the program
    job-list                                      list jobs by status
    job-create                                    create a drafted job
    job-submit                                    submit a drafted job to become a queued job
    job-submit-all                                submit all drafted jobs to become a queued jobs
    job-delete                                    delete a drafted, queued, failed or completed job
    job-delete-all                                delete all drafted, queued, failed and completed jobs
    job-add-step                                  add a step to a drafted job
    job-remix-step                                remix a previous step from a drafted job
    job-insert-step                               insert a step to a drafted job
    job-remove-step                               remove a step from a drafted job
    job-run                                       run a queued job
    job-run-all                                   run all queued jobs
    job-retry                                     retry a failed job
    job-retry-all                                 retry all failed jobs

Documentation

Read the documentation for a deep dive.

from  https://github.com/facefusion/facefusion

 

netflix-clone

 A Modern Streaming Platform Clone This repository showcases a full-stack streaming platform project built with cutting-edge technologies. It serves as an educational demonstration of how to create a complex, interactive web application similar to popular video streaming services. 

Sign in with email@netflix.com to view the live website.

In order to view the live website, you will need to sign in with your email. You can use any email address, no password is required. Once you sign in, you will be able to view the videos, like/dislike videos, and view your favourites list.

Preview and Demo Clips

Check out a few video examples!

Login Process with Magic

Discover videos, like/dislike

View and like a video

Homepage image

More Images

Dynamic Pages Image

My-List of favourited videos

User Stories

Users should ba able to:

  • login to their account with email, no password needed
  • see a list of videos
  • play a video
  • be responsive on mobile
  • like/dislike a video
  • view favourited videos (liked videos)
  • view videos they have already watched
  • discover new videos by topic/category

Tech Stack

Component Architecture

The real Netflix app has a pretty complex UI, but to break it down into simple components it looks something like this:

  • Header/Navbar
    • Logo
    • Favourites List
    • Profile
  • Banner
    • Large image
    • Title, Description
    • Play button
  • Categories List
    • Title
    • List of videos (Card)
      • On hover...
        • Title, Description, Play button, Like/Dislike button
  • Feature Section
    • Tall images list

I used these as the basis for my component architecture.

Sign In

The user can sign in with their email. I used Magic to send a link to the user's email and once they click the link, they are signed in.

Instead of storing passwords, I used Magic to generate a public and private key on the client side. Instead of creating and storing passwords in a database I control, Magic generates a DID (Decentralized Identifier) for the user, which is a unique identifier for the user. I used the DID to identify the user and store their watch data in a Supabase database.

Playing Videos

Videos are displayed using the YouTube Player API to embed videos within an iframe. This allows us to control the video using JavaScript, however it created some challenges.

One struggle was displaying a gradient over the iframe YouTube element. Because the gradient sits on top of the video, the native play and pause buttons could not be clicked. To get around this, I updated the player attribute to auto-play when the user clicks the video. This also causes the gradient to be hidden, so the user can click the native play and pause buttons. I don't love this solution, but it works for now.

Fetching Data

As we know, Next.js provides multiple methods for fetching data. We can use getStaticProps to fetch data at build time (SSG), or getServerSideProps to fetch data at request time. We can also use getInitialProps to fetch data on the client side.

For the specific video page ('/video/:id'), I decided to use incremental site regeneration using getStaticProps with the revalidate option. This means that the page will be regenerated at a specific time interval.

Some of the pages I could create statically at build time, and some of the pages I could create at request time. For example, the banner video will always be the same, so I could create that page statically at build time. However, the video page will change depending on the video, so I could create that page at request time.

GraphQL and Database

I used Hasura to create a GraphQL API. Hasura is a GraphQL engine that connects to a Postgres database.

For my database, I used a Postgres database hosted by Supabase. Supabase is an open source Firebase alternative. It provides a Postgres database, and a GUI to create tables, and to query the database.

Architecture


Users


column issuer (PK) publicAddress email id
type text text text int

did:ethr:0x92bc... 0x92bc... info@cwarcup.com 1

I used the Decentralized ID from Magic to identify the user and is the primary key for the users table. The getMetadata method returns an object with the user's public address, email, and DID.


Stats



column id (PK) userId (FK) videoId favourited watched
type int text text boolean or Null boolean

1 did:ethr:0x92bc... Lcd0df7jwpM true true

The stats table stores information about the user's interactions with a video. The userId is the user's DID, and the videoId is the YouTube video ID. The favourited column is a boolean that indicates whether the user has liked/disliked the video. The watched column is a boolean that indicates whether the user has watched the video.

I created a user role to ensure that only that user has access to their data. I used a JSON Web Token (JWT) token to authenticate the user.

Authentication api/auth

Created an API route (/api/auth) to handle authentication. The API route uses the Magic Admin SDK NodeJS implementation to authenticate the user. The API route returns a JWT token to the client. The client then stores the JWT token in a cookie.

Middleware

Next.js provides a middleware feature. Middleware is a function that is executed before a request is sent to the API route. I used the middleware to verify the JWT token from the browsers cookie.

I initially used JSON Web Token to handle the signing and verification of the JWT token. However, because the middleware was being run on Next.js' Edge Runtime, I didn't have access to the Native NodeJS modules, and therefore some of the methods in the jsonwebtoken package were not available. I decided to use jose instead.

Authentication Flow

The JWT token contains information about the user, such as their email, public address, and DID. When a user logs in, a new JWT token is generated, GraphQL queries Hasura to see if the user exists in the database by using the newly created JWT token (remember, this has 3 parts). If the user exists, user is logged in and the JWT token is stored in a cookie. If the user doesn't exist, GraphQL mutation occurs to create a new user in the database. The user is then logged in and the JWT token is stored in a cookie.

The database is setup to only allow a user to access their own data unless they have X-Hasura-Role set to admin and have the x-hasura-admin-secret. This ensures that a user can only access their own data.

User Stats api/stats

The stats API is used to read the token from the cookie created during the authentication process. The JWT token if verified using the Magic SDK and then queried against the database. If the stats for that user do not exist, they are created. If the stats do exist, they are returned to the client.

The API's purpose is to allow a user to like/dislike a video, as well as view previously watched videos.

from  https://github.com/Cwarcup/netflix-clone

Friday, 27 February 2026

百花迎春-中国文学艺术界2026春节大联欢

 

如何把基于deno的github仓库导入到deno deploy平台?

 1. 准备工作

在导入之前,请确保你的 github仓库符合以下条件:

入口文件:仓库中有一个入口文件(例如main.ts , server.ts ,mod.ts 或index.ts)

代码已推送:确保你的最新代码已经git push到你的仓库或者你也可以在github.com/yourusername/yourrepo中,在线修改你的代码(当然你需先登录你的github账号)

2. 导入步骤

访问 https://console.deno.com/login,建议用你的github账号进行登录。登录后,就跳转到了

 https://console.deno.com/你的github账号名。然后点击'new app'按钮,在跳转到的页面里,

在复选框select user or organization里,选择用户名,我的用户名是briteming(它就是我的github账号名)。在briteming的下一行的select repository复选框里,输入你的仓库名进行搜索,(我的仓库名是tsb, tsb 是fork自https://github.com/lumeland/theme-simple-blog),点击搜索出来的仓库名,然后点击页面下方的create app按钮,deno.com平台就开始部署你的程序了,等待部署完成,部署完成后,我得到了网址https://tsb.briteming.deno.net/,它就是我的静态博客的网址。

项目地址: 

 https://github.com/lumeland/theme-simple-blog

 https://github.com/briteming/tsb

博客地址: https://tsb.briteming.deno.net/

上面说的‘ 你也可以在github.com/yourusername/yourrepo中,在线修改你的代码’就是指新建源帖。

访问https://github.com/briteming/tsb/tree/main/src/posts,新建源帖fh.md, 内容为:

---
title: 战马
date: '2026-02-22T20:30:00'
author: ym
tags:
  - misc1
  - misc2
  - misc3
comments:
  src: 'https://mastodon.gal/@misteroom/110810445656343599'
draft: false
---

此处写html代码或正文

(详见 https://github.com/briteming/tsb/blob/main/src/posts/fh.md?plain=1)

略等1分钟,博客网站就会更新 。

相关帖子: 安装基于deno的静态博客程序lume

 

 

 

Thursday, 26 February 2026

AI影片生成教學!新手用Nano Banana、ChatGPT 如何圖片轉影片,完整示範

 

初级的建站服务-低代码平台

 

低代码平台我见到比较不错的是 Webflow,它的新手引导设计的很不错。

另外由于最近 AI 的发力,Vercel 前段时间推出的基于 AI 的低代码平台 v0 可以关注一下,和 AI 对话告诉它你想修改哪个部分,想返稿就返稿,相当于一个 1v1 专职程序员为你服务了,它也许才是以后低代码平台的最终形态。