Giter Club home page Giter Club logo

li2latex's Introduction

li2latex - LinkedIn Profile to LaTeX-based Resume

This is a commandline LinkedIn App that pulls your LinkedIn profile data through OAuth and generates a LaTex file for your resume. LaTeX tools such as pdflatex is supposed to be pre-installed before using this app.

How to use it

The project is built with Scala (2.9.1) and SBT (0.11.2). So run the app simply by typing sbt and then in SBT console type run. Press enter a couple of times if you would like to just keep the default settings.

How to extend it

Due to the limitation of LinkedIn API and the heterogeneous nature of people's profile/resume. This app is not supposed to work out of box for everyone. So please fork it and tune it against your own LinkedIn profile.

Below are serveral aspects that you probably would like to modify by yourself:

  • The LaTeX template: A sample copy of my resume can be found at http://dl.dropbox.com/u/6824415/li2latex/resume.pdf. You may well wish to use other LaTeX resume templates. To do this, write your own copy of TemplateProvider which extends the li2latex.template.TemplateProvider trait. And then in Laucher, make the Resume instance use your own version of TemplateProvider.

  • The sections of your resume: This is currently defined in Launcher using the following DSL:

      "contact"    >> "Contact Info" >> "phone-numbers,im-accounts,main-address",
      "positions"  >> "Work Experience",
      "educations" >> "Education",
      "skills"     >> "Skills",
      "projects"   >> "Project Experience"
    

On each line the first item is the field name in LinkedIn API. The second item is the section title that you would like it to appear in your resume. The optional third item defines which specific fields to request for in the special case of Contact Info section. Note that there are fields for which the parser has not yet been implemented yet. You may need to extend the li2latex.model.FieldsParser trait for your own purpose.

  • Information you need to fix-up: Due to the limitation of LinkedIn API, there are some important fields that are missing, such as the start date and end date of your projects. So this app provides some sort of fix-up workaround for this purpose. By default you may define information you would like to fix up in myfixup.xml and update the li2latex.util.LocalFixUp object to make sure the types of fix-up you need do work. You might also need to modify corresponding FieldsParser classes.

li2latex's People

Contributors

ximyu avatar

Stargazers

 avatar  avatar Pantelis Koukousoulas avatar Ian Macalinao avatar Nelson Batalha avatar medina avatar Vonpupp avatar Martin Zeman avatar Alexander De Leon avatar  avatar

Watchers

Ankit Gaur avatar

li2latex's Issues

Exception: empty.reduceLeft

I just tried to run li2latex on the new linkedin profiles and I am getting the following error. Any suggestions on how to fix this? I am on MacOS X, latest java.

error java.lang.UnsupportedOperationException: empty.reduceLeft
java.lang.UnsupportedOperationException: empty.reduceLeft
at scala.collection.LinearSeqOptimized$class.reduceLeft(LinearSeqOptimized.scala:124)
at scala.collection.immutable.List.reduceLeft(List.scala:45)
at li2latex.model.SkillsParser$$anonfun$parseOAuthResponse$3.apply(FieldsParser.scala:162)
at li2latex.model.SkillsParser$$anonfun$parseOAuthResponse$3.apply(FieldsParser.scala:140)
at li2latex.model.Section$$anonfun$getFormattedItems$1$$anonfun$apply$1.apply(section.scala:17)
at li2latex.model.Section$$anonfun$getFormattedItems$1$$anonfun$apply$1.apply(section.scala:17)
at li2latex.model.Section$$anonfun$liftM2$1$$anonfun$apply$2.apply(section.scala:35)
at li2latex.model.Section$$anonfun$liftM2$1$$anonfun$apply$2.apply(section.scala:34)
at scala.Option.map(Option.scala:133)
at li2latex.model.Section$$anonfun$liftM2$1.apply(section.scala:34)
at li2latex.model.Section$$anonfun$liftM2$1.apply(section.scala:33)
at scala.Option.flatMap(Option.scala:146)
at li2latex.model.Section.liftM2(section.scala:33)
at li2latex.model.Section.getFormattedItems(section.scala:17)
at li2latex.model.Resume$$anonfun$1.apply(Resume.scala:55)
at li2latex.model.Resume$$anonfun$1.apply(Resume.scala:55)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194)
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:194)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:45)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:194)
at scala.collection.immutable.List.map(List.scala:45)
at li2latex.model.Resume.getFormattedWholeDocument(Resume.scala:55)
at li2latex.model.Resume.generateResume(Resume.scala:25)
at li2latex.main.Launcher$.li2latex$main$Launcher$$generateResume(Launcher.scala:38)
at li2latex.main.Launcher$delayedInit$body.apply(Launcher.scala:54)
at scala.Function0$class.apply$mcV$sp(Function0.scala:34)
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
at scala.App$$anonfun$main$1.apply(App.scala:60)
at scala.App$$anonfun$main$1.apply(App.scala:60)
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59)
at scala.collection.immutable.List.foreach(List.scala:45)
at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:30)
at scala.App$class.main(App.scala:60)
at li2latex.main.Launcher$.main(Launcher.scala:8)
at li2latex.main.Launcher.main(Launcher.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
java.lang.RuntimeException: Nonzero exit code: 1
at scala.sys.package$.error(package.scala:27)
[error] {file:/Users/mzeman/Documents/Scripts/li2latex/}Li2Latex/compile:run: Nonzero exit code: 1
[error] Total time: 31 s, completed Sep 8, 2013 5:08:42 AM

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.