• 1
  • 2
  • 3
  • 4
  • 5
  • 6

利用steam云来做图床

前言

  • 国内的渣浪微博图床和七牛云都会对用户的图片进行检测限制,有些图片就会被和谐掉。
  • 利用服务器做图床的话,在转服务器时所有图片都要跟着一起转,效率太低。
  • 阿里云OSS虽然收费较低,但流量太大的话也不太划算。
  • 每个账号的steam云有18G,并且使用Akamai CDN加速。
  • 图片可以在个人资料的Screenshot选项中更改私密性,是否删除,便于管理

综上所述,利用steam云做图床是个不错的选择。

正篇

上传工具有两个,一个是SteaScree,另一个SteamScreenshotUploaderGUI,两者相比较,SteaScree可以批量输出,缺点就是不稳定, 虽然可以生成图片, 但可能不会写入screenshots.vdf 从而导致上传失败, SteamScreenshotUploaderGUI只能上传单个,但稳定性好, 一般都能成功。

思路:首先注意文件备份, steam 截图文件夹为 ` steam/userdata/xxxxxxx/760 `, 用工具输出文件路径, 然后再用Steam自带的Steam Screenshots Uploader批量上传图片,最后使用JavaScript请求获得图片链接并打印。

使用SteamScreenshotUploaderGUI

SteamScreenshotUploaderGUI

SteamGroup

使用SteaScree

SteaScree

路径: http://www.softpedia.com/get/Internet/Other-Internet-Related/SteaScree.shtml

steamgroup

SteaScree使用方法

选择steam默认安装路径,选择gameID(可以手动输入ID,前提是你确实是有这款游戏)

点击Add screenshots to queue... 添加图片

点击 Copy screenshots to game directory 将图片输出到对应的游戏截图文件夹下

注意这里要退出steam客户端,点击 Prepare screenshots for uploading... 生成游戏截图的vtf日志

重新打开steam,选择游戏的截图库,然后使用steam的官方截图上传器上传即可,注意选择图片的私密性

获取图片地址

在浏览器里打开自己的steam个人资料选择Screenshot截图页面(建议以网格视图查看)

输入以下JavaScript脚本,返回图片链接地址,可以将链接地址打印或~转为图片下载(只有chrome能下载图片,下载图片默认关闭)~

注意:自chrome 66起, 如果文件跨域, 浏览器会发出警告, 以下脚本将失效, 即不能再进行下载


downloadURI = function (uri, name) {
    var link = document.createElement("a");
    link.download = name;
    link.href = uri;
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
    delete link;
};

makeRequest = function (method, url) {
    return new Promise(function (resolve, reject) {
        var xhr = new XMLHttpRequest();
        xhr.open(method, url);
        xhr.onload = function () {
            if (this.status >= 200 && this.status < 300) {
                resolve(xhr.responseText);
            } else {
                reject({
                    status: this.status,
                    statusText: xhr.statusText
                });
            }
        };
        xhr.onerror = function () {
            reject({
                status: this.status,
                statusText: xhr.statusText
            });
        };
        xhr.send();
    });
};


var steamImageUrls = [];

getUrlFromResponse = function (responseText) {
    window.resp = responseText;
    var linkRegex = new RegExp('https://steamuserimages[^\"]+');
    var url = linkRegex.exec(window.resp)[0];
    steamImageUrls.push(url);
    //正则过滤,批量打印原图链接地址
    console.log(/^.*?(?=(?:\?|$))/gi.exec(url)[0]);
    return url;
};

var urls = [];
jQuery('a.profile_media_item.modalContentLink').each(function (index, el) {
    urls.push(el.href);
});

for (var i = 0; i < urls.length; ++i) {
    makeRequest("GET", urls[i])
        .then(function (text) {
            var imageUrl = getUrlFromResponse(text);
            //是否下载当前图片,默认不开启
            // downloadURI(imageUrl, 'image' + i + '.jpg');
        });
}

输出地址保存至本地文件

参考

点赞