
Ⅰ.《Sissy Sky》的CD专辑总共三个版本,一共四首曲子,都很好听;
Ⅱ.这张专辑分为柯南版、初回限定盘、通常盘三个版本;
Ⅲ.柯南版和初回限定盘两个版本,均含有立牌特典,其中立牌型号随机,柯南版立牌就是封绘上的造型,灰原哀的经典小白裙和柯南的回眸~
Ⅳ.值得一提的是这俩专辑主题色一红一蓝,盘面也是,自古红蓝出cp~
Ⅴ.两个CD中都有三个曲子,其中前两首是一样的; 柯南版的第三首是TV版的《Sissy Sky》;初回限定中的第三首曲子是《夕立ち》; 通常盘中似乎是只有前两个曲子。
今天巧了,好几个同事问我要PPT,但是他们只能记得起来一些关键词,而我恰好也没有很足的印象,毕竟那是两三年前,还可能不是我做的东西!
WPS只能按照云文档进行查找关键词,那么电脑中几千个PPT要怎么找呢?(没错我电脑里真有2000个PPT (((φ(◎ロ◎;)φ))))
我们可以根据他们截取的画面关键词,来对PPT进行索引,这样可以节约一些查找文件的时间,然后采用olefile库,查找对应PPT即可。
import os
from pptx import Presentation
import olefile
def is_powerpoint_file(file_path):
"""检查文件是否为PPT或PPTX格式"""
valid_extensions = ['.ppt', '.pptx']
return any(file_path.lower().endswith(ext) for ext in valid_extensions)
def index_powerpoint_files(search_dir):
"""索引指定目录中的所有PPT和PPTX文件"""
ppt_files = []
total_files = 0
for root, _, files in os.walk(search_dir):
total_files += len(files)
for file in files:
if file.startswith("~$"): # 跳过临时文件
continue
file_path = os.path.join(root, file)
if is_powerpoint_file(file_path):
ppt_files.append(file_path)
print(f"[信息] 已索引文件总数:{total_files},PPT文件总数:{len(ppt_files)}")
return ppt_files
def search_text_in_pptx(file_path, target_text):
"""在PPTX文件中搜索目标文字"""
try:
presentation = Presentation(file_path)
for slide in presentation.slides:
for shape in slide.shapes:
if shape.has_text_frame and target_text in shape.text:
return True
except Exception as e:
print(f"[错误] 无法处理文件:{file_path},错误信息:{e}")
return False
def search_text_in_ppt(file_path, target_text):
"""在PPT文件中搜索目标文字"""
try:
if olefile.isOleFile(file_path):
with olefile.OleFileIO(file_path) as ole:
if "PowerPoint Document" in ole.listdir():
stream = ole.openstream("PowerPoint Document")
content = stream.read().decode(errors="ignore")
if target_text in content:
return True
except Exception as e:
print(f"[错误] 无法处理文件:{file_path},错误信息:{e}")
return False
def search_text_in_powerpoint_files(ppt_files, target_text):
"""在索引的PPT文件中搜索目标文字"""
result_files = []
total_files = len(ppt_files)
print(f"[信息] 开始内容搜索,共需处理 {total_files} 个文件")
for idx, file_path in enumerate(ppt_files, start=1):
print(f"[处理中] {idx}/{total_files} - 正在处理文件:{file_path}")
if file_path.lower().endswith(".pptx") and search_text_in_pptx(file_path, target_text):
result_files.append(file_path)
elif file_path.lower().endswith(".ppt") and search_text_in_ppt(file_path, target_text):
result_files.append(file_path)
return result_files
if __name__ == "__main__":
search_dir = "D:\\"
target_text = input("请输入要查找的文字(支持中文):")
print(f"[信息] 正在索引盘中的PPT文件,请稍候...\n")
ppt_files = index_powerpoint_files(search_dir)
if ppt_files:
print(f"\n[信息] 索引完成,开始搜索包含 '{target_text}' 的文件...\n")
matching_files = search_text_in_powerpoint_files(ppt_files, target_text)
if matching_files:
print("\n[结果] 找到包含目标文字的PPT文件:")
for file in matching_files:
print(file)
else:
print("\n[结果] 未找到包含该文字的PPT文件。")
else:
print("\n[信息] 未在指定目录中找到任何PPT文件。")
这首歌的歌手是久米小百合,她此前(从 1979 年到 1984 年)叫做:久保田 早紀,因此我们可能在不同的平台看到两种叫法,这都是一个人。
她最有名的一首曲子应该是《异邦人》,一首具有中东风情的日语歌曲,非常有意思。
而《最终便》则是其第六张专辑——《纳芙蒂蒂》(于 1983 年 4 月 21 日发行)中的一首歌曲,翻译成中文意思是:最后一班航班,该歌曲的编曲为:若草惠。
纳芙蒂蒂(Nefertiti,公元前1370年—前1330年)是埃及法老阿肯纳顿的王后。
在创作这张专辑的时候,久保田 早紀受到了圣经中描述的埃及、土耳其、希腊等地的吸引,也顺势进行了一场旅行,所以作为专辑最后一首歌的《最终便》,似乎也相当合理了。

作词: 久保田 早紀
作曲: 久保田 早紀
编曲 : 若草恵
空港のロビーから——已经不再在机场大厅
長い電話をする事もない——讲长电话了
こうして独りの今は——如今这般一个人的日子里
サテライトに降る星くずに誘われ——在星海感召下
北の空へ向かう——向北方天空遥望
戸惑いも空しさも荷造りをして——将惘然与空虚打包收起
トランクにつめ込んだ思い出数える——然后细数箱中的回忆
男でも女でも旅立つ朝は——清晨启程的男女们
きっとこんな気持ちにふるえるはず——一定都有体味过这感觉
空港のロビーでは——在机场大厅
花をかかえて見送る人が——送行的人怀抱鲜花
私の背中を追い越す——从我身后穿行而过
凍えた夜の灯も一粒の真珠に——寒夜中夜灯如珍珠般弥散微光
やがて変わるわ 最終便で——末班航班(的场景)已不再如昨
少しだけ優しさが違ってた事——与温柔稍许不同的是
悲しい程わかっていた愛なのに——才明白过来 既然爱到如此伤悲
出来るならわがままに私を抱いて——如果可以 多想将时间定格在点头之前
引き止めてほしかった うなずく前に——就那般好好抱着我
空港のロビーから——已经不再在机场大厅
長い電話をする事もない——讲长电话了
こうして独りの今は——如今这般一个人的日子里
あなたより早く夜明けを迎えるわ——与其等你不如静待黎明
闇を脱け出す 最終便で——末班航班(的等待)里 从黑暗中抽离出来
《突如其来的爱情》(日语:ラブ・ストーリーは突然に),是日本男性创作歌手小田和正的歌曲。最初收录于双A面单曲《Oh! Yeah!/突如其来的爱情》(1991年2月6日发行)中。1990年代日本电视剧主题曲的代表歌曲、经典情歌。
国内的周深、李克勤同台唱过这首歌曲,另外在《繁花》电视剧中,也有一段剧情的配乐用到了该曲子。

ラブ・ストーリーは突然に
收录这首歌曲的单曲《Oh! Yeah!/突如其来的爱情》刷新了当时日本CD单曲最高销量、J-POP单曲最高销量的纪录,并成为1991年度日本单曲销量冠军。
剧集制作阶段,富士电视台的制作人大多亮想找像Off Course时期的《Yes-No》这样的歌,于是找到了小田邀歌。最初小田作了另一首歌曲《FAR EAST CLUB BAND SONG》(后收录于精选辑《Oh! Yeah!》),但是这首歌和剧情气氛不相衬,因而改用《突如其来的爱情故事》。
不过尽管《东京爱情故事》播放时期,《突如其来的爱情》已经很受欢迎,小田一开始并不打算将这首歌作为A面曲发售CD单曲,而是想将《Oh! Yeah!》作为单独A面曲发售。
但是唱片公司却想发行《突如其来的爱情故事》,作为折衷才决定发行双A面。而在多处不同的地方,这张单曲的标记都有“Oh! Yeah!”和“Oh! Yeah!/突如其来的爱情”两种情况。
《突如其来的爱情》和同年恰克与飞鸟的《SAY YES》都是作为富士月九剧的主题曲,前者是1991年度单曲销量的冠军,后者则是亚军。可以说自此之后月九成为日本电视剧黄金档中的黄金档,对主题曲的重视大大提高,大多向著名歌手邀歌,“月九的主题曲必定大卖”也成为普遍定律。因此更多的歌手争相为月九剧献唱。
这首歌也成为小田个人活动的代表歌曲,由于小田甚少上电视节目演出,多次调查显示大众最期待小田上NHK红白歌合战等音乐节目演唱《突如其来的爱情》,但1991年本曲走红当时他并未参加该年度的红白,而是到同年富士电视台的“FNS歌谣祭”中演唱。本曲也成为日本流行乐坛的一首经典情歌,在朝日电视台音乐节目《MUSIC STATION》的多次情歌或国民名曲调查中均名列前茅。
此外,《Yes-No》也是一首值得一听的歌曲:(突然发现这首歌和突如其来的爱情都是一样的时长~)
另一个版本的《Yes-No》,收录在专辑《SELECTION 1978-81》,这个版本的鼓点很抓耳。
为了制作一些高大上的风格化 PPT,有时我们需要很多客户的反白色LOGO,以符合当下的一些设计潮流。
目前常用的做法是在 PPT中对图片本身进行亮度调整,可以理解为一键过曝,但是这对于一些本身就含有白色的图片不适用,也无法处理JPG的图片,更没法快速将反白的图片进行批量保存,以便存储成库,在其他场景继续使用。
因此使用脚本可以防止原来的白色部分混成一团,预先对原LOGO白色区域进行透明化,然后对其他颜色区域反白。
这个脚本目前适用于我的工作环境,包含一些问题,例如如果原来的图标包含白色文字,这样会将其透明化,因此还需按照使用情况进行调整。


后续考虑加入对JPG进行处理的过程,原理上是对白色部分预先透明度处理,然后后续步骤基本一致,不过使用JPG作为LOGO的客户较少,该功能并不急迫。若要实现该功能,可能需要使用OCR对文字部分预先识别处理,流程上麻烦不少,不过由于wechat-ocr的强大功能,应该也可以稳定呈现,wechat-ocr此前有过一些实践,效果出众,推荐大家使用。
此外脚本尚未测试灰色部分是否会有问题,目前感觉应该会有问题,若使用中有其他问题会随时更新。
import tkinter as tk
from tkinter import filedialog
from PIL import Image, ImageTk
import random
import string
class ImageProcessor(tk.Tk):
def __init__(self):
super().__init__()
self.title("Logo Image Processor")
self.geometry("600x600")
self.image_path = None
self.images = [] # 用于存储多个图像
self.image_label = tk.Label(self)
self.image_label.pack(padx=10, pady=10, fill=tk.BOTH, expand=True)
# 设置拖放区域
self.drop_area = tk.Label(self, text="拖动PNG图片到此区域", relief="solid", width=30, height=4)
self.drop_area.pack(padx=10, pady=10, fill=tk.BOTH, expand=True)
self.drop_area.bind("<Enter>", self.on_drag_enter)
self.drop_area.bind("<Leave>", self.on_drag_leave)
self.drop_area.bind("<ButtonRelease-1>", self.on_drop)
# 添加处理按钮
self.process_button = tk.Button(self, text="处理图片并保存", command=self.process_images)
self.process_button.pack(pady=10)
def on_drag_enter(self, event):
self.drop_area.config(bg="lightblue")
def on_drag_leave(self, event):
self.drop_area.config(bg="white")
def on_drop(self, event):
file_paths = filedialog.askopenfilenames(filetypes=[("PNG files", "*.png")])
if file_paths:
self.load_images(file_paths)
def load_images(self, paths):
self.images = [] # 清空当前图像列表
for path in paths:
image = Image.open(path).convert("RGBA") # 确保加载为RGBA格式以处理透明度
self.images.append((path, image)) # 存储图像及其路径
if self.images:
self.display_image(self.images[0][1]) # 显示第一张图片
def display_image(self, image):
image_tk = ImageTk.PhotoImage(image)
self.image_label.config(image=image_tk)
self.image_label.image = image_tk
def process_images(self):
if self.images:
for original_path, image in self.images:
# 获取图像的每个像素
pixels = image.load()
width, height = image.size
for x in range(width):
for y in range(height):
r, g, b, a = pixels[x, y]
# 将白色部分透明化
if r == 255 and g == 255 and b == 255:
pixels[x, y] = (255, 255, 255, 0) # 将白色变为透明
elif a != 0: # 如果是非透明区域
# 将所有非透明区域变为纯白色
pixels[x, y] = (255, 255, 255, a) # 变为白色,保持原透明度
# 生成随机字符并保存处理后的图像
random_suffix = ''.join(random.choices(string.ascii_letters + string.digits, k=6))
output_path = f"processed_logo_{random_suffix}.png"
image.save(output_path)
print(f"处理后的LOGO图片已保存为 {output_path}")
# 更新显示处理后的图片(显示第一张图像)
self.display_image(self.images[0][1])
if __name__ == "__main__":
app = ImageProcessor()
app.mainloop()
此外,还可以对JPG进行处理:
注意保证输入图片的分辨率,其平滑操作对分辨率会有一定的损失。
import tkinter as tk
from tkinter import filedialog, messagebox
from PIL import Image, ImageFilter
import random
import string
import os
class ImageProcessor(tk.Tk):
def __init__(self):
super().__init__()
self.title("Logo Image Processor")
self.geometry("400x200") # 设置主窗口大小
self.image_path = None
self.images = [] # 用于存储多个图像
self.processed_images = [] # 用于存储处理后图像路径
# 设置拖放区域
self.drop_area = tk.Label(self, text="拖动PNG或JPG图片到此区域", relief="solid", width=30, height=4)
self.drop_area.pack(padx=10, pady=10, fill=tk.BOTH, expand=True)
self.drop_area.bind("<Enter>", self.on_drag_enter)
self.drop_area.bind("<Leave>", self.on_drag_leave)
self.drop_area.bind("<ButtonRelease-1>", self.on_drop)
# 添加处理按钮
self.process_button = tk.Button(self, text="处理图片并保存", command=self.process_images)
self.process_button.pack(pady=10)
# 添加选择输出路径按钮
self.output_dir = None
self.select_output_button = tk.Button(self, text="选择保存路径", command=self.select_output_dir)
self.select_output_button.pack(pady=5)
def on_drag_enter(self, event):
self.drop_area.config(bg="lightblue")
def on_drag_leave(self, event):
self.drop_area.config(bg="white")
def on_drop(self, event):
file_paths = filedialog.askopenfilenames(filetypes=[("Image files", "*.png *.jpg *.jpeg")])
if file_paths:
self.load_images(file_paths)
def load_images(self, paths):
self.images = [] # 清空当前图像列表
for path in paths:
try:
image = Image.open(path)
# 将JPG图像转换为支持透明度的RGBA格式
if image.mode != "RGBA":
image = image.convert("RGBA")
self.images.append((path, image)) # 存储图像及其路径
except Exception as e:
print(f"无法加载图像 {path}: {e}")
messagebox.showerror("错误", f"无法加载图像 {path}")
def select_output_dir(self):
self.output_dir = filedialog.askdirectory()
if self.output_dir:
print(f"选择的输出目录是: {self.output_dir}")
def process_images(self):
if not self.images:
messagebox.showwarning("警告", "请先加载图片")
return
if not self.output_dir:
messagebox.showwarning("警告", "请先选择保存路径")
return
for original_path, image in self.images:
pixels = image.load()
width, height = image.size
for x in range(width):
for y in range(height):
r, g, b, a = pixels[x, y]
# 将接近白色的区域透明化,设置阈值范围 (240, 240, 240) 到 (255, 255, 255)
if r >= 240 and g >= 240 and b >= 240:
pixels[x, y] = (255, 255, 255, 0) # 将接近白色的部分变为透明
elif a != 0: # 如果是非透明区域
# 将所有非透明区域变为纯白色
pixels[x, y] = (255, 255, 255, a) # 变为白色,保持原透明度
# 对图像进行边缘平滑处理,减少杂色
image = image.filter(ImageFilter.GaussianBlur(radius=2))
# 生成随机字符并保存处理后的图像
random_suffix = ''.join(random.choices(string.ascii_letters + string.digits, k=6))
output_path = os.path.join(self.output_dir, f"processed_logo_{random_suffix}.png")
image.save(output_path)
print(f"处理后的LOGO图片已保存为 {output_path}")
self.processed_images.append(output_path)
if __name__ == "__main__":
app = ImageProcessor()
app.mainloop()
这里我们采用H开头的软件进行代理。
主要设置的内容为代理类型、主机和端口。
主机按照本机内网IP,或者填入回环地址:127.0.0.1,端口按照H软件的混合端口填写。
此外要打开H软件的允许局域网连接。

如果采用V开头的软件代理。
在V软件中的参数设置查看监听混合端口,一般为10808。
主机填入127.0.0.1
软件走自动配置系统代理即可。

西伯利亚颂(俄语:Сибириада,音译。 Sibiriada)是一部 1979 年的苏联历史剧情片,由安德烈·康察洛夫斯基执导,莫斯科电影公司制作。这部由四部分组成的史诗跨越了 20 世纪的大部分时间。
其中的主题曲:《西伯利亚颂》宏伟悠扬,音符仿佛横贯在西伯利亚广阔的林间,向我们娓娓诉说这里的故事。
管弦乐版:
MIX版:Our Dream – Sovietwave Mix
关于作曲家:
爱德华·尼古拉耶维奇·阿尔捷米耶夫(俄语:Эдуа́рд Никола́евич Арте́мьев,1937 年 11 月 30 日至 2022 年 12 月 29 日)是苏联和俄罗斯的电子音乐和电影配乐作曲家。在俄罗斯以外,他最出名的是他为电影配乐,如《在陌生人的家里》、《索拉里斯》、《西伯利亚》、《镜子》、《潜行者》和《被太阳烧伤》。1999 年被授予“俄罗斯人民艺术家”称号。
其他使用:
索契冬奥会上的经典一幕,小女孩柳波夫在俄罗斯历史表演环节的最后,伴随人声哼唱的西伯利亚颂,缓缓放飞了红色气球。

另,关于截图右上角的LOGO,设计的也很有意思,可以参见:【设计】一种菱形平面的火焰表现形式

名为”Our Dream”的数字艺术作品。
出现在西伯利亚颂的Mix版本歌曲插图中。
来自索契冬奥会转播画面,应该是俄罗斯国家电视一频道+圣火的标志。



用HTML粗糙实现类似效果,如果要精准复刻,还是需要位置和动画的精细调整。
<style>
/* 创建父容器来承载菱形,并设置其为 relative 定位 */
.container {
position: relative;
width: 500px; /* 缩小容器的大小 */
height: 500px; /* 缩小容器的大小 */
display: flex;
justify-content: center;
align-items: center;
overflow: visible; /* 防止容器遮挡菱形动画 */
}
/* 菱形样式 */
.diamond {
position: absolute; /* 使用绝对定位来控制每个菱形的具体位置 */
width: 60px; /* 缩小菱形的宽度 */
height: 90px; /* 缩小菱形的高度 */
background-color: yellow; /* 初始颜色为黄色 */
clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%); /* 菱形形状 */
animation: growDiamond 0.5s ease-in-out forwards,
riseAndShrinkDiamond 1.5s ease-in infinite; /* 循环动画 */
transform-origin: bottom center;
}
/* 菱形扩展动画 */
@keyframes growDiamond {
0% {
transform: scaleY(0);
opacity: 0;
}
100% {
transform: scaleY(1);
opacity: 1;
}
}
/* 上升并缩小动画 */
@keyframes riseAndShrinkDiamond {
0% {
transform: translateY(0) scale(1);
opacity: 1;
background-color: yellow;
}
100% {
transform: translateY(-150px) scale(0.05); /* 缩小菱形的移动范围 */
opacity: 0;
background-color: red;
}
}
/* 为每个菱形设置不同的初始位置、大小、延迟和动画 */
.diamond:nth-child(1) {
animation-delay: 0.2s;
left: 50px; /* 自定义位置 */
top: 50px; /* 自定义位置 */
transform: scale(1.2); /* 初始大小为1.2倍 */
}
.diamond:nth-child(2) {
animation-delay: 0.4s;
left: 60px;
top: 70px;
transform: scale(0.8); /* 初始大小为0.8倍 */
}
.diamond:nth-child(3) {
animation-delay: 0.6s;
left: 30px;
top: 15px;
transform: scale(1.5); /* 初始大小为1.5倍 */
}
.diamond:nth-child(4) {
animation-delay: 0.8s;
left: 40px;
top: 20px;
transform: scale(1);
}
</style>
</head>
<body>
<div class="container">
<div class="diamond"></div> <!-- 第一个菱形 -->
<div class="diamond"></div> <!-- 第二个菱形 -->
<div class="diamond"></div> <!-- 第三个菱形 -->
<div class="diamond"></div> <!-- 第四个菱形 -->
</div>
</body>