Giter Club home page Giter Club logo

filmfestivalhelpers's Introduction

Project description

This is a collection of Python scripts I wrote to help streamline and automate IT-related tasks for a film festival I have been working with in recent years.

Besides the time-saving aspect of automating a significant amount of menial and repetetive work, a major benefit of solving these tasks in code lies in being able to rely on a single source of truth from which information is retrieved, avoiding otherwise common and potentially harmful mistakes made when manually transfering information from one place to another (especially critical when it comes to showtimes for films and events, mandatory age limits and other information that is displayed in many contexts throughout the festival).

For this particular festival, most data is entered into, manipulated, stored and retrieved from a number of notion-databases in the runup to the event, while the live festival relies on the eventive platform for its public-facing schedule, ticketing system and the streaming of films.

Some of the scripts make use of both platforms' APIs to update and synchronize data between these services, while others fulfil more specialized tasks, such as exporting film texts and images for use in the festival catalog, generating personal schedules for festival guests or creating the necessary files for large batch print jobs.

More detailed information about the individual scripts and their operation can be found in their respective docstrings, as well as in the overview on the bottom of this page.

Getting started

Since these scripts are custom-written for a particular festival, virtually none of them will be ready to use "out of the box". They do however offer solutions to a somewhat significant number of tasks that most seasoned festival workers will be familiar with. Equipped with some curiousity and basic knowledge of Python, you might find they can serve as a point of departure or inspiration for your own festival-related coding journey.

Should you for whatever reason wish to more or less directly recreate some of the solutions proposed here, the following information about my configuration might save you some frustration:

  • working API keys for my notion and eventive account are placed in modules/secrets.py.
  • notion database ids and corresponding names are specified in modules/notion.py.
  • names and types of properties in notion databases will have to match those used in the scripts or be adjusted accordingly.
  • some scripts depend on the existence of template files referenced in the code. In most cases, a blank file of the appropriate format should do to get you started.
  • required third-party packages can be obtained using pip install: openpyxl, python-docx

Scripts/files overview

The scripts and codebase are seperated into folders as follows, losely following the sequence of required tasks in the runup to the festival outlined below:

"files" and "exports"

Default folders for templates and other prerequisiste files ('files') / files generated by scripts ('exports). These are exluded from repository for privacy reasons.

"modules"

Contains codebase neccesary for interacting with service APIs (retrieving and manipulating data), API keys and other secrets as well as some utility functions used by various scripts.

Files included: eventive.py ,notion.py, utils.py, secrets.py (excluded from repository)

"0_DevelopmentHelpers"

Contains a small number of files regularly used for testing purposes, such as displaying and storing API response json-data in a reader-friendly format (pretty_print_json.py).

"1_DatabaseImports"

The scripts in this folder are used to import data on submitted and/or selected films into the festival's notion database. ff_to_filmsdb.py takes an excel spreadsheet with film submissions exported from FilmFreeway, while watchlist_to_filmsdb.py moves other selected films from a preliminary database to the final working film database on notion.

ff_img_import.py automatically downloads html files for FilmFreeway film submissions, crawls them for image links and adds these to the respective film's notion database entry.

"2_DataMigration"

After all data on films, events, guests and other festival assets has been worked on and finalized in their respective notion database, the scripts in this folder are used to conveniently push it to other platforms and formats.

This includes:

Where appropriate, backlinks to the respective entries on eventive are automatically written to the original database(s).

"3_DataUpdates"

Scripts used to peform batch updates to all or selected films and events previously pushed to eventive. This can include changes to the entries' visibility, their availability for purchase etc.

Files included: eventive_update_events.py, eventive_update_films.py (not used), eventive_update_virtual.py (not used).

"4_FileExports"

Scripts used to export information from notion databases in various formats, ranging from simple lists and spreadsheets to more complex documents:

"5_Financials"

Simplifying the process of having large numbers of private expenses reimbursed after the festival, reimbursements.py automatically sorts entries from database, converts foreign currencies, saves receipts with appropriate filenames and generates a reimbursement form to be submitted to the accountant.

"6_Extras"

A loose collection of scripts not easily classified, in development or written to solve smaller ad-hoc tasks.

filmfestivalhelpers's People

Contributors

jsaabel avatar

Watchers

 avatar  avatar

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.