百度網盤自動轉存

自動轉存當前文件至上次轉存路徑。

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         百度網盤自動轉存
// @name:zh-CN   百度网盘自动转存
// @namespace    moe.jixun.baidu.auto.save
// @version      0.4
// @description  自動轉存當前文件至上次轉存路徑。
// @author       Jixun
// @include      http://pan.baidu.com/share/link*
// @include      https://pan.baidu.com/share/link*
// @include      http://pan.baidu.com/s/*
// @include      https://pan.baidu.com/s/*
// @grant        none
// @run-at       document-end
// @license      MIT
// ==/UserScript==

(function(yunData, require) {
  'use strict';

  var errors = {
    0: '成功',
    5: '自己的文件',
    12: '已经保存过了',
    111: '另一保存任务进行中',
    '-33': '需要会员 (?)',
    120: '需要会员 (?)',
    130: '需要超级会员 (?)'
  };

  (function (tip, c) {
    function getRecentPath() {
      var key = window.yunData.MYNAME.replace(/@/g, "") + "_transfer_save_path";
      var _recent_path = localStorage.getItem(key);
      if (!_recent_path) _recent_path = '/';
      else _recent_path = _recent_path.replace(/\?\d+/, '');

      return _recent_path;
    }

    var $ = require("base:widget/libs/jquery-1.12.4.js");
    function doAutoSave (count) {
      if (count <= 0) {
        tip.hide();
        tip.show({
          mode: 'error',
          msg: '转存失败:请检查网络连接。',
          hasClose: true,
          autoClose: false,
          vipType: 'svip'
        });
        return;
      }
      const path = getRecentPath();

      $.ajax({
        type: 'POST',
        url: '/share/transfer?shareid=' + yunData.SHARE_ID + '&from=' + yunData.SHARE_UK,
        data: {
          filelist: JSON.stringify(yunData.FILEINFO.map(function(f){ return f.path; })),
          path: path
        },
        dataType: 'json',
        success: function (data) {
          var raw = typeof data == 'string' ? $.parseJSON(data) : data;
          var err = data.errno;

          var errMsg = '';
          if (err in errors) {
            errMsg += errors[err] + ' (' + err + ')';
          } else {
            errMsg += '未知状态 (' + err + ')';
          }

          var msg = '保存至: ' + path + ', 状态: ' + errMsg;
          document.title = errMsg + ' - ' + document.title;

          tip.hide();
          tip.show({
            mode: err === 0 ? 'success' : 'caution',
            msg: msg,
            hasClose: true,
            autoClose: false,
            vipType: 'svip'
          });
        },
        error: function (error) {
          console.warn('网络连接失败,进行重试…');
          setTimeout(doAutoSave, 500, count - 1);
        }
      });
    }
    doAutoSave(5);

    tip.show({
      mode: 'loading',
      msg: "正在转存文件,请稍后...",
      hasClose: false,
      autoClose: false
    });
  })(
    /*tip: */require("system-core:system/uiService/tip/tip.js")
  );
})(window.yunData, window.require);