mirror of
https://github.com/AAndyProgram/SCrawler.git
synced 2026-03-14 15:52:18 +00:00
115 lines
4.5 KiB
VB.net
115 lines
4.5 KiB
VB.net
' Copyright (C) 2023 Andy https://github.com/AAndyProgram
|
|
' This program is free software: you can redistribute it and/or modify
|
|
' it under the terms of the GNU General Public License as published by
|
|
' the Free Software Foundation, either version 3 of the License, or
|
|
' (at your option) any later version.
|
|
'
|
|
' This program is distributed in the hope that it will be useful,
|
|
' but WITHOUT ANY WARRANTY
|
|
Imports System.Drawing.Design
|
|
Imports System.ComponentModel
|
|
Imports PersonalUtilities.Tools.Grid.Attributes
|
|
Imports PersonalUtilities.Tools.Grid.EnumObjects
|
|
Namespace API.YouTube.Base
|
|
Public Structure Thumbnail : Implements IIndexable, IComparable(Of Thumbnail)
|
|
Public ID As String
|
|
Public Width As Integer
|
|
Public Height As Integer
|
|
Public URL As String
|
|
Public Property Index As Integer Implements IIndexable.Index
|
|
Private Function SetIndex(ByVal Obj As Object, ByVal Index As Integer) As Object Implements IIndexable.SetIndex
|
|
Dim t As Thumbnail = Obj
|
|
t.Index = Index
|
|
Return t
|
|
End Function
|
|
Private Function CompareTo(ByVal Other As Thumbnail) As Integer Implements IComparable(Of Thumbnail).CompareTo
|
|
Return Width.CompareTo(Other.Width) * -1
|
|
End Function
|
|
End Structure
|
|
Public Structure Subtitles : Implements IIndexable, IComparable(Of Subtitles)
|
|
Public ID As String
|
|
Private _Name As String
|
|
Public Property Name As String
|
|
Get
|
|
Dim n$ = _Name.IfNullOrEmpty(ID)
|
|
If CC Then n &= " (CC)"
|
|
Return n
|
|
End Get
|
|
Set(ByVal NewName As String)
|
|
_Name = NewName
|
|
End Set
|
|
End Property
|
|
Public Formats As String
|
|
Public CC As Boolean
|
|
Public ReadOnly Property FullID As String
|
|
Get
|
|
Return IIf(ID = "en", "en.*", ID)
|
|
End Get
|
|
End Property
|
|
Public Property Index As Integer Implements IIndexable.Index
|
|
Private Function SetIndex(ByVal Obj As Object, ByVal Index As Integer) As Object Implements IIndexable.SetIndex
|
|
Dim s As Subtitles = Obj
|
|
s.Index = Index
|
|
Return s
|
|
End Function
|
|
Private Function CompareTo(ByVal Other As Subtitles) As Integer Implements IComparable(Of Subtitles).CompareTo
|
|
Return Name.CompareTo(Other.Name)
|
|
End Function
|
|
End Structure
|
|
Public Enum YouTubeMediaType As Integer
|
|
Undefined = 0
|
|
[Single] = 1
|
|
Channel = 2
|
|
PlayList = 3
|
|
End Enum
|
|
<Editor(GetType(EnumDropDownEditor), GetType(UITypeEditor))>
|
|
Public Enum Protocols As Integer
|
|
<EnumValue(ExcludeFromList:=True)>
|
|
Undefined = -1
|
|
Any = 0
|
|
https = 1
|
|
m3u8 = 2
|
|
End Enum
|
|
Public Structure MediaObject : Implements IIndexable, IComparable(Of MediaObject)
|
|
Public Type As Plugin.UserMediaTypes
|
|
Public ID As String
|
|
Public Extension As String
|
|
Public Width As Integer
|
|
Public Height As Integer
|
|
Public FPS As Integer
|
|
Public Bitrate As Integer
|
|
''' <summary>Kb</summary>
|
|
Public Size As Double
|
|
Public Codec As String
|
|
Public Protocol As String
|
|
Public ReadOnly Property ProtocolType As Protocols
|
|
Get
|
|
If Not Protocol.IsEmptyString Then
|
|
Select Case Protocol.StringToLower.StringTrim
|
|
Case "http", "https" : Return Protocols.https
|
|
Case "m3u8" : Return Protocols.m3u8
|
|
End Select
|
|
End If
|
|
Return Protocols.Undefined
|
|
End Get
|
|
End Property
|
|
Public URL As String
|
|
Public Property Index As Integer Implements IIndexable.Index
|
|
Private Function SetIndex(ByVal Obj As Object, ByVal Index As Integer) As Object Implements IIndexable.SetIndex
|
|
Dim m As MediaObject = Obj
|
|
m.Index = Index
|
|
Return m
|
|
End Function
|
|
Private Function CompareTo(ByVal Other As MediaObject) As Integer Implements IComparable(Of MediaObject).CompareTo
|
|
If Type = Other.Type Then
|
|
If Width.CompareTo(Other.Width) = 0 Then
|
|
Return Size.CompareTo(Other.Size) * -1
|
|
Else
|
|
Return Width.CompareTo(Other.Width) * -1
|
|
End If
|
|
Else
|
|
Return CInt(Type).CompareTo(CInt(Other.Type))
|
|
End If
|
|
End Function
|
|
End Structure
|
|
End Namespace |