add end time of sessions
This commit is contained in:
parent
00faf31c82
commit
503b5c5137
2 changed files with 53 additions and 22 deletions
4
pom.xml
4
pom.xml
|
@ -5,6 +5,10 @@
|
|||
<groupId>tk.nyyu</groupId>
|
||||
<artifactId>devfest2018</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
<properties>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.jsoup</groupId>
|
||||
|
|
|
@ -2,7 +2,8 @@ import java.io.File;
|
|||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
@ -29,6 +30,7 @@ import org.jsoup.nodes.Document;
|
|||
import org.jsoup.nodes.Element;
|
||||
import org.jsoup.select.Elements;
|
||||
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
|
@ -39,11 +41,29 @@ public class Program {
|
|||
|
||||
public static void main(String[] args) throws IOException, InvalidFormatException {
|
||||
|
||||
Document doc = Jsoup.parse(new File("DevFest Nantes 2018.html"), "UTF-8");
|
||||
Document doc = Jsoup.parse(new File("DevFest Nantes 2018.html"), StandardCharsets.UTF_8.name());
|
||||
|
||||
JsonObject sessions = new JsonParser().parse(
|
||||
IOUtils.toString(new URL("https://devfest.gdgnantes.com/data/sessions.json"), Charset.forName("UTF-8")))
|
||||
IOUtils.toString(new URL("https://devfest.gdgnantes.com/data/sessions.json"), StandardCharsets.UTF_8))
|
||||
.getAsJsonObject();
|
||||
|
||||
JsonArray schedule = new JsonParser().parse(
|
||||
IOUtils.toString(new URL("https://devfest.gdgnantes.com/data/schedule.json"), StandardCharsets.UTF_8))
|
||||
.getAsJsonArray();
|
||||
|
||||
Map<String, String> timeslotSessions = new HashMap<>();
|
||||
for (JsonElement day : schedule) {
|
||||
JsonArray timeslots = day.getAsJsonObject().get("timeslots").getAsJsonArray();
|
||||
for (JsonElement timeslot : timeslots) {
|
||||
JsonArray sessionIds = timeslot.getAsJsonObject().get("sessions").getAsJsonArray();
|
||||
String startTime = timeslot.getAsJsonObject().get("startTime").getAsString();
|
||||
String endTime = timeslot.getAsJsonObject().get("endTime").getAsString();
|
||||
for (JsonElement id : sessionIds) {
|
||||
timeslotSessions.put(id.getAsString(), String.format("%s - %s", startTime, endTime));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
XSSFWorkbook workBook = new XSSFWorkbook();
|
||||
|
||||
CreationHelper factory = workBook.getCreationHelper();
|
||||
|
@ -54,35 +74,28 @@ public class Program {
|
|||
styleWrap.setVerticalAlignment(VerticalAlignment.CENTER);
|
||||
|
||||
for (int i = 1; i <= 2; i++) {
|
||||
Map<String, List<ImmutablePair<String, String>>> map = new LinkedHashMap<String, List<ImmutablePair<String, String>>>();
|
||||
Map<String, List<ImmutablePair<String, String>>> map = new LinkedHashMap<>();
|
||||
|
||||
Elements timeSlots = doc.select("schedule-day[name=day" + i + "] .timeslot");
|
||||
for (Element timeSlot : timeSlots) {
|
||||
String time = timeSlot.select(".hours").text() + ":" + timeSlot.select(".minutes").text();
|
||||
|
||||
List<ImmutablePair<String, String>> list = map.get(time);
|
||||
if (list == null)
|
||||
list = new LinkedList<ImmutablePair<String, String>>();
|
||||
|
||||
Elements contents = timeSlot.select(".session-content");
|
||||
for (Element content : contents) {
|
||||
String title = content.select(".session-title").text();
|
||||
String id = content.parent().parent().parent().select("a").attr("href").split("=")[1];
|
||||
String type = sessions.getAsJsonObject(id).get("type").getAsString();
|
||||
JsonElement cat = sessions.getAsJsonObject(id).get("category");
|
||||
JsonElement comp = sessions.getAsJsonObject(id).get("complexity");
|
||||
JsonElement lang = sessions.getAsJsonObject(id).get("language");
|
||||
JsonElement desc = sessions.getAsJsonObject(id).get("description");
|
||||
JsonObject session = sessions.getAsJsonObject(id);
|
||||
String type = session.get("type").getAsString();
|
||||
String cat = getIfNotNull(session, "category");
|
||||
String comp = getIfNotNull(session, "complexity");
|
||||
String lang = getIfNotNull(session, "language");
|
||||
String desc = getIfNotNull(session, "description");
|
||||
String time = timeslotSessions.get(id);
|
||||
|
||||
String details = String.format("type: %s, category: %s, complexity: %s, language: %s\n\n%s", type,
|
||||
cat != null ? cat.getAsString() : null, comp != null ? comp.getAsString() : null,
|
||||
lang != null ? lang.getAsString() : null, desc != null ? desc.getAsString() : null);
|
||||
cat, comp, lang, desc);
|
||||
|
||||
list.add(new ImmutablePair<String, String>(title, details));
|
||||
putOrNew(map, time, new ImmutablePair<String, String>(title, details));
|
||||
logger.info("{} -> {}", time, title);
|
||||
}
|
||||
|
||||
map.put(time, list);
|
||||
}
|
||||
|
||||
XSSFSheet sheet = workBook.createSheet();
|
||||
|
@ -91,7 +104,7 @@ public class Program {
|
|||
for (Map.Entry<String, List<ImmutablePair<String, String>>> entry : map.entrySet()) {
|
||||
|
||||
Row row = sheet.createRow(rownum++);
|
||||
|
||||
|
||||
int cellnum = 0;
|
||||
Cell cell = row.createCell(cellnum++);
|
||||
cell.setCellValue(entry.getKey());
|
||||
|
@ -116,11 +129,25 @@ public class Program {
|
|||
if (cellnum > 2)
|
||||
sheet.createRow(rownum++);
|
||||
}
|
||||
|
||||
sheet.autoSizeColumn(0);
|
||||
}
|
||||
|
||||
workBook.write(new FileOutputStream(new File(doc.title() + ".xlsx")));
|
||||
workBook.close();
|
||||
}
|
||||
|
||||
private static <K, V> void putOrNew(Map<K, List<V>> map, K key, V val) {
|
||||
List<V> list = map.get(key);
|
||||
|
||||
if (list == null)
|
||||
list = new LinkedList<V>();
|
||||
|
||||
list.add(val);
|
||||
|
||||
map.put(key, list);
|
||||
}
|
||||
|
||||
private static String getIfNotNull(JsonObject jsonObject, String name) {
|
||||
return jsonObject.get(name) == null ? "" : jsonObject.get(name).getAsString();
|
||||
}
|
||||
}
|
||||
|
|
Reference in a new issue