Last active
December 27, 2015 03:39
-
-
Save kscc25/7260938 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Copyright 2013 heroandtn3 (heroandtn3 [at] gmail.com) | |
* | |
* This file is part of quizgame. | |
* quizgame is free software: you can redistribute it and/or modify | |
* it under the terms of the GNU General Public License as published by | |
* the Free Software Foundation, either version 3 of the License, or | |
* (at your option) any later version. | |
* quizgame is distributed in the hope that it will be useful, | |
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
* GNU General Public License for more details. | |
* You should have received a copy of the GNU General Public License | |
* along with quizgame. If not, see <http://www.gnu.org/licenses/>. | |
*/ | |
/** | |
* | |
*/ | |
package quizgame.admin.server; | |
import static com.googlecode.objectify.ObjectifyService.ofy; | |
import java.io.IOException; | |
import java.io.PrintWriter; | |
import java.util.Date; | |
import javax.servlet.ServletException; | |
import javax.servlet.http.HttpServlet; | |
import javax.servlet.http.HttpServletRequest; | |
import javax.servlet.http.HttpServletResponse; | |
import quizgame.admin.shared.model.Quiz; | |
import com.google.gson.JsonArray; | |
import com.google.gson.JsonElement; | |
import com.google.gson.JsonParser; | |
import com.googlecode.objectify.ObjectifyService; | |
/** | |
* @author heroandtn3 | |
* | |
*/ | |
public class AutoInsertQuizServlet extends HttpServlet { | |
/** | |
* | |
*/ | |
private static final long serialVersionUID = 1L; | |
/** | |
* | |
*/ | |
public AutoInsertQuizServlet() { | |
ObjectifyService.register(Quiz.class); | |
} | |
@Override | |
protected void doPost(HttpServletRequest req, HttpServletResponse resp) | |
throws ServletException, IOException { | |
Quiz quiz = new Quiz(); | |
quiz.setCreateDate(new Date()); | |
int level = Integer.parseInt(req.getParameter("level")); | |
quiz.setLevel(level); | |
long categoryId = Long.parseLong(req.getParameter("category_id")); | |
quiz.setCategoryId(categoryId); | |
boolean translate = Boolean.parseBoolean(req.getParameter("translate")); | |
String fromLang = req.getParameter("from_lang"); | |
String toLang = req.getParameter("to_lang"); | |
int type = Integer.parseInt(req.getParameter("question_type")); | |
quiz.setType(type); | |
String questionText = req.getParameter("question_text"); | |
quiz.getQuestionsText().add(questionText); | |
JsonParser parser = new JsonParser(); | |
JsonArray janswers = parser.parse(req.getParameter("answers")).getAsJsonArray(); | |
for (JsonElement jb : janswers) { | |
String answer = jb.getAsString(); | |
if (translate) { | |
System.out.print(answer); | |
String answerTrans = BHTranslator.translate(answer.toLowerCase(), fromLang, toLang); | |
answer = answerTrans.substring(0, 1).toUpperCase() + answerTrans.substring(1); | |
System.out.println(" => " + answer); | |
} | |
quiz.getAnswersText().add(answer); | |
} | |
long qid = ofy().save().entity(quiz).now().getId(); | |
quiz.setId(qid); | |
String baseUrl = req.getParameter("base_url"); | |
String extension = req.getParameter("extension"); | |
String questionUrl = baseUrl + qid + "." + extension; | |
quiz.getQuestionsImage().add(questionUrl); | |
// update quiz | |
ofy().save().entity(quiz); | |
resp.setContentType("text/html"); | |
PrintWriter out = resp.getWriter(); | |
out.print(qid); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
from os import listdir | |
from os import makedirs | |
from os.path import isfile, isdir, join as join_path | |
import sys | |
from random import randint | |
import requests | |
import shutil | |
# default settings | |
SERVLET_URL = 'http://127.0.0.1:8888/autoInsertQuiz' | |
#SERVLET_URL = 'http://requestb.in/rjn4vfrj' | |
DEFAULT_LEVEL = 1 | |
DEFAULT_CATEGORY_ID = 1263 | |
DEFAULT_QUESTION_TEXT = 'Đây là gi?' | |
DEFAULT_QUESTION_TYPE = 2 # image | |
#BASE_URL = 'https://s3.amazonaws.com/For_Testing/' | |
BASE_URL = 'logos/' | |
FROM_LANG = 'en' | |
TO_LANG = 'vi' | |
TRANSLATE = False | |
folder_name = sys.argv[1] | |
if folder_name[-1] == '/': | |
folder_name = folder_name[:-1] | |
file_list = [f for f in listdir(folder_name) if isfile(join_path(folder_name, f))] | |
folder_img = folder_name + '_img' | |
if not isdir(folder_img): | |
makedirs(folder_img) | |
#print(file_list) | |
class Quiz(): | |
def __init__(self, file_name): | |
name = self._get_name(file_name) | |
self.correct = name | |
self.file_name = file_name | |
self.answers = [name] | |
self.ext = file_name.split('.')[-1] | |
self._fetch_answers() | |
def _fetch_answers(self): | |
while True: | |
i = randint(0, len(file_list) - 1) | |
e = self._get_name(file_list[i]) | |
if e not in self.answers: | |
self.answers.append(e) | |
if len(self.answers) == 4 or len(self.answers) >= len(file_list): | |
break | |
def _get_name(self, file_name): | |
dot_index = file_name.rfind('.') | |
return file_name[:dot_index].replace('_', ' ') | |
def insert(quiz): | |
resp = requests.post(SERVLET_URL, params={ | |
'base_url': BASE_URL, | |
'extension': quiz.ext, | |
'answers': str(quiz.answers), | |
'level': DEFAULT_LEVEL, | |
'category_id': DEFAULT_CATEGORY_ID, | |
'question_text': DEFAULT_QUESTION_TEXT, | |
'question_type': DEFAULT_QUESTION_TYPE, | |
'translate': TRANSLATE, | |
'from_lang': FROM_LANG, | |
'to_lang': TO_LANG | |
}) | |
qid = resp.text.strip() | |
new_file_name = qid + '.' + quiz.ext | |
shutil.copy(folder_name + '/' + quiz.file_name, folder_img + '/' + new_file_name) | |
quizs = [] | |
for file_name in file_list: | |
quiz = Quiz(file_name) | |
quizs.append(quiz) | |
insert(quiz) | |
print('Added:', quiz.answers) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment