| 55 | } |
| 56 | |
| 57 | ScriptState ResourceScript::getDetail(const ResourceItem &oldItem, ResourceItem &newItem, const QString &scene) |
| 58 | { |
| 59 | if(!hasDetailFunc) return ScriptState(ScriptState::S_ERROR, "No getdetail Function"); |
| 60 | MutexLocker locker(scriptLock); |
| 61 | if(!locker.tryLock()) return ScriptState(ScriptState::S_BUSY); |
| 62 | QString errInfo; |
| 63 | QVariantList rets = call(detailFunc, {oldItem.toMap(), scene}, 1, errInfo); |
| 64 | if(!errInfo.isEmpty()) return ScriptState(ScriptState::S_ERROR, errInfo); |
| 65 | if(rets[0].type() != QVariant::Map) return ScriptState(ScriptState::S_ERROR, "Wrong Return Value Type"); |
| 66 | auto robj = rets[0].toMap(); |
| 67 | newItem = { |
| 68 | robj.value("title").toString(), |
| 69 | robj.value("time").toString(), |
| 70 | robj.value("size").toString(), |
| 71 | robj.value("magnet").toString(), |
| 72 | robj.value("url").toString() |
| 73 | }; |
| 74 | return ScriptState(ScriptState::S_NORM); |
| 75 | } |