Skip to content

Instantly share code, notes, and snippets.

@kscc25
Last active December 27, 2015 03:39
Show Gist options
  • Save kscc25/7260938 to your computer and use it in GitHub Desktop.
Save kscc25/7260938 to your computer and use it in GitHub Desktop.
/*
* 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);
}
}
#!/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