【问题标题】:Python: Time/Frames Conversion CalculatorPython:时间/帧转换计算器
【发布时间】:2021-09-13 10:37:21
【问题描述】:

这是一个非常初学者的问题,但我确实尝试过但失败了。

我正在尝试制作一个简单的动画时间计算器来帮助我完成工作。 我希望它有 3 个用户输入:

1) 每秒帧数 2) 总帧数 3) 总时间

类似: total_frames = 秒 * 帧率 total_time = 帧数/帧率

我遇到的问题是:

  1. 如何将变量的结果链接到 gui 上的用户输入?然后有,例如,当用户输入 frameratetotal_time 时更新 total_frames,但也有 total_time > 当用户输入 frameratetotal_frames 时更新。

  2. 如何获取获取格式 mm/ss/ff 的总时间(其中 ff 是基于 framerate 的帧)。 所以就像一个普通的分秒计时器,但不是毫秒,你有 framerate 作为最大每秒。

我已经设法让基本代码工作,只是打印出变量的结果。 而且我还设法制作了一个基本的 gui,它使用 Qt 设计器从用户那里获取输入。

我希望我已经体面地解释了这一点。任何帮助都感激不尽。我是个菜鸟,但我想慢慢来。

尝试 1:

我的代码:

    from datetime import time
from calc import *

framerate = 24#input('Frames Per Second ?')
seconds = 10 #input('How Many Seconds ?')

frames = seconds * framerate
total_time = frames / framerate

print(frames)
print(total_time)


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    AnimationCalculator = QtWidgets.QMainWindow()
    ui = Ui_AnimationCalculator()
    ui.setupUi(AnimationCalculator)
    AnimationCalculator.show()
    sys.exit(app.exec_())

我的用户界面:

    from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_AnimationCalculator(object):
    def setupUi(self, AnimationCalculator):
        AnimationCalculator.setObjectName("AnimationCalculator")
        AnimationCalculator.resize(341, 224)
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(105, 173, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(105, 173, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
        brush = QtGui.QBrush(QtGui.QColor(105, 173, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(105, 173, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
        brush = QtGui.QBrush(QtGui.QColor(105, 173, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(105, 173, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
        AnimationCalculator.setPalette(palette)
        self.centralwidget = QtWidgets.QWidget(AnimationCalculator)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(210, 80, 161, 61))
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
        brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
        brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipText, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 128))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
        self.label.setPalette(palette)
        font = QtGui.QFont()
        font.setFamily("Myriad Pro")
        font.setPointSize(36)
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setInputMethodHints(QtCore.Qt.ImhDigitsOnly|QtCore.Qt.ImhFormattedNumbersOnly)
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(210, 150, 161, 61))
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
        brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
        brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipText, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 128))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
        self.label_2.setPalette(palette)
        font = QtGui.QFont()
        font.setFamily("Myriad Pro")
        font.setPointSize(36)
        font.setBold(True)
        font.setWeight(75)
        self.label_2.setFont(font)
        self.label_2.setInputMethodHints(QtCore.Qt.ImhDigitsOnly|QtCore.Qt.ImhFormattedNumbersOnly)
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(210, 10, 161, 61))
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.PlaceholderText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255, 128))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.PlaceholderText, brush)
        brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
        brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipText, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 128))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.PlaceholderText, brush)
        self.label_3.setPalette(palette)
        font = QtGui.QFont()
        font.setFamily("Myriad Pro")
        font.setPointSize(36)
        font.setBold(True)
        font.setWeight(75)
        self.label_3.setFont(font)
        self.label_3.setObjectName("label_3")
        self.timeEdit_2 = QtWidgets.QTimeEdit(self.centralwidget)
        self.timeEdit_2.setGeometry(QtCore.QRect(10, 150, 191, 61))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.timeEdit_2.setFont(font)
        self.timeEdit_2.setObjectName("timeEdit_2")
        self.spinBox = QtWidgets.QSpinBox(self.centralwidget)
        self.spinBox.setGeometry(QtCore.QRect(10, 81, 191, 61))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.spinBox.setFont(font)
        self.spinBox.setInputMethodHints(QtCore.Qt.ImhDigitsOnly)
        self.spinBox.setWrapping(False)
        self.spinBox.setAlignment(QtCore.Qt.AlignCenter)
        self.spinBox.setReadOnly(False)
        self.spinBox.setButtonSymbols(QtWidgets.QAbstractSpinBox.PlusMinus)
        self.spinBox.setMaximum(50000)
        self.spinBox.setSingleStep(1)
        self.spinBox.setProperty("value", 0)
        self.spinBox.setObjectName("spinBox")
        self.spinBox_2 = QtWidgets.QSpinBox(self.centralwidget)
        self.spinBox_2.setGeometry(QtCore.QRect(10, 10, 191, 61))
        font = QtGui.QFont()
        font.setPointSize(26)
        self.spinBox_2.setFont(font)
        self.spinBox_2.setInputMethodHints(QtCore.Qt.ImhDigitsOnly)
        self.spinBox_2.setWrapping(False)
        self.spinBox_2.setAlignment(QtCore.Qt.AlignCenter)
        self.spinBox_2.setReadOnly(False)
        self.spinBox_2.setButtonSymbols(QtWidgets.QAbstractSpinBox.PlusMinus)
        self.spinBox_2.setMinimum(1)
        self.spinBox_2.setMaximum(240)
        self.spinBox_2.setSingleStep(1)
        self.spinBox_2.setProperty("value", 24)
        self.spinBox_2.setObjectName("spinBox_2")
        AnimationCalculator.setCentralWidget(self.centralwidget)

        self.retranslateUi(AnimationCalculator)
        QtCore.QMetaObject.connectSlotsByName(AnimationCalculator)

    def retranslateUi(self, AnimationCalculator):
        _translate = QtCore.QCoreApplication.translate
        AnimationCalculator.setWindowTitle(_translate("AnimationCalculator", "Animation Calculator"))
        self.label.setText(_translate("AnimationCalculator", "Frames"))
        self.label_2.setText(_translate("AnimationCalculator", "Time"))
        self.label_3.setText(_translate("AnimationCalculator", "FPS"))
        self.timeEdit_2.setDisplayFormat(_translate("AnimationCalculator", "HH:mm:ss"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    AnimationCalculator = QtWidgets.QMainWindow()
    ui = Ui_AnimationCalculator()
    ui.setupUi(AnimationCalculator)
    AnimationCalculator.show()
    sys.exit(app.exec_())

尝试 2:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit

framerate = 24#input('Frames Per Second ?')
seconds = 5  #input('How Many Seconds ?')

total_frames = seconds * framerate
total_time = total_frames / framerate


def onChangeFPS():
    fps = field_1.text()
    print(fps)

def onChangeFrames():
    framerate = field_2.text()
    print(total_frames)

def onChangeSeconds():
    total_seconds = field_3.text()

    print(total_time)


app = QApplication(sys.argv)

widget_1 = QWidget()

field_1 = QLineEdit(widget_1)
field_1.move(1 , 20)
field_1.resize(200 , 30)
field_1.returnPressed.connect(onChangeFPS)

field_2 = QLineEdit(widget_1)
field_2.move(1 , 50)
field_2.resize(200 , 30)
field_2.returnPressed.connect(onChangeFrames)

field_3 = QLineEdit(widget_1)
field_3.move(1 , 80)
field_3.resize(200 , 30)
field_3.returnPressed.connect(onChangeSeconds)

widget_1.setGeometry(100,100,300,150)
widget_1.setWindowTitle("Animation Time Calculator")
widget_1.show()

sys.exit(app.exec_())

对不起,代码墙,再次感谢!

更新 2021-09-19: 好的,所以我尝试了很多东西,我意识到让脚本以基于初始输入(即:如果用户先输入帧,它知道计算时间,反之亦然)对我来说很难理解代码的程序流程。

所以我决定尝试将其分解为几个定义,并询问用户他们想使用哪个版本。

我已经设法让它工作,它只是让用户输入帧速率来确定毫秒,并以我不理解的 mm:ss:frames 格式显示结果。

一旦我弄清楚这一点,我就会启动 gui,并会在我这样做时在此处更新。

这是我更新的代码:

def framecount():

    fps = int(input("Enter Frames per Second: "))
    total_time = float(input("Enter total time: "))
    total_frame = fps * total_time
    print("Total frames: {}".format(total_frame))

def timecount():

    fps = int(input("Enter Frames per Second: "))
    total_frame = int(input("Enter total frame: "))
    total_time = total_frame / fps
    print("Total time: {}".format(total_time)+" seconds")

choose = int(input("What would you like to calculate ? 1. Total Frames 2. Total Time : "))


if choose == 1:
    framecount()

elif choose == 2:
    timecount()

更新 2 2021-09-19:

似乎 datetime.timedelta() 可以用 total_time

的格式做我想做的事

这是代码,我唯一真正想不通的是如何在每次 fps

这是我的代码:

from datetime import timedelta


def framecount():

    fps = int(input("Enter Frames per Second: "))
    total_time = float(input("Enter total time: "))
    total_frame = fps * total_time
    print("Total frames: {}".format(total_frame))

def timecount():

    fps = int(input("Enter Frames per Second: "))
    total_frame = int(input("Enter total frame: "))


    total_time = timedelta( seconds=(total_frame / fps), milliseconds=total_frame )
    print("Total time: {}".format(total_time))

choose = int(input("What would you like to calculate ? 1. Total Frames 2. Total Time : "))


if choose == 1:
    framecount()

elif choose == 2:
    timecount()

else:
    print("Please choose option 1. or 2.)")

用我的测试输入打印出来:

你想计算什么? 1. 总帧数 2. 总时间: 2 每秒输入帧数:25 输入总帧数:107 总时间:0:00:04.387000

【问题讨论】:

  • 请考虑在您的问题中添加[pyqt][pyqt5] 标签,以便有此工具经验的用户更容易发现
  • 对于问题的第二部分,如果总分钟数超过 60 分钟会怎样?例如,如果总分钟数为 420 分钟和 69 秒,fps 为 120,您是否希望字符串类似于“420/69/120”?
  • @Daweo : 添加标签 :)
  • @t.abraham :这个想法是,如果帧计数器超过用户输入的每秒帧数,它会变为零并在秒上加 1。如果分钟变成 60,它应该变为零并在小时上加 1。因此,如果我将每秒帧数设置为 24- 9 秒,则 23 帧将显示为 - 00:00:09:23 但再添加一帧会将其更改为 - 9 秒,而 24 帧将显示为 - 00:00:10 :00
  • @GDonkey Okey 明白了。这意味着您总共需要 6 个不同的变量(初级版本) 3 个变量保留用户输入值,其余 6 个来自动画。您能否根据我在答案中发布的代码分享代码的更新版本,以便我可以了解在什么时候以及如何检索实际的 fps、时间、帧?

标签: python animation pyqt5 calculator


【解决方案1】:
fps = int(input("Enter Frames per Second: ") or None)
total_time = int(input("Enter total time: ") or None)
total_frame = int(input("Enter total frame: ") or None)


if not fps is None and not total_time is None:
         total_frame = fps * total_time
elif not fps is None and not total_frame is None:
         total_time = total_frame / fps
else:
     # here you can enter default time, fps

您可以在代码顶部使用此部分来获取用户输入,然后根据输入相应地处理第三个变量。这里的优先级首先获得 fps 和总时间……

这是最简单的版本,但如果您想要更复杂的版本,也可以这样做……让我知道

【讨论】:

  • 非常感谢您的回答!我更喜欢这样的“简单版本”,所以我可以理解实际发生的事情。我会玩弄这个并报告。
猜你喜欢
  • 2021-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-16
  • 2014-12-27
  • 1970-01-01
  • 2012-10-30
  • 2020-11-20
相关资源
最近更新 更多