Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function Initialize()
- dofile(SKIN:MakePathAbsolute('configs.lua'))
- dofile(SKIN:MakePathAbsolute('functions.lua'))
- MeasureGetImageURL = SKIN:GetMeasure('MeasureGetImageURL')
- MeasureGetImageEx = SKIN:GetMeasure('MeasureGetImageEx')
- MeasureGetImagePostingURL = SKIN:GetMeasure('MeasureGetImagePostingURL')
- MeasureCountImageFiles = SKIN:GetMeasure('MeasureCountImageFiles')
- MeasureGetImageName = SKIN:GetMeasure('MeasureGetImageName')
- MeterImage = SKIN:GetMeter('MeterImage')
- SKIN:Bang('[!SetOptionGroup PassiveMeasure Disabled 1]')
- SKIN:Bang('[!SetOptionGroup PassiveMeasure UpdateDivider -1]')
- SKIN:Bang('[!SetOptionGroup PassiveMeter Hidden 1]')
- SKIN:Bang('[!SetOptionGroup PassiveMeter UpdateDivider -1]')
- SKIN:Bang('[!SetOption MeasureLuaScript UpdateDivider ' .. UpdateDivider .. ']')
- if not ImageSources or #ImageSources == 0 then
- SKIN:Bang('[!SetOption MeterStartGuide Hidden 0]')
- Disabled = true
- return
- end
- if ChangeWallpaper then
- SKIN:Bang('[!SetOption MeterController Hidden 0]')
- SKIN:Bang('[!SetOption MeterControllerPrev Hidden 0]')
- SKIN:Bang('[!SetOption MeterControllerOpen Hidden 0]')
- SKIN:Bang('[!SetOption MeterControllerNext Hidden 0]')
- else
- SKIN:Bang('[!SetOption MeterBackground Hidden 0]')
- SKIN:Bang('[!SetOption MeterImage Hidden 0]')
- SKIN:Bang('[!SetVariable ImageMaxWidth ' .. ImageMaxWidth .. ']')
- SKIN:Bang('[!SetVariable ImageMaxHeight ' .. ImageMaxHeight .. ']')
- end
- Disabled = false
- DidFirstDL = false
- ConnectRemaining = 0
- ImageNo = 1
- ImageEx = ''
- ImagePostingURL = ''
- ImageSourcesIndex = 1
- LastFileName = ''
- ShowedImageHistories = {}
- ShowedImageHistoriesIndex = 1
- DateTable = os.date('*t')
- math.randomseed(os.time())
- math.random(1)
- PreparaImageSources();
- end
- function Update()
- if Disabled then
- return
- end
- DateTable = os.date('*t')
- if ConnectRemaining > 0 then
- ConnectRemaining = ConnectRemaining - 1
- end
- if not DidFirstDL then
- SKIN:Bang('[!EnableMeasureGroup PassiveMeasure]')
- DidFirstDL = true
- end
- if not SetImageSourcesIndex() then
- return
- end
- if ImageSources[ImageSourcesIndex]['ImageName'] then
- InitShowImage('ImageName', ImageSources[ImageSourcesIndex]['ImageName'])
- elseif ImageSources[ImageSourcesIndex]['ImageDir'] then
- SKIN:Bang('[!SetOption MeasureGetImageDir Path "'
- .. ImageSources[ImageSourcesIndex]['ImageDir'] .. '"]')
- SKIN:Bang('[!CommandMeasure MeasureGetImageDir Update]')
- SKIN:Bang('[!UpdateMeasure MeasureGetImageDir]')
- elseif ImageSources[ImageSourcesIndex]['PageURL'] then
- ConnectRemaining = ConnectRate
- if ImageSources[ImageSourcesIndex]['ImageURLRegExp'] then
- SKIN:Bang('[!SetOption MeasureGetImageURL RegExp """'
- .. ImageSources[ImageSourcesIndex]['ImageURLRegExp'] .. '"""]')
- else
- SKIN:Bang('[!SetOption MeasureGetImageURL RegExp """' .. ImageURLRegExp .. '"""]')
- end
- SKIN:Bang('[!UpdateMeasure MeasureGetImageURL]')
- if ImageSources[ImageSourcesIndex]['ImagePostingURLRegExp'] then
- SKIN:Bang('[!SetOption MeasureGetImagePostingURL RegExp """'
- .. ImageSources[ImageSourcesIndex]['ImagePostingURLRegExp'] .. '"""]')
- else
- SKIN:Bang('[!SetOption MeasureGetImagePostingURL RegExp """'
- .. ImagePostingURLRegExp .. '"""]')
- end
- SKIN:Bang('[!UpdateMeasure MeasureGetImagePostingURL]')
- SKIN:Bang('[!SetOption MeasureGetSite URL '
- .. ImageSources[ImageSourcesIndex]['PageURL'] .. ']')
- SKIN:Bang('[!CommandMeasure MeasureGetSite Update]')
- SKIN:Bang('[!UpdateMeasure MeasureGetSite]')
- end
- end
- function SetImageSourcesIndex()
- local TargetPageIndexes = {}
- for key, value in pairs (ImageSources) do
- local ok = true
- if value['PageURL'] and ConnectRemaining ~= 0 then
- ok = false
- else
- for key2, value2 in pairs (value) do
- if DateTable[key2] then
- if not InTable(value2, DateTable[key2]) then
- ok = false
- break
- end
- end
- end
- end
- if ok then
- table.insert(TargetPageIndexes, key)
- end
- end
- if #TargetPageIndexes == 0 then
- return false
- end
- local rand = math.random(1, #TargetPageIndexes)
- ImageSourcesIndex = TargetPageIndexes[rand]
- return true
- end
- function InitDLImage()
- local ImageURL = MeasureGetImageURL:GetStringValue()
- if ImageSources[ImageSourcesIndex]['BaseURL'] then
- ImageURL = ImageSources[ImageSourcesIndex]['BaseURL'] .. ImageURL
- end
- if IsDuplicatedImage(ImageURL) then
- return
- end
- ImageEx = MeasureGetImageEx:GetStringValue()
- ImageEx = string.lower(ImageEx)
- SKIN:Bang('[!SetOption MeasureDLImage URL ' .. ImageURL .. ']')
- SKIN:Bang('[!SetOption MeasureDLImage DownloadFile image' .. ImageNo .. '.' .. ImageEx .. ']')
- SKIN:Bang('[!CommandMeasure MeasureDLImage Update]')
- SKIN:Bang('[!UpdateMeasure MeasureDLImage]')
- end
- function IsDuplicatedImage(ImageName)
- if not DontDuplicatedChange then
- return false
- end
- if LastFileName == ImageName then
- return true
- end
- LastFileName = ImageName
- return false;
- end
- function InitShowImage(mode, ImagePath)
- if mode == 'ImageName' then
- if IsDuplicatedImage(ImagePath) then
- return
- end
- ImagePostingURL = ImagePath
- elseif mode == 'Dir' then
- ImagePath = GetRandomImageName()
- if IsDuplicatedImage(ImagePath) then
- return
- end
- ImagePostingURL = ImageSources[ImageSourcesIndex]['ImageDir']
- elseif mode == 'DL' then
- ImagePath = SKIN:MakePathAbsolute('DownloadFile/image' .. ImageNo .. '.' .. ImageEx)
- ImageNo = ImageNo + 1
- if ImageNo > NumberOfImageFiles then
- ImageNo = 1
- end
- ImagePostingURL = MeasureGetImagePostingURL:GetStringValue()
- if ImagePostingURL == '' then
- ImagePostingURL = ImageSources[ImageSourcesIndex]['PageURL']
- end
- end
- if not ImagePath then
- return
- end
- ShowImage(ImagePath)
- end
- function GetRandomImageName()
- SKIN:Bang('[!UpdateMeasure MeasureCountImageFiles]')
- local FileCount = MeasureCountImageFiles:GetValue()
- if FileCount == 0 then
- return
- end
- local rand = math.random(1, FileCount)
- SKIN:Bang('[!SetOption MeasureGetImageName Index ' .. rand .. ']')
- SKIN:Bang('[!UpdateMeasure MeasureGetImageName]')
- return MeasureGetImageName:GetStringValue()
- end
- function ShowImage(ImagePath)
- if ImagePath == 'prev' then
- if ShowedImageHistoriesIndex < #ShowedImageHistories then
- ShowedImageHistoriesIndex = ShowedImageHistoriesIndex + 1
- ImagePath = ShowedImageHistories[ShowedImageHistoriesIndex]['ImagePath']
- ImagePostingURL = ShowedImageHistories[ShowedImageHistoriesIndex]['ImagePostingURL']
- else
- return
- end
- elseif ImagePath == 'next' then
- if ShowedImageHistoriesIndex > 1 then
- ShowedImageHistoriesIndex = ShowedImageHistoriesIndex - 1
- ImagePath = ShowedImageHistories[ShowedImageHistoriesIndex]['ImagePath']
- ImagePostingURL = ShowedImageHistories[ShowedImageHistoriesIndex]['ImagePostingURL']
- else
- ConnectRemaining = 0
- SKIN:Bang('[!UpdateMeasure MeasureLuaScript]')
- return
- end
- else
- ShowedImageHistoriesIndex = 1
- table.insert(ShowedImageHistories, 1,
- { ImagePath = ImagePath, ImagePostingURL = ImagePostingURL })
- if #ShowedImageHistories > 6 then
- table.remove(ShowedImageHistories, #ShowedImageHistories)
- end
- end
- if not ImagePath then
- return
- end
- if ChangeWallpaper then
- SKIN:Bang('[!SetWallpaper "'.. ImagePath .. '" ' .. WallPaperPosition .. ']')
- SKIN:Bang('[!SetOption MeterControllerOpen LeftMouseUpAction "' .. ImagePostingURL .. '"]')
- SKIN:Bang('[!UpdateMeter MeterControllerOpen]')
- return
- end
- SKIN:Bang('[!SetOption MeterImage ImageName "' .. ImagePath .. '"]')
- SKIN:Bang('[!SetOption MeterImage X ""]')
- SKIN:Bang('[!SetOption MeterImage W ""]')
- SKIN:Bang('[!SetOption MeterImage Y ""]')
- SKIN:Bang('[!SetOption MeterImage H ""]')
- SKIN:Bang('[!SetOption MeterImage MiddleMouseUpAction "' .. ImagePostingURL .. '"]')
- SKIN:Bang('[!UpdateMeter MeterImage]')
- local MeterImageWidth = MeterImage:GetW()
- local MeterImageHeight = MeterImage:GetH()
- local X = 0
- local W = ImageMaxWidth
- if MeterImageWidth < ImageMaxWidth then
- X = math.floor(ImageMaxWidth / 2 - MeterImageWidth / 2)
- W = MeterImageWidth
- end
- SKIN:Bang('[!SetOption MeterImage X ' .. X .. ']')
- SKIN:Bang('[!SetOption MeterImage W ' .. W .. ']')
- local Y = 0
- local H = ImageMaxHeight
- if MeterImageHeight < ImageMaxHeight then
- Y = math.floor(ImageMaxHeight / 2 - MeterImageHeight / 2)
- H = MeterImageHeight
- end
- SKIN:Bang('[!SetOption MeterImage Y ' .. Y .. ']')
- SKIN:Bang('[!SetOption MeterImage H ' .. H .. ']')
- local PreserveAspectRatio = 0
- if X == 0 or Y == 0 then
- PreserveAspectRatio = 1
- end
- SKIN:Bang('[!SetOption MeterImage PreserveAspectRatio ' .. PreserveAspectRatio .. ']')
- SKIN:Bang('[!UpdateMeter MeterImage]')
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement