Commit 7671aec3 authored by nano's avatar nano

fix ygopro

parent 6c7dbe8c
......@@ -5,9 +5,6 @@
</component>
<component name="ChangeListManager">
<list default="true" id="f0cbce64-0ebc-4f60-8c2d-2fe9e214a8c0" name="Default" comment="">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/config.ts" afterPath="$PROJECT_DIR$/config.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/routes/package.ts" afterPath="$PROJECT_DIR$/src/routes/package.ts" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/test.ts" afterPath="$PROJECT_DIR$/test.ts" />
</list>
<ignored path="mycard-console-backend.iws" />
......@@ -55,11 +52,11 @@
</provider>
</entry>
</file>
<file leaf-file-name="test.ts" pinned="false" current-in-tab="true">
<file leaf-file-name="test.ts" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/test.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="691">
<caret line="53" column="1" lean-forward="true" selection-start-line="53" selection-start-column="1" selection-end-line="53" selection-end-column="1" />
<state relative-caret-position="-1165">
<caret line="14" column="0" lean-forward="true" selection-start-line="14" selection-start-column="0" selection-end-line="14" selection-end-column="0" />
<folding>
<element signature="n#!!doc" expanded="true" />
<element signature="e#44#86#0" expanded="true" />
......@@ -68,6 +65,16 @@
</provider>
</entry>
</file>
<file leaf-file-name="package.json" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="342">
<caret line="20" column="23" lean-forward="true" selection-start-line="20" selection-start-column="23" selection-end-line="20" selection-end-column="23" />
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FileTemplateManagerImpl">
......@@ -255,7 +262,7 @@
<property name="settings.editor.selected.configurable" value="preferences.sourceCode.TypeScript" />
<property name="JavaScriptPreferStrict" value="true" />
<property name="JavaScriptWeakerCompletionTypeGuess" value="false" />
<property name="SearchEverywhereHistoryKey" value="&#9;FILE&#9;file:///Users/vai/fun/moecube-console/src/routes/app.ts" />
<property name="SearchEverywhereHistoryKey" value="&#9;FILE&#9;file:///Users/vai/fun/moecube-console/package.json" />
<property name="node.js.path.for.package.tslint" value="project" />
<property name="node.js.selected.package.tslint" value="$PROJECT_DIR$/node_modules/tslint" />
<property name="add_unversioned_files" value="$PROJECT_DIR$/.env" />
......@@ -417,12 +424,12 @@
<workItem from="1493198225466" duration="47067000" />
<workItem from="1493371982129" duration="6000" />
<workItem from="1493372010655" duration="3472000" />
<workItem from="1493692283332" duration="32521000" />
<workItem from="1493692283332" duration="33075000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="234292000" />
<option name="totallyTimeSpent" value="234846000" />
</component>
<component name="TodoView">
<todo-panel id="selected-file">
......@@ -435,7 +442,6 @@
</component>
<component name="ToolWindowManager">
<frame x="55" y="23" width="1377" height="872" extended-state="0" />
<editor active="true" />
<layout>
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="DB Browser" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
......@@ -443,7 +449,7 @@
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.43941605" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32975295" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.36153847" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.36153847" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="TypeScript" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32820514" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.14011799" sideWeight="0.49384886" order="0" side_tool="false" content_ui="combo" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32846716" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
......@@ -765,14 +771,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="342">
<caret line="20" column="23" lean-forward="true" selection-start-line="20" selection-start-column="23" selection-end-line="20" selection-end-column="23" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/serives/Queue.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-51">
......@@ -873,8 +871,8 @@
</entry>
<entry file="file://$PROJECT_DIR$/test.ts">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="691">
<caret line="53" column="1" lean-forward="true" selection-start-line="53" selection-start-column="1" selection-end-line="53" selection-end-column="1" />
<state relative-caret-position="-1165">
<caret line="14" column="0" lean-forward="true" selection-start-line="14" selection-start-column="0" selection-end-line="14" selection-end-column="0" />
<folding>
<element signature="n#!!doc" expanded="true" />
<element signature="e#44#86#0" expanded="true" />
......@@ -882,5 +880,13 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="342">
<caret line="20" column="23" lean-forward="true" selection-start-line="20" selection-start-column="23" selection-end-line="20" selection-end-column="23" />
<folding />
</state>
</provider>
</entry>
</component>
</project>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
import axios from 'axios';
import config from './config';
import * as uuid from 'uuid';
import {XmlDocument} from 'xmldoc';
import { XmlDocument } from 'xmldoc';
let apps = {};
......@@ -9,6 +9,9 @@ const locales = ['zh-CN', 'zh-TW', 'en-US', 'ja-JP'];
const languagePack = ['zh-CN', 'en-US'];
const platforms = ['win32', 'darwin'];
const ygoproPlatforms = ['linux', 'osx', 'win32'];
const ygoproLocales = ['en-US', 'ja-JP', 'zh-CN'];
let wait = ms => new Promise(resolve => setTimeout(resolve, ms));
const lang = {
......@@ -36,8 +39,19 @@ async function createPackage(app) {
});
}
async function createYgoproPackage(app) {
return await axios.post(config.new_package, {
id: uuid.v1(),
appId: app.id,
locales: app.locales,
platforms: app.platforms,
version: '0.0.1',
});
}
async function updatePackage(app, pack) {
let {data} = await axios.get(config.old_metalinks(app.id));
let { data } = await axios.get(config.old_metalinks(app.id));
const xml = new XmlDocument(data);
const rawUrl = xml.valueWithPath('file.url');
const url = rawUrl.replace('https://r.my-card.in/dist/', 'https://r.my-card.in/release/dist/');
......@@ -49,6 +63,39 @@ async function updatePackage(app, pack) {
});
}
async function updateYogoproPackage(app, pack) {
let metalink = `${app.id}-${pack.platforms[0]}-${pack.locales[0]}`.replace('osx', 'darwin');
let { data } = await axios.get(config.old_metalinks(metalink));
const xml = new XmlDocument(data);
const rawUrl = xml.valueWithPath('file.url');
const url = rawUrl.replace('https://r.my-card.in/dist/', 'https://r.my-card.in/release/dist/');
console.log(pack._id, url);
return await axios.post(config.upload_url, {
_id: pack._id,
url
});
}
async function handleYgopro(app) {
console.log(ygoproPlatforms, ygoproLocales);
for (let platform of ygoproPlatforms) {
for (let locale of ygoproLocales) {
try {
app.platforms = [platform];
app.locales = [locale];
console.log('正在处理yogopro', app.platforms, app.locales);
let { data } = await createYgoproPackage(app);
await updateYogoproPackage(app, data);
await wait(180000);
} catch (e) {
console.log(e.response.data);
}
}
}
}
async function createApp(app) {
return await axios.post(config.new_app(app.id), {
id: app.id,
......@@ -58,6 +105,9 @@ async function createApp(app) {
}
function handleName(app) {
if (!app.parent) {
console.log('parent 不存在', app.parent);
}
return Object.assign({}, ...languagePack.map(language => ({
/* tslint:disable */
[language]: `${apps[app.parent]['name'][language]} ${lang[language]['language_pack']} (${app.locales.map(locale => lang[language][locale])})`
......@@ -70,7 +120,7 @@ async function updateApp(app) {
id, name, description, developers, publishers, released_at, category, tags, dependencies, references,
homepage, actions, version, conference, icon, cover, background, locales, author, news, ...other
} = app;
await
return await
axios.patch(config.new_app(app.id), {
id,
name: name || handleName(app),
......@@ -93,43 +143,49 @@ async function updateApp(app) {
news: {},
...other,
});
let {data} = await createPackage(app);
await updatePackage(app, data);
}
async function main() {
let {data} = await axios.get(config.old_apps_json);
let { data } = await axios.get(config.old_apps_json);
let newApps = await axios.get(config.new_apps_json);
newApps.data.map(app => {
apps[app['id']] = app;
});
for (let app of data) {
if (!['ygopro', 'desmume', 'test'].includes(app['id']) && !apps[app['id']]) {
for (let app of data) {
if (!['desmume', 'test'].includes(app['id']) && !apps[app['id']]) {
await createApp(app);
}
}
for (let i = 0, t = 0, w = true; i <= data.length; i++, t = 180000) {
for (let i = 0, t = 0, w = true; i <= data.length; i++ , t = 180000) {
try {
let app = data[i];
if (!['ygopro', 'desmume', 'test'].includes(app['id'])) {
if (w) {
await wait(t);
}
console.log(`正在处理${app['id']}`);
// if (w) {
// await wait(t);
// w = true;
// }
// if (!['ygopro', 'desmume', 'test'].includes(app['id'])) {
// console.log(`正在处理${app['id']}`);
// await updateApp(app);
// let { data } = await createPackage(app);
// await updatePackage(app, data);
// }
if (app['id'] == 'ygopro') {
await updateApp(app);
w = true;
handleYgopro(app);
}
} catch (e) {
console.log(e);
console.log(e.response.data);
w = false;
continue;
}
......
nohup: 1: No such file or directory
......@@ -10,7 +10,6 @@
"pretest": "tsc"
},
"dependencies": {
"@types/axios": "^0.14.0",
"@types/joi": "^10.3.0",
"aliyun-oss-upload-stream": "^1.3.0",
"aliyun-sdk": "^1.9.22",
......@@ -52,7 +51,7 @@
"lodash": "latest",
"nodemon": "^1.11.0",
"tslint": "^5.1.0",
"typescript": "^2.1.4",
"typescript": "^2.3.4",
"xmldoc": "^1.0.0"
}
}
......@@ -65,7 +65,7 @@ export function archiveSingle(archive: string, files: string[], directory: strin
export function archive(archive: string, files: string[], directory: string): Promise<void> {
return new Promise<void>((resolve, reject) => {
let child = child_process.spawn('tar', ['-vczf', archive, '-C', directory].concat(files), {stdio: 'inherit'});
let child = child_process.spawn('tar', ['-czf', archive, '-C', directory].concat(files), {stdio: 'inherit'});
child.on('exit', (code) => {
if (code == 0) {
resolve();
......
......@@ -29,7 +29,7 @@ app.use(async (ctx, next) => {
ctx.set('X-Response-Time', `${ms}ms`);
});
// 错误处理
// 错误处理`
app.use(async (ctx, next) => {
try {
await next();
......
......@@ -142,26 +142,18 @@ router.post('/v1/package', async (ctx: Context, next) => {
ctx.throw(400, `请填写版本号:${_p.id}`);
}
let existsPlatform = await mongodb.Packages.find({
let existsPlatform = await mongodb.Packages.findOne({
id: {$ne: _p.id},
appId: _p.appId,
platforms: {$in: _p.platforms},
$and: [{
platforms: {$in: _p.platforms},
locales: {$in: _p.locales}
}],
type: 'editing'
}).count();
});
if (existsPlatform) {
console.log(existsPlatform);
ctx.throw(400, '平台已存在');
}
let existsLocales = await mongodb.Packages.find({
id: {$ne: _p.id},
appId: _p.appId,
locales: {$in: _p.locales},
type: 'editing'
}).count();
if (existsLocales) {
console.log(existsLocales);
ctx.throw(400, '语言已存在');
ctx.throw(400, '平台语言已存在');
}
await mongodb.Packages.update({id: _p.id}, {$set: {type: 'edited'}}, {multi: true});
......
......@@ -3,7 +3,7 @@
*/
import * as fetch from 'isomorphic-fetch';
import * as _ from 'lodash';
import {XmlDocument} from 'xmldoc';
import { XmlDocument } from 'xmldoc';
import config from './config';
......@@ -18,11 +18,11 @@ async function test_checksums() {
const old_checksum = await (await fetch(config.old_checksums(app.id))).text();
const new_checksum = await (await fetch(config.new_checksums(app.id))).text();
old_checksum.split('\n').forEach(line => {
new_checksum.split('\n').forEach(line => {
oldMaps.add(line);
});
new_checksum.split('\n').forEach(line => {
old_checksum.split('\n').forEach(line => {
if (!oldMaps.has(line)) {
console.log('', old_checksum);
console.log('', new_checksum);
......@@ -44,7 +44,7 @@ async function test_download() {
const url = xml.valueWithPath('file.url');
const response = await fetch(url, {method: 'HEAD'});
const response = await fetch(url, { method: 'HEAD' });
if (!response.ok) {
throw `${app.id} 的 下载地址 ${url} 返回 ${response.statusText}`;
}
......
......@@ -6,12 +6,6 @@
version "1.3.2"
resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.2.tgz#52897ad5a51f05ea2f57f8e8136085c7d1c385a5"
"@types/axios@^0.14.0":
version "0.14.0"
resolved "https://registry.yarnpkg.com/@types/axios/-/axios-0.14.0.tgz#ec2300fbe7d7dddd7eb9d3abf87999964cafce46"
dependencies:
axios "*"
"@types/bluebird@*", "@types/bluebird@^3.5.0", "@types/bluebird@^3.5.2":
version "3.5.2"
resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.2.tgz#ecf1104217495e50fe0b588d538146cd6f733b89"
......@@ -309,7 +303,7 @@ aws4@^1.2.1:
version "1.6.0"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
axios@*, axios@^0.16.1:
axios@^0.16.1:
version "0.16.1"
resolved "https://registry.yarnpkg.com/axios/-/axios-0.16.1.tgz#c0b6d26600842384b8f509e57111f0d2df8223ca"
dependencies:
......@@ -2128,9 +2122,9 @@ type-is@^1.5.5, type-is@^1.6.14:
media-typer "0.3.0"
mime-types "~2.1.15"
typescript@^2.1.4:
version "2.3.0"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.3.0.tgz#2e63e09284392bc8158a2444c33e2093795c0418"
typescript@^2.3.4:
version "2.3.4"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.3.4.tgz#3d38321828231e434f287514959c37a82b629f42"
uglify-js@^2.6:
version "2.8.22"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment