Compare commits
11 commits
8acd9c1fad
...
c427ba9bbe
Author | SHA1 | Date | |
---|---|---|---|
c427ba9bbe | |||
97c32fb09a | |||
716b5e555b | |||
6d4f3d6777 | |||
cde5e332a6 | |||
9234a02a48 | |||
b6ce9c965b | |||
785705ab60 | |||
ca5766fdfa | |||
9e96b2597f | |||
a475ae2c2a |
72 changed files with 56951 additions and 31351 deletions
13
content/books/brave-little-sternums.md
Normal file
13
content/books/brave-little-sternums.md
Normal file
|
@ -0,0 +1,13 @@
|
|||
---
|
||||
title: brave little sternums
|
||||
---
|
||||
|
||||
> we would<br>but we will not<br>because we cannot do that
|
||||
> after that we would<br>we would not rest until we had<br>but our enemies are<br>so we cannot do that either
|
||||
> above all, we would also<br>in our thousands we would also<br>believe us, <i lang="ku-kmr">heval</i><br>at any cost we would also
|
||||
> but your body is not<br>we cannot even do that
|
||||
> you said: if you love your own<br>enough to fight for and die for<br>(and you must love your own<br>enough to fight for and to die for)<br>you have to love the far from<br>enough to fight and to die for
|
||||
> your saying weighs upon<br>every day it weighs upon<br>we cannot enough<br>we cannot enough
|
||||
> we can only this and that<br>in little towns here and there<br>which hug the border though it burns<br>which you fought for and died for<br>and made chai for and were for<br>we can only house by house<br>woman by woman we can
|
||||
> until we die for<br>until we cannot<br>until we die for<br>or<br>until
|
||||
>> Matt Broomfield, "for Anna Campbell (Helin Qerechox)" (pp 108--9)
|
13
content/books/immortal.md
Normal file
13
content/books/immortal.md
Normal file
|
@ -0,0 +1,13 @@
|
|||
---
|
||||
title: 'Immortal: Mourning, Martyrs & Murals'
|
||||
---
|
||||
|
||||
> Anna's death hit the media and has was much bigger news than other internationals who have died, including other fighters from the UK. This is partly because she was the first woman from the UK to have been killed and because of how the media could use her image. This double standard is nothing but a symptom of the patriarchal society she was fighting against.
|
||||
> Even more so, our states and their media don't value the lives of the thousands who have died and suffered in Afrin. Instead they sell guns to their enemies. Here in the UK, we must remember that the British state and companies it supports are directly selling arms to the Turkish state which is killing countless fighters and civilians. All over the world, we must not forget who is responsible and who is complicit in the deaths and abuses. We ust not forget that the fight is not over, and that the need for support is stronger than ever. We should stand in solidarity with Rojava and we should also remember that the greatest act of solidarity with the Rojava revolution is to fight for revolution and change in our own communities and wherever we find outselves.
|
||||
> The tribues paid to Anna globally, from the graffiti on the sides of canals to community spaces being named in her memory, are not solely about her, but about conveying the message that we have an outstanding set of tools at our disposal. These tools keep ideas flowing freely beyond the borders that try to fragment and diminish our collective power. We are radically creative, and without that there woul dbe no hope for a future free from the violences that demand so much from our bodies.
|
||||
>> "A Stage was Named After Her (and We Wrote a Speech)" (pp 6--7)
|
||||
|
||||
> I do know that taking risks and giving up privileges, making way, de-centering our lives and trying to embody the belief that no-one's life should be worth any less or more than anyone else's is a start. Physically going and being with people, at their invitation --- critical factor folks! --- in solidarity with their struggle, supporting it and knowing it as connected to your own liberation, is and will be a core part of revolutionary process. International solidarity struggle has a long history and presence and always will do, within anarchist and socialist groups but also within religious community groups such as Quakers, Muslim and Christian charity and peace organisations --- from witnessing and accompaniment, to relif work on the ground, to join armed resistance. States have and will criminalise people for taking part in any of the above, in accordance with how violently othered those they are attempting to demonise and deny are. The stakes in state violence against populations are going to get higher and higher as more and more people are forced into climate breakdown-induced migration, precarity and struggle for survival...
|
||||
> ...Would she[Anna] walk through spaces like the City of London, or through borders, where the violent privilege of who gets to move, eat, buy, acquire, and the dispossession needed to enforce that, remains invisible behind glass towers with fast elevators, between departure lounge escalatorsl those sanitised, shiny, indifferent edifices where the absence of violence is precisely the violence.
|
||||
> It's when you come back into 'social peace'; the alienated and alienating conditions of neo-liberal England, where the schism and disconnect between the communities of resistance that you left behind, and the powerful states and corporations combining to crush them, from where you walk now, becomes a felt, disorientating, painful dimension to your knowing. It's another, international dimension added to the localised dispossession and violent and racialised class system which 'social peace' is made up of. The difference with back over there being that there really is a united community in combat and creation, whereas here just building one is a struggle.
|
||||
>> Ewa Jasiewicz, "Daisy, Anna, Hêlîn" (pp 137--9)
|
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
title: 'Manifesto for a Democratic Civilization, Volume I - Civilization: The Age of Masked Gods and Disguised Kings'
|
||||
---
|
||||
|
||||
> For a meaningful method and regime of truth it is important to consider the human (as a species that has realized its own society) as a unique subject of study, separate from the rest of the animal kingdom. Undoubtedly, not only in the animal kingdom but also in the plant kingdom, we encounter many examples of existence in groups. By nature, all species have the need to live in close proximity to each other, or even live as a group---trees have forests and fish their schools. However, the human society has a qualitative distinction. The society itself maybe the <i lang="de">Übermensch</i>, the over-man. If we put a human child back into the forest right after its birth (and, of course, securing its life), it cannot but live the life of a primate. It similar humans have to meet there, a social period akin to that of the primates will develop. This indicates the distinct value of human society, the role society plays in forming the human being and the role of the human being in constructing society.
|
||||
> Of course, without humans there would be no human society. But to view society as nothing but the sum of humans is a fallacy. A human without society cannot surpass being a primate. <em>With</em> society, the human becomes an incredible power. All things realized within the human individual must be socially developed. It is impossible to attain knowledge and establish the regime of truth in the absence of society.
|
||||
>> Öcalan, "On Method and the Regime of Truth" (ch 1, p 50)
|
||||
|
||||
> The anarchist schools that emerged as the radical critique of capitalist modernity are competend in issues such as methodology and the theory of knowledge. Unlike the Marxists, they do not talk about the progressiveness of capitalism. They were able to perceive society from many different perspectives and did not limit themselves to economic reductionism. They play their role of the system's 'rebellious children' quite competently. Howevr, despite all their good intentions, they could not ultimately avoid becoming a sect that stubbornly protected itself from the sytem's sins.
|
||||
>> ibid (p 63)
|
||||
|
||||
> Sociologists such as Émile Durkheim did not move beyond defining society as groups of human beings who are the sum of events and institutions. Class, state, economic, juridicial, political, philosophical and religious narratives cannot surpass the mentality of events and institutions. However, these scientists never really question why these are not held to be as precious as the Holy Books. Their main weekness is that they have not understood the importance of the <i lang="fr">longue durée</i> society. Humanity possesses a profound memory of its own story and will not abandon it so easily. The belief in the sacred religious books are not due to an abstract god and some rituals, but because humans can feel the meaning and traces of their own life story in these books. In fact, these books are the memory of living society. Thus, whether the events and notions in them are true or not is of secondary importance. Fernand Braudel draws our attention to a fundamental methodological and scientific mistake with his apt comment that 'sociology and history make up <em>one single intellectual adventure</em>, not two different sides of the same cloth but the very stuff of the cloth itself.'
|
||||
>> "The Main Sources of Civilization" (ch 2, pp 83--4)
|
||||
|
||||
> The city itself means a break with organic society; thus, a mentality removed from nature will easily be shaped in the city. The city civilization is established on the basis of betrayal of the environment and is the root of all abstract, vulgar metaphysic and materialistic thought.
|
||||
>> "Urban Civilizated Society" (ch 3, p 154)
|
||||
|
||||
> Under the imperial umbrella, agricultural production, mining, craftmanship and trade grew considerably. The saying 'All roads lead to Rome' signifies where the economic resources flowed. THe whole world was nuturing Rome.
|
||||
>> ibid (p 163)
|
||||
|
||||
> It is clear that a slave-owning society amounts to a system of a completely material culture. The primary characteristic of this system is the profound degradation of humanity, a degradation not seen in any other species. This capacity for the collapse of conscience is closely linked to the attractiveness and magnificence of the material culture. Even today, it is nearly impossible not to be filled with awe and admiration for the monuments and structures created by this culture. This is the closest the human being can get to being divine. However, when divinity targets the humans themselves, it turns into catastrophe. For the gods everyone else is servant.
|
||||
>> ibid (p 179)
|
||||
|
||||
> Two of the most striking features of woman's enslavement are the oppression and dehumanization. Being confined to the house is not just spatial imprisonment. It is worse than being in a prison: it is being kept in a state of continuous and profound rape. No matter how hard one tries to disguise this reality with engagement and wedding ceremonies, even one day of a practice of this kind signals the end of humanity's honor, especially for those who have self-respect.
|
||||
>> ibid (pp 180--1)
|
|
@ -0,0 +1,24 @@
|
|||
---
|
||||
title: The Field Guide to Understanding ‘Human Error’
|
||||
---
|
||||
|
||||
> ...this timeline provides a mere order of what came before what. A lot is lost when you represent your data that way...
|
||||
> ...If you want to learn about human performance, you really have to take time as an organizing principle seriously. The reason is that phenomena such as task load, workload management, stress, fatigue, distractions, or problem escalation are essentially meaningless if it weren't for time.
|
||||
>> Dekker, "Doing a 'Human Error' Investigation" (ch 3, p 53)
|
||||
|
||||
> New technology can lead to an increase in operational demands by allowing the system to be driven faster; harder; longer; more precisely or minutely. Althrough first introduced as greater protection against failure (more precise approaches to the runway with a Heads-Up Dispkay, for example), the new technology allows a system to be driven closer to its margins, eroding the safety advantage that was gained.
|
||||
>> Dekker, "Explaining the Patterns of Breakdown" (ch 4, p 100)
|
||||
|
||||
> Telling yourself to look for holes and farilues makes you forget that, to the people working there, their organization is not typically a brittle collection of porous layers, full of people committing failures on a daily basis. To them, it is a place where normal people come to do normal work. If all you look for is the holes, the abnormal, the failed, the broken, you will have difficulty understanding why things are normal to them; why what they do makes sense to them and their colleagues and superiors (and often even regulators).
|
||||
>> Dekker, "Understanding Your Accident Model" (ch 5, p 137)
|
||||
|
||||
> An entire operation or organization can shift its idea of what is normative, and thus shift what counts as bad news. One-time performance can be the expected norm, for example, even if we borrow from safety to achieve it. In such cases, the hurried nature of a departure or arrival is not bad news that is worth reporting (or worth listening to, for that matter). It is the norm that everyone tries to adhere to since it satisfies other important organizational goals (customer service, financial gain) without obviously compromising safety. From the inside, drift may become invisible.
|
||||
> Diane Vaughan called this process of drift 'normalization of deviance.' A group's construction of risk can persist even in the face of continued (and worsening) signals of potential danger. This can go on until something goes wrong, which (as Turner would have predicted) revelas the gap between the presence of risk and how it was believed to be under control.
|
||||
>> ibid (pp 138--9)
|
||||
|
||||
> There are suggestions in research and from mishaps that growing your safety bureaucracy actually increases your risk of an accident. The more that safety processes and protocols are developed or enforced bureaucratically by those who are at a distance from the operation, the more they become 'fantasy documents.' Fantasy documents bear no relation to actual work or actual operational expertise. An organization may become so adept at generating such documents that it gets in the way of managing the risks that actually need managing...
|
||||
> ...Recall from above that the bureaucratization of safety helps create what Vaughan called 'structural secrecy.' This is a by-product of the cultural, organizational, physical and psychological separation between operations on the one hand, and safety regulators, departments and bureaucracies on the other. Under such conditions, critical information may not cross organizational boundaries. Once firmly committed to its existing processes and procedures, a safety bureaucracy may not know what it really needs to learn from the operation, and may not have ways of dealing with such knowledge if it did.
|
||||
>> Dekker, "Creating an Effective Safety Department" (ch 6, pp 149--50)
|
||||
|
||||
> A neo-liberal trend towards what is known as worker 'responsibilization' in many Western and other countries seems to coincide nwith the restructuring and intensification of work under pressures of resource constraints and competition. This trend is aimed at helping workplaces become more competitive and productive, and the adverse health and safety impacts are increasingly attributed to workers' own behaviours rather than how work is organized or resourced.
|
||||
>> Dekker, "Building a Safety Culture" (ch 7, p 164, fn a)
|
|
@ -2,8 +2,8 @@
|
|||
title: 'Wobblies of the World: A Global History of the IWW'
|
||||
---
|
||||
|
||||
Glib-tongued theory is of little help in the class struggle unless it is backed by class loyalty and class action ... A man is not what he thinks, but what he does. It is easy to think war, or think strike, or to theorise on tactica, but it takes real manhood and real womanhood to back up these theories and these thoughts in the actual everyday battle of the working class.
|
||||
> Direct Action
|
||||
> Glib-tongued theory is of little help in the class struggle unless it is backed by class loyalty and class action ... A man is not what he thinks, but what he does. It is easy to think war, or think strike, or to theorise on tactica, but it takes real manhood and real womanhood to back up these theories and these thoughts in the actual everyday battle of the working class.
|
||||
>> Direct Action
|
||||
|
||||
His [Tom Glynn] confidence was well founded: employers were not obliged to recognize unions, but workers in strategic positions in industries such as transport, mining, and power could defy the law.
|
||||
> Lucien van der Walt, "<q>All Workers Regardless of Craft, Race or Colour</q>: The First Wave of IWW Activity and Influence in South Africa"
|
||||
> His [Tom Glynn] confidence was well founded: employers were not obliged to recognize unions, but workers in strategic positions in industries such as transport, mining, and power could defy the law.
|
||||
>> Lucien van der Walt, "<q>All Workers Regardless of Craft, Race or Colour</q>: The First Wave of IWW Activity and Influence in South Africa"
|
||||
|
|
70
content/books/worth-fighting-for.md
Normal file
70
content/books/worth-fighting-for.md
Normal file
|
@ -0,0 +1,70 @@
|
|||
---
|
||||
title: 'Worth Fighting For: Bringing the Rojava Revolution Home'
|
||||
---
|
||||
|
||||
> This is the feeling that I want everyone in our social movements to have --- from the direct action activist chaining themselves to machinery, to community organisers holding neighbourhood meetings, to campaigners sitting at meetings with government officials. It all needs to come out of, and be accountbale to, a movement and the ideals that drive it. That way we don't get absorbed by the dominant paradigm --- capitalism and liberalism --- or break off into subcultures. We'll have the clarity to strategically use a diversity of tactics, but the integrity to be accountable to the grass-roots and our values. That way, political institutions are forced to engage with us not because we're palatable, but because we're powerful.
|
||||
>> Natalia, "Believing: The Battle for Kobane" (ch 2, p 32)
|
||||
|
||||
> <i lang="ku-kmr">Peşengtî</i> (pronounced <i>peh-sheng-tee</i>) is what the Kurdistan Freedom Movement calls on us to be when things get touch. When you break it down it means something like <i>being-in-front-ness</i>. It's usually translated as vanguard. It means you have a responsibility to model your values, to be an example, and to live in a way that can inspire other people to do better. It means, we recognise that first and foremost we learn from each other and our communities, and we should embrace that.
|
||||
> You don't get to decide if you are <i lang="ku-kmr">peşengtî</i>. You'll find out later from the world around you, society will let you know. But you should strive to be.
|
||||
>> Jenni, "Transforming: Change Starts with the Self" (ch 4, p 56)
|
||||
> If what you do doesn't warm people, if you don't know how to enjoy life and show love, no one will be interested in what you say or do.
|
||||
>> ibid (p 58)
|
||||
|
||||
> The right life cannot be lived in the wrong society. But the right struggle can be fought wherever systems of domination oppress the people.
|
||||
>> Theodor Adorno (quoted ibid, p 60)
|
||||
|
||||
> Do you know where you're going? <em>Yes.</em>
|
||||
> Do we know what awaits us? <em>Yes.</em>
|
||||
> Is it worth it? <em>Yes.</em>
|
||||
> Who can answer the previous three questions with a <em>yes</em> and remain still and do nothing, without feeling that something deep inside is tearing apart?
|
||||
>> Zapatista communiqué, December 1994 (quoted ibid, p 63)
|
||||
|
||||
> Although I had come face to face with police brutality at protests and developed anti-state politics from years within the direct action climate movement, I still held the ability to opt out of resistance --- and the resulting state violence --- more often than not.
|
||||
> Of course it's in the interests of the state for me to believe that the state is on my side. And to an extend, it will be, in its divide and conquer strategies to secure my compliance at the expense of others. By offering some people legitimate forms of 'resistance' within capitalism, while criminalising the existence of those who don't fit within certain parameters, the state invites us to throw other struggles under the bus.
|
||||
> But a freedom that is based on the oppression of others isn't truly freedom. This is why countless revolutionaries, from the Zapatistas to Audre Lorde, have argued that a crucial step towards collective liberation is recognising that our struggles are linked. The challenge we face is to find ways to wage resistance --- both in acts of collective self defence, and inside out own heads. If we don't get rid of the state inside our heads, we'll lose sight of how interconnected our fights are, and we'll sell each other out.
|
||||
>> Natalia, "Trusting: The State Within Us" (ch 7, p 105)
|
||||
|
||||
> During my time in Rojava, I was pushed by revolutionaries within the movement to ask myself lots of questions that I wasn't sure I knew --- or watned to know --- the answers to. Deep down, do I believe that a state is an inevitability? Do I think that what I'm fighting for is possible? Has the idea of a state become so entrenched in my mind that however militant the tactics I use are, I am simply lobbying the state in more confrontational ways that a petition? If I truly believed that our communities and social movements, and not the state, are the key to radical social change, what political work would I be doing? If I really believed that we could win, how would I be living my life differently? Do I moderate my resistance to forms that still allow me to successfully navigate life under capitalism?
|
||||
>> ibid (p 108)
|
||||
|
||||
> In the days before the start of the eduction term, internationalist volunteers from all over the world who were going to participate assembled at our project. Although we were predominantly white Europeans in their 20s, there were also folkd from Latin America, North America and the Middle East. Some internationalists came to Rojava in their late teens, others in their 30s (like myself) or even their 40s and 50s. Our stories of how we got here varied as well --- some of us seasoned political organisers, some having no background in activism at all but feeling compelled to go after hearing about Rojava on the news, or YouTube. We were all shaped by the positions of privilege and marginalisation we held through gender, class, race, sexual orientation, neurodivergence, and the countless other ways we experience life. We came from anarchist, communist, feminist and ecological struggles, and sometimes felt like the differences in our political perspectives and life experiences outweighed what we had in common. But what we did have in common was that we were all asking questions, and the search for the answers had taken us to Rojava.
|
||||
>> Natalia, "Surviving: Conflict, Collective Care, Critique" (ch 11, p 162)
|
||||
|
||||
> Liberalism is capitalism's secret weapon. It goes deep, deep inside; especially for some of us.
|
||||
> ...Work is work. Compartmentalise. Separate. Just do your job. Yes, I needed the money to live. But how far does that take you? There's no end to the horros that his attitude can make normal people a part of, from prisons to battery farms to government administration. I'm not blaming individual people, I'm saying that without the double think liberalism allows for, the system couldn't function.
|
||||
>> Jenni, "Reshaping: Unlearning the System, Learning to Be Us" (ch 12, p 175)
|
||||
|
||||
> Before we said goodbye we took photos together on the side of the road, arms full of olive cuttings that told the story of a revolution that has the patience to plant trees.
|
||||
>> Natalia, "Seeds: Getting Our Hands Dirty" (ch 13, p 191)
|
||||
|
||||
> It's no use pretending that it's not a huge and daunting task, but speaking for myself, I have found a lot more hope in taking incremental steps towards changing everything than huge leaps towards changing nothing.
|
||||
>> ibid (p 195)
|
||||
|
||||
> We all have the system inside us. To be a revolutionary is to promise to never stop learning, never stop looking at yourself. Education is the safety net, the engine and the grease that makes this possible.
|
||||
>> Jenni, "Knowing: How We Think Makes Us Who We Are" (ch 14, p 204)
|
||||
|
||||
> People know we are not free, we know there's a problem. We can sense it clear as day, and so we strike out blindly to try and grab it, not sure what we're chasing or how to get it but sure that it matters, that there's a part of us missing. Rather than clunkily try and crush this, as some socialist states have a history of, capitalist culture sells us a forgery. It dangles a fake for us to chase, to fool ourselves into thinking we're becoming free. A pre-mapped road to get those feelings out of our system. What we're doing is nailing our own coffin.
|
||||
> So there I was, just like millions of young people in wealthy parts of the world: free to buy whatever I wanted (if I could afford it), say whatever I wanted (as long as I didn't act on it), wear whatever I wanted (up to the point it was 'asking for it'). We are free to go wherever we want (if we have the right papers, be that a passport or a vaccine certificate). We're free to sell ourselves and others over and over again, and free to spend what we get on something to numb the pain. We're even free to rebel, as long as that involved buying something, Che Guevara's face on a t-shirt perhaps, or individual self expression that ends up little more than fashion.
|
||||
>> Jenni, "Free: The Road to Liberation" (ch 15, pp 214--5)
|
||||
|
||||
> One afternoon we go with a local friend to visit his sister in one of the luxury high rises on the outskirts of the city. The day is grey and wet, and as the car drives up the hills and into the gated complex we can see the city spread below us, colours muted under the filtered light, sounds smothered by the low-hanging sky. We step into the lift, wet from the rain, and are faced with the bleak uniformity of modern living. What used to be so familiar --- an apartment block offering housing, but no community --- now feels foreign and uncomfortable. In the lift we read the printed rules for the building. How to use your kitchen, where to put your shoes, how to clean your balcony. It feels almost comical, like we've stepped into another world, so far from the gleaming porches of concrete houses across Rojava, meticulously swept and washed clean from the endless dust, even though there isn't a noticeboard telling anyone to do it. But in the margins of the rules [we] notice someone had scribbled the letters --- 'YPJ! YPG!' --- with a ballpoint pen, a small rebellion, or perhaps just a reminder that this, too, is Kurdistan. Inconsequential though it was, it's a scrap of familiarity in the oppressive anonymity of this building, and it soothes something inside me...
|
||||
> ...We drink water poure dfrom a cut crystal bottle. Everything is sterile --- clean in a way which comes from catalogues and money, not from scrubbing and bleach-chapped hands. Gucci and Chanel design books perch artistically next to the television, carefully curated to invoke wanting...
|
||||
> ...As if to throw the European aesthetics of the apartment into stark relief, our host's mother sits in an armchair, dignified and silent, timeless in the midst of this cream coloured modernity. She is jarringly out of place, shrouded in black robes, traditional face tattoos blue against her wrinkled skin. She does not smile. I wonder what it's like for the mothers, seeing their children leave home in search of something better --- safety, opportunity, success --- and come back having learned how to invite people to stay for dinner without really meaning it, having learned how to bring their loneliness inside themselves so that they are alone even in a room full of people...
|
||||
> ...Back in Europe, I wake up alone in the house, in a village full of people I don't know. I make a pot of tea and breakfast for myself. There is a certain comfort, a quietness that suits me. All day long my body is charged with electricity --- sparks flash every time I touch metal and the smell of smoke from the wood burner lingers on my hands and settles around my shoulders. I sit at my father's desk wrapped in his woollen sweater, and try to remember all of the things I feel sure need to be written down before they slip away...
|
||||
> ...This was the first time I had spent the night alone in a room --- let alone a whole house --- in over a year, a year that felt much longer. I year can be a lifetime, as we are reminded each time we look back on one. My feelings are complicated and all tangled up in my chest --- the immense and miniscule all crowded together...
|
||||
> ...I have never felt so foreign in a place I consider my home. When I first arrived in England --- 18 years old and out of place --- it was a bit like moving through a darkened room, an awkward shuffling across unknown territory, groping in the dark to find my way. But coming back from Rojava is like entering a familiar room and reaching for the light switch only to find out that it has inexplicably moved across the room; rolling out of bed in the morning and bumping into a wall where I thought there would be a door.
|
||||
>> Natalia, "Returning: Coming Home" (ch 16, pp 224--8)
|
||||
|
||||
> I struggle to imagine what I want my life to look like, whether to start making decisions while I still have the clarity and strength of purpose from having just arrived, or whether I need some time to readjust to being back home so I can make wiser decisions. Suddenly wise seems like something that isn't so clear any more. Wise used to mean nuanced, balanced, considered. Wise meant not going too far or too fast, meant having a safety net of some kind. Now wise feels more wild. It feels like throwing yourself into the struggle and rejecting compromise. It means knowing that the resistance we are waging now is more important than our ability to grow old in good health. It means believing in something hard enough so that it drives you through the hardest times. It means trusting that we are on the right path, even if there is no rational way of measuring whether this is true or not.
|
||||
>> ibid (p 228)
|
||||
|
||||
> In the world of sustainable gardening, there's a saying: 'cultivate the edges and value the margins'. It refers to the idea that the most diverse, dynamic and fruitful part of an ecosystem is along its edges, where it encounters another ecosystem. Like tidal pools teeming with life where the edge of the ocean meets the shore. Or the edge of a forest where different species of plant and animal can benefit from both the trees and the open space beyond them. I would say that in our human communities and socical movements this holds true as well. Perhaps this edge space --- one foot in Rojava, one foot in England --- is the most dynamic and rich with possibility. When we see that multiple worlds exist we understand clearly how we can shape them ourselves. But how do we live in the edge space without losing our balance, without suffering from isolation and alienation?
|
||||
>> ibid (p 229)
|
||||
|
||||
> Tomorrow doesn't grow in the spotlight. It is nurtured, cared for, and born in the unobserved shadows during the early morning, when the night just begins to cede ground.
|
||||
>> Zapatista communiqué, quoted in Jenni & Natalia, "Tomorrow: Hope" (ch 17, p 237)
|
||||
|
||||
> Late at night, a handful of internationalist volunteers hunch over computers next to coffee cups long since emptied and turned into ash trays, occasionally making a futile effort to roll cricks out of our necks. We're translating interviews with YPG fighters and local politicians, sending emails about human rights violations to institutions who are programmed not to care, trying to learn how to use video editing software from YouTube tutorials. There's a critical mass of English and Scottish volunteers in the room, and that means (along with a bit more swearing and occasionally upsetting Kurdish comrades by putting milk in the tea), we are basically talking as though everything we're doing is pointless. We fuel ourselves with sarcasm and self deprecation, expecting bad news before we even hear it. Yet, we all keep on working, as hard as anyone. When someone stars to flag, more tea, coffee, cigarettes and a shoulder rub go without saying. If someone expresses that they really can't go on any more, that they've lost all faith, we pull them back. Probably not by mentioning the big picture (the one that actually makes all our efforts make sense) but mroe likely with a joke. Maybe the black humour and cynicism we've cultivated are a sort of Trojan Horse for hope. We make light of things so that we can keep going, so that we can appear cynical but somehow still be there from dawn until the depths of night. Maybe it's what we've needed to shelter the little flame of hope long enough to get us through hard years, get us where we are right now, thousands of miles from home, in the middle of a revolution.
|
||||
> But I'm starting to think it's only going to get us so far. We have to use that flame, we have to relight the fire. And now that we're here in North and East Syria our cynicism suddenly looks different. Earlier that day I was out of the office, in a family's home. It's much harder to be jaded when you're looking the kids from the region in the eye, effectively acting like they have no future. And when certain other comrades join us at the desks, and the language switches to Kurdish, we drop a lot of the attitude along with the English language. These people have lost all their old friends and comrades, been tortured and wounded, and are still fighting like we can win. Now it's cynicism that starts to feel embarassing, nothope. I tough thte tattoo on my neck that I got in memory of Anna, look at the pictures of other <i lang="ku-kmr">şehîds</i> lining the walls, and stop myself the next time I go to add a self-effacing eye-roll onto the world 'revolution'. Our fallen comrades didn't fall for nihilism.
|
||||
>> Jenni, ibid (pp 242--3)
|
|
@ -1,7 +1,58 @@
|
|||
[
|
||||
{
|
||||
"Title": "Worth Fighting For: Bringing the Rojava Revolution Home",
|
||||
"Author": "Jenni Kneasded and Natalia Szarek",
|
||||
"Date Added": "2023-12-14"
|
||||
"Title": "Good-Bye to All That: An Autobiography",
|
||||
"Author": "Robert Graves",
|
||||
"ISBN": null,
|
||||
"ISBN13": null,
|
||||
"Publisher": "Anchor Books",
|
||||
"Binding": "Paperback",
|
||||
"Number of Pages": 347,
|
||||
"Year Published": "1958",
|
||||
"Original Publication Year": "1929",
|
||||
"Date Added": "2013-05-07",
|
||||
"Date Started": "2024-01-01",
|
||||
"Read Count": 0
|
||||
},
|
||||
{
|
||||
"Title": "The End of Policing",
|
||||
"Author": "Alex S. Vitale",
|
||||
"ISBN": null,
|
||||
"ISBN13": null,
|
||||
"Publisher": "Verso",
|
||||
"Binding": "Kindle Edition",
|
||||
"Number of Pages": 272,
|
||||
"Year Published": "2017",
|
||||
"Original Publication Year": "2017",
|
||||
"Date Added": "2020-06-05",
|
||||
"Date Started": "2024-01-01",
|
||||
"Read Count": 0
|
||||
},
|
||||
{
|
||||
"Title": "France",
|
||||
"Series": "Lonely Planet",
|
||||
"Author": "Lonely Planet",
|
||||
"ISBN13": "9781788680513",
|
||||
"Publisher": "Lonely Planet Global Limited",
|
||||
"Binding": "Paperback",
|
||||
"Number of Pages": 1021,
|
||||
"Year Published": "2021",
|
||||
"Original Publication Year": "1994",
|
||||
"Date Added": "2024-01-02",
|
||||
"Date Started": "2023-12-25",
|
||||
"Read Count": 0
|
||||
},
|
||||
{
|
||||
"Title": "The Design of Everyday Things",
|
||||
"Author": "Donald A. Norman",
|
||||
"ISBN": "0465067107",
|
||||
"ISBN13": "9780465067107",
|
||||
"Publisher": "Basic Books",
|
||||
"Binding": "Paperback",
|
||||
"Number of Pages": 240,
|
||||
"Year Published": "2002",
|
||||
"Original Publication Year": "1988",
|
||||
"Date Added": "2021-12-01",
|
||||
"Date Started": "2023-12-24",
|
||||
"Read Count": 0
|
||||
}
|
||||
]
|
||||
|
|
|
@ -1,4 +1,31 @@
|
|||
[
|
||||
{
|
||||
"Title": "Montpellier",
|
||||
"Author": "Jean du Boiseberranger",
|
||||
"Additional Authors": "Marie Susplugas and Tess Campbell",
|
||||
"Edition": "Fifth",
|
||||
"Date Added": "2024-01-06",
|
||||
"Binding": "Paperback",
|
||||
"Date Started": "2024-01-06",
|
||||
"Date Finished": "2024-01-06",
|
||||
"ISBN13": "9782375910566",
|
||||
"Publisher": "Alcide",
|
||||
"Read Count": 1,
|
||||
"Year Published": "2020",
|
||||
"Original Publication Year": "2008"
|
||||
},
|
||||
{
|
||||
"Title": "Worth Fighting For: Bringing the Rojava Revolution Home",
|
||||
"Author": "Jenni Keasden and Natalia Szarek",
|
||||
"Date Added": "2023-12-14",
|
||||
"Binding": "Paperback",
|
||||
"Date Started": "2023-12-20",
|
||||
"Date Finished": "2023-12-24",
|
||||
"ISBN13": "9781914567216",
|
||||
"Publisher": "Active Distribution",
|
||||
"Read Count": 1,
|
||||
"Year Published": "2023"
|
||||
},
|
||||
{
|
||||
"Additional Authors": "Aleida Guevara March",
|
||||
"Author": "Ernesto “Che” Guevara",
|
||||
|
|
|
@ -1,4 +1,20 @@
|
|||
[
|
||||
{
|
||||
"Title": "Flying Blind: The 737 MAX Tragedy and the Fall of Boeing",
|
||||
"Author": "Peter Robison",
|
||||
"Date Added": "2024-01-06"
|
||||
},
|
||||
{
|
||||
"Title": "The Anti-Politics Machine: Development, Depoliticization, and Bureaucratic Power in Lesotho",
|
||||
"Author": "James Ferguson",
|
||||
"Date Added": "2024-01-06"
|
||||
},
|
||||
{
|
||||
"Title": "Not Too Late: Changing the Climate Story from Despair to Possibility",
|
||||
"Author": "Rebeca Solnit and Thelma Young Lutunatabua",
|
||||
"Date Added": "2024-01-06",
|
||||
"ISBN13": "9781642598971"
|
||||
},
|
||||
{
|
||||
"Title": "Cloudmoney: Why the War on Cash Endangers Our Freedom",
|
||||
"Author": "Brett Scott",
|
||||
|
@ -1479,19 +1495,6 @@
|
|||
"Date Added": "2021-12-01",
|
||||
"Read Count": 0
|
||||
},
|
||||
{
|
||||
"Title": "The Design of Everyday Things",
|
||||
"Author": "Donald A. Norman",
|
||||
"ISBN": "0465067107",
|
||||
"ISBN13": "9780465067107",
|
||||
"Publisher": "Basic Books",
|
||||
"Binding": "Paperback",
|
||||
"Number of Pages": 240,
|
||||
"Year Published": "2002",
|
||||
"Original Publication Year": "1988",
|
||||
"Date Added": "2021-12-01",
|
||||
"Read Count": 0
|
||||
},
|
||||
{
|
||||
"Title": "Every Cradle is a Grave: Rethinking the Ethics of Birth and Suicide",
|
||||
"Author": "Sarah Perry",
|
||||
|
@ -5297,19 +5300,6 @@
|
|||
"Date Added": "2020-06-06",
|
||||
"Read Count": 0
|
||||
},
|
||||
{
|
||||
"Title": "The End of Policing",
|
||||
"Author": "Alex S. Vitale",
|
||||
"ISBN": null,
|
||||
"ISBN13": null,
|
||||
"Publisher": "Verso",
|
||||
"Binding": "Kindle Edition",
|
||||
"Number of Pages": 272,
|
||||
"Year Published": "2017",
|
||||
"Original Publication Year": "2017",
|
||||
"Date Added": "2020-06-05",
|
||||
"Read Count": 0
|
||||
},
|
||||
{
|
||||
"Title": "The Meaning of Relativity",
|
||||
"Author": "Albert Einstein",
|
||||
|
@ -42045,19 +42035,6 @@
|
|||
"Date Added": "2013-05-07",
|
||||
"Read Count": 0
|
||||
},
|
||||
{
|
||||
"Title": "Good-Bye to All That: An Autobiography",
|
||||
"Author": "Robert Graves",
|
||||
"ISBN": null,
|
||||
"ISBN13": null,
|
||||
"Publisher": "Anchor Books",
|
||||
"Binding": "Paperback",
|
||||
"Number of Pages": 347,
|
||||
"Year Published": "1958",
|
||||
"Original Publication Year": "1929",
|
||||
"Date Added": "2013-05-07",
|
||||
"Read Count": 0
|
||||
},
|
||||
{
|
||||
"Title": "Stalingrad: The Fateful Siege, 1942–1943",
|
||||
"Author": "Antony Beevor",
|
||||
|
|
28292
data/films/log.json
28292
data/films/log.json
File diff suppressed because it is too large
Load diff
43643
data/films/wishlist.json
43643
data/films/wishlist.json
File diff suppressed because it is too large
Load diff
|
@ -1,4 +1,19 @@
|
|||
[
|
||||
{
|
||||
"Title": "Cacho Alalay",
|
||||
"Platform": "Board",
|
||||
"Date Started": "2024-01-06",
|
||||
"Date Finished": "2024-01-06"
|
||||
},
|
||||
{
|
||||
"Title": "Cheating Moth",
|
||||
"Developers": "Emely Brand and Lukas Brand",
|
||||
"Platform": "Board",
|
||||
"BBG ID": "105593",
|
||||
"Date Released": "2011",
|
||||
"Date Started": "2024-01-06",
|
||||
"Date Finished": "2024-01-06"
|
||||
},
|
||||
{
|
||||
"Title": "Kingdom Come: Deliverance",
|
||||
"Date Started": "2023-10-14",
|
||||
|
|
|
@ -1,4 +1,88 @@
|
|||
[
|
||||
{
|
||||
"Show Title": "Nazis: A Warning from History"
|
||||
},
|
||||
{
|
||||
"Show Title": "All Watched Over By Machines of Loving Grace"
|
||||
},
|
||||
{
|
||||
"Show Title": "The Trap: What Happend to Our Dream of Freedom"
|
||||
},
|
||||
{
|
||||
"Show Title": "The Corner (2000"
|
||||
},
|
||||
{
|
||||
"Show Title": "When the Levees Broke: A Requiem in Four Acts (2006)"
|
||||
},
|
||||
{
|
||||
"Show Title": "The National Parks: America's Best Idea"
|
||||
},
|
||||
{
|
||||
"Show Title": "On Death Row"
|
||||
},
|
||||
{
|
||||
"Show Title": "Heimat"
|
||||
},
|
||||
{
|
||||
"Show Title": "Heimat II"
|
||||
},
|
||||
{
|
||||
"Show Title": "V (1983)"
|
||||
},
|
||||
{
|
||||
"Show Title": "V: The Final Battle"
|
||||
},
|
||||
{
|
||||
"Show Title": "Dunkirk (2004)"
|
||||
},
|
||||
{
|
||||
"Show Title": "Walking with Dinosaurs: The Ballad of Big Al"
|
||||
},
|
||||
{
|
||||
"Show Title": "Chased by Dinosaurs"
|
||||
},
|
||||
{
|
||||
"Show Title": "I Love Alaska"
|
||||
},
|
||||
{
|
||||
"Show Title": "Nerds 2.0.1: A Brief History of the Internet"
|
||||
},
|
||||
{
|
||||
"Show Title": "World on a Wire"
|
||||
},
|
||||
{
|
||||
"Show Title": "Prohibition (2011)"
|
||||
},
|
||||
{
|
||||
"Show Title": "The Dust Bowl"
|
||||
},
|
||||
{
|
||||
"Show Title": "The Story of Film: An Odyssey"
|
||||
},
|
||||
{
|
||||
"Show Title": "It (1990)"
|
||||
},
|
||||
{
|
||||
"Show Title": "Life with Judy Garland: Me and My Shadows"
|
||||
},
|
||||
{
|
||||
"Show Title": "BBS: The Documentary"
|
||||
},
|
||||
{
|
||||
"Show Title": "Louis Theroux: Miami Mega Jail"
|
||||
},
|
||||
{
|
||||
"Show Title": "The Power of Nightmares: The Rise of the Politics of Fear"
|
||||
},
|
||||
{
|
||||
"Show Title": "Pandora's Box: A Fable from the Age of Science"
|
||||
},
|
||||
{
|
||||
"Show Title": "Century of the Self"
|
||||
},
|
||||
{
|
||||
"Show Title": "Scavengers Reign"
|
||||
},
|
||||
{
|
||||
"Show Title": "Once Upon a Time in Northern Ireland"
|
||||
},
|
||||
|
|
|
@ -1,4 +1,11 @@
|
|||
[
|
||||
{
|
||||
"Series Title": "It's Always Sunny in Philadelphia",
|
||||
"Episode Title": "Dennis Takes a Mental Health Day",
|
||||
"Episode Number": "S16E08",
|
||||
"Date Watched": "2024-01-01",
|
||||
"Rewatch": true
|
||||
},
|
||||
{
|
||||
"Series Title": "It's Always Sunny in Philadelphia",
|
||||
"Episode Title": "Dennis Takes a Mental Health Day",
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
<tr>
|
||||
<td colspan=4><h3>Diary</h3></td>
|
||||
</tr>
|
||||
{{ range ( sort ( where $.Site.Data.films.log "Date Watched" "!=" "" ) "Date Watched" "desc" ) }}
|
||||
{{ range ( sort ( where $.Site.Data.films.log "date_watched" "!=" "" ) "date_watched" "desc" ) }}
|
||||
<tr>
|
||||
<td>{{ time.Format "Jan 2, 2006" ( index . "Date Added" ) }}</td>
|
||||
<td>{{ with .date_added }}{{ time.Format "Jan 2, 2006" . }}{{ end }}</td>
|
||||
<td>
|
||||
{{- partial "cite" ( dict "c" . "schemaType" "Movie" ) -}}
|
||||
{{ .title }}
|
||||
</td>
|
||||
<td>{{ index . "Release Year" }}</td>
|
||||
<td>{{ with .release_date }}{{ time.Format "Jan 2, 2006" . }}{{ end }}</td>
|
||||
<td>
|
||||
{{- if ( index . "Date Watched" ) -}}
|
||||
{{- time.Format "Jan 2, 2006" ( index . "Date Watched" ) -}}
|
||||
{{- if .Rewatch }} ↻{{ end -}}
|
||||
{{- if .date_watched -}}
|
||||
{{- time.Format "Jan 2, 2006" .date_watched -}}
|
||||
{{- if .is_rewatch }} ↻{{ end -}}
|
||||
{{- else -}}
|
||||
n/a
|
||||
{{- end -}}
|
||||
|
@ -22,25 +22,25 @@
|
|||
<tr>
|
||||
<td colspan=4><h3>Assorted</h3></td>
|
||||
</tr>
|
||||
{{ range ( sort ( where $.Site.Data.films.log "Date Watched" "" ) "Title" "asc" ) }}
|
||||
{{ range ( sort ( where $.Site.Data.films.log "date_watched" "" ) "title" "asc" ) }}
|
||||
<tr>
|
||||
<td>{{ time.Format "Jan 2, 2006" ( index . "Date Added" ) }}</td>
|
||||
<td>{{ with .date_added }}{{ time.Format "Jan 2, 2006" . }}{{ end }}</td>
|
||||
<td>
|
||||
{{- with ( where ( where $.Site.Pages "Section" "films" ) "Title" .Title ) -}}
|
||||
{{- with ( where ( where $.Site.Pages "Section" "films" ) "title" .title ) -}}
|
||||
{{ range . }}
|
||||
<a href="{{ .RelPermalink }}">
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
<cite class="film">{{ .Title }}</cite>
|
||||
{{- with ( where ( where $.Site.Pages "Section" "films" ) "Title" .Title ) -}}
|
||||
<cite class="film">{{ .title }}</cite>
|
||||
{{- with ( where ( where $.Site.Pages "Section" "films" ) "title" .title ) -}}
|
||||
</a>
|
||||
{{- end -}}
|
||||
</td>
|
||||
<td>{{ index . "Release Year" }}</td>
|
||||
<td>{{ with .release_date }}{{ time.Format "Jan 2, 2006" . }}{{ end }}</td>
|
||||
<td>
|
||||
{{- if ( index . "Date Watched" ) -}}
|
||||
{{- time.Format "Jan 2, 2006" ( index . "Date Watched" ) -}}
|
||||
{{- if .Rewatch }} ↻{{ end -}}
|
||||
{{- if .date_watched -}}
|
||||
{{- time.Format "Jan 2, 2006" .date_watched -}}
|
||||
{{- if .is_rewatch }} ↻{{ end -}}
|
||||
{{- else -}}
|
||||
n/a
|
||||
{{- end -}}
|
||||
|
@ -48,25 +48,25 @@
|
|||
</tr>
|
||||
{{ end }}
|
||||
{{ else if ( eq ( .Scratch.Get "listMode" ) "wishlist" ) }}
|
||||
{{ range ( sort $.Site.Data.films.wishlist "Title" "asc" ) }}
|
||||
{{ range ( sort $.Site.Data.films.wishlist "title" "asc" ) }}
|
||||
<tr>
|
||||
<td>{{ time.Format "Jan 2, 2006" ( index . "Date Added" ) }}</td>
|
||||
<td>{{ with .date_added }}{{ time.Format "Jan 2, 2006" . }}{{ end }}</td>
|
||||
<td>
|
||||
{{- with ( where ( where $.Site.Pages "Section" "films" ) "Title" .Title ) -}}
|
||||
{{- with ( where ( where $.Site.Pages "Section" "films" ) "title" .title ) -}}
|
||||
{{ range . }}
|
||||
<a href="{{ .RelPermalink }}">
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
<cite class="film">{{ .Title }}</cite>
|
||||
{{- with ( where ( where $.Site.Pages "Section" "films" ) "Title" .Title ) -}}
|
||||
<cite class="film">{{ .title }}</cite>
|
||||
{{- with ( where ( where $.Site.Pages "Section" "films" ) "title" .title ) -}}
|
||||
</a>
|
||||
{{- end -}}
|
||||
</td>
|
||||
<td>{{ index . "Release Year" }}</td>
|
||||
<td>{{ with .release_date }}{{ time.Format "Jan 2, 2006" . }}{{ end }}</td>
|
||||
<td>
|
||||
{{- if ( index . "Date Watched" ) -}}
|
||||
{{- time.Format "Jan 2, 2006" ( index . "Date Watched" ) -}}
|
||||
{{- if .Rewatch }} ↻{{ end -}}
|
||||
{{- if .date_watched -}}
|
||||
{{- time.Format "Jan 2, 2006" .date_watched -}}
|
||||
{{- if .is_rewatch }} ↻{{ end -}}
|
||||
{{- else -}}
|
||||
n/a
|
||||
{{- end -}}
|
||||
|
|
142
scripts/process_film_logs.py
Normal file
142
scripts/process_film_logs.py
Normal file
|
@ -0,0 +1,142 @@
|
|||
import json
|
||||
import logging
|
||||
import requests
|
||||
import time
|
||||
from urllib.request import urlopen
|
||||
|
||||
def process_items(items):
|
||||
logging.info("Processing items…")
|
||||
item_values = {}
|
||||
|
||||
for i, item in enumerate(items):
|
||||
if 'id' not in item:
|
||||
if 'Date Added' in item:
|
||||
item_values['date_added'] = item['Date Added']
|
||||
del item['Date Added']
|
||||
if 'Date Watched' in item:
|
||||
item_values['date_watched'] = item['Date Watched']
|
||||
del item['Date Watched']
|
||||
if 'Rewatch' in item:
|
||||
item_values['is_rewatch'] = item['Rewatch']
|
||||
del item['Rewatch']
|
||||
if 'Comments' in item:
|
||||
item_values['comments'] = item['Comments']
|
||||
del item['Comments']
|
||||
|
||||
if 'IMDB ID' in item:
|
||||
items[i] = populate_from_id(item)
|
||||
else:
|
||||
items[i] = populate_from_details(item)
|
||||
|
||||
items[i] |= item_values
|
||||
|
||||
with open("../data/films/wishlist.json", "w") as films_log:
|
||||
json.dump(items, films_log, indent=4)
|
||||
|
||||
logging.info("Finished processing items")
|
||||
|
||||
|
||||
def populate_from_details(item):
|
||||
logging.info(f"Processing {item['Title']}…")
|
||||
|
||||
api_url = f"https://api.themoviedb.org/3/search/movie"
|
||||
|
||||
# Sending API request
|
||||
response = requests.get(
|
||||
api_url,
|
||||
params={
|
||||
'query': item['Title'],
|
||||
'include_adult': True,
|
||||
'year': item['Release Year']
|
||||
},
|
||||
headers={'Authorization': 'Bearer eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiI1NWQ2ZjY3YzJlOTQwMDI1NTFmN2VkNmEyZWVjM2E3NyIsInN1YiI6IjUxNWMyNzkxMTljMjk1MTQ0ZDAzZDM0NCIsInNjb3BlcyI6WyJhcGlfcmVhZCJdLCJ2ZXJzaW9uIjoxfQ.92eNKubJ_CORCIIlta30P9Qjg_Q9gPRFDTfG4gyz9kY'}
|
||||
)
|
||||
|
||||
# Process the response
|
||||
if (200 == response.status_code):
|
||||
logging.info(response.status_code)
|
||||
elif (429 == response.status_code):
|
||||
time.sleep(2)
|
||||
populate_from_details(item)
|
||||
else:
|
||||
logging.error(response.text)
|
||||
|
||||
response_data = json.loads(response.text)
|
||||
|
||||
if 1 == len(response_data['results']):
|
||||
film = response_data['results'][0]
|
||||
return cleanup_film(film)
|
||||
elif 0 == len(response_data['results']):
|
||||
logging.warning(f"Returned no results for {item['Title']} ({item['Release Year']})")
|
||||
elif 1 < len(response_data['results']):
|
||||
response_data['results'] = [film for film in response_data['results'] if film['title'] == item['Title']]
|
||||
if 1 < len(response_data['results']):
|
||||
logging.warning(f"Returned more than one film for {item['Title']} ({item['Release Year']})")
|
||||
|
||||
item['IMDB ID'] = input(f"Enter IMDB ID for {item['Title']} ({item['Release Year']}):")
|
||||
|
||||
if item['IMDB ID'] != '':
|
||||
return populate_from_id(item)
|
||||
else:
|
||||
logging.warning(f"Skipped {item['Title']} ({item['Release Year']})")
|
||||
return item
|
||||
|
||||
|
||||
def populate_from_id(item):
|
||||
logging.info(f"Processing ID {item['IMDB ID']} ({item['Title']})…")
|
||||
|
||||
api_url = f"https://api.themoviedb.org/3/find/{item['IMDB ID']}"
|
||||
|
||||
# Sending API request
|
||||
response = requests.get(
|
||||
api_url,
|
||||
params={
|
||||
'external_source': 'imdb_id'
|
||||
},
|
||||
headers={'Authorization': 'Bearer eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiI1NWQ2ZjY3YzJlOTQwMDI1NTFmN2VkNmEyZWVjM2E3NyIsInN1YiI6IjUxNWMyNzkxMTljMjk1MTQ0ZDAzZDM0NCIsInNjb3BlcyI6WyJhcGlfcmVhZCJdLCJ2ZXJzaW9uIjoxfQ.92eNKubJ_CORCIIlta30P9Qjg_Q9gPRFDTfG4gyz9kY'}
|
||||
)
|
||||
|
||||
# Process the response
|
||||
if (200 == response.status_code):
|
||||
logging.info(response.status_code)
|
||||
elif (429 == response.status_code):
|
||||
time.sleep(2)
|
||||
populate_from_id(item)
|
||||
else:
|
||||
logging.error(response.text)
|
||||
|
||||
response_data = json.loads(response.text)
|
||||
if len(response_data['movie_results']) > 1:
|
||||
logging.warning(f"Returned more than one film for ID {item['IMDB ID']}")
|
||||
return item
|
||||
|
||||
if len(response_data['movie_results']) > 0:
|
||||
film = response_data['movie_results'][0]
|
||||
return cleanup_film(film)
|
||||
else:
|
||||
logging.warning(f"Returning no results for {item['Title']}")
|
||||
return item
|
||||
|
||||
return cleanup_film(film)
|
||||
|
||||
|
||||
def cleanup_film(film):
|
||||
del film['adult'], film['backdrop_path'], film['genre_ids'], film['popularity'], film['video'], film['vote_average'], film['vote_count']
|
||||
|
||||
if 'media_type' in film: del film['media_type']
|
||||
|
||||
if film['original_title'] == film['title'] and film['original_language'] == 'en':
|
||||
del film['original_title'], film['original_language']
|
||||
|
||||
film['poster_path'] = f"https://www.themoviedb.org/t/p/original/{film['poster_path']}"
|
||||
|
||||
return film
|
||||
|
||||
|
||||
logging.basicConfig(filename='run.log', encoding='utf-8', level=logging.DEBUG)
|
||||
|
||||
with open("../data/films/wishlist.json", "r") as films_log:
|
||||
films = json.load(films_log)
|
||||
|
||||
process_items(films)
|
||||
|
147
scripts/run.log
Normal file
147
scripts/run.log
Normal file
|
@ -0,0 +1,147 @@
|
|||
INFO:root:Processing items…
|
||||
INFO:root:Processing ID tt4053592 (How Not to Make a Movie)…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/find/tt4053592?external_source=imdb_id HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
WARNING:root:Returning no results for How Not to Make a Movie
|
||||
INFO:root:Processing ID (Hated: GG Allin & The Murder Junkies)…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/find/?external_source=imdb_id HTTP/1.1" 404 None
|
||||
ERROR:root:{"success":false,"status_code":34,"status_message":"The resource you requested could not be found."}
|
||||
INFO:root:Processing items…
|
||||
INFO:root:Processing ID tt4053592 (How Not to Make a Movie)…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/find/tt4053592?external_source=imdb_id HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
WARNING:root:Returning no results for How Not to Make a Movie
|
||||
INFO:root:Processing ID (Hated: GG Allin & The Murder Junkies)…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/find/?external_source=imdb_id HTTP/1.1" 404 None
|
||||
ERROR:root:{"success":false,"status_code":34,"status_message":"The resource you requested could not be found."}
|
||||
INFO:root:Processing items…
|
||||
INFO:root:Processing ID tt4053592 (How Not to Make a Movie)…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/find/tt4053592?external_source=imdb_id HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
WARNING:root:Returning no results for How Not to Make a Movie
|
||||
INFO:root:Processing Hated: GG Allin & The Murder Junkies…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/search/movie?query=Hated%3A+GG+Allin+%26+The+Murder+Junkies&include_adult=True&year=1994 HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
WARNING:root:Returned no results for Hated: GG Allin & The Murder Junkies (1994)
|
||||
INFO:root:Processing ID tt0107086 (Hated: GG Allin & The Murder Junkies)…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/find/tt0107086?external_source=imdb_id HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
INFO:root:Processing ID tt0065908 (Jak rozpętałem drugą wojnę światową)…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/find/tt0065908?external_source=imdb_id HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
WARNING:root:Returning no results for Jak rozpętałem drugą wojnę światową
|
||||
INFO:root:Processing Martin…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/search/movie?query=Martin&include_adult=True&year=1976 HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
INFO:root:Processing ID tt0077914 (Martin)…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/find/tt0077914?external_source=imdb_id HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
INFO:root:Processing ID (Safe House)…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/find/?external_source=imdb_id HTTP/1.1" 404 None
|
||||
ERROR:root:{"success":false,"status_code":34,"status_message":"The resource you requested could not be found."}
|
||||
INFO:root:Processing items…
|
||||
INFO:root:Processing ID tt4053592 (How Not to Make a Movie)…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/find/tt4053592?external_source=imdb_id HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
WARNING:root:Returning no results for How Not to Make a Movie
|
||||
INFO:root:Processing Hated: GG Allin & The Murder Junkies…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/search/movie?query=Hated%3A+GG+Allin+%26+The+Murder+Junkies&include_adult=True&year=1994 HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
WARNING:root:Returned no results for Hated: GG Allin & The Murder Junkies (1994)
|
||||
INFO:root:Processing ID tt0107086 (Hated: GG Allin & The Murder Junkies)…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/find/tt0107086?external_source=imdb_id HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
INFO:root:Processing ID tt0065908 (Jak rozpętałem drugą wojnę światową)…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/find/tt0065908?external_source=imdb_id HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
WARNING:root:Returning no results for Jak rozpętałem drugą wojnę światową
|
||||
INFO:root:Processing Martin…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/search/movie?query=Martin&include_adult=True&year=1976 HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
INFO:root:Processing ID tt0077914 (Martin)…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/find/tt0077914?external_source=imdb_id HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
INFO:root:Processing Safe House…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/search/movie?query=Safe+House&include_adult=True&year=2012 HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
WARNING:root:Returned more than one film for Safe House (2012)
|
||||
WARNING:root:Skipped Safe House (2012)
|
||||
INFO:root:Finished processing items
|
||||
INFO:root:Processing items…
|
||||
INFO:root:Processing ID tt4053592 (How Not to Make a Movie)…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/find/tt4053592?external_source=imdb_id HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
WARNING:root:Returning no results for How Not to Make a Movie
|
||||
INFO:root:Processing ID tt0065908 (Jak rozpętałem drugą wojnę światową)…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/find/tt0065908?external_source=imdb_id HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
WARNING:root:Returning no results for Jak rozpętałem drugą wojnę światową
|
||||
INFO:root:Processing Safe House…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/search/movie?query=Safe+House&include_adult=True&year=2012 HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
WARNING:root:Returned more than one film for Safe House (2012)
|
||||
WARNING:root:Skipped Safe House (2012)
|
||||
INFO:root:Finished processing items
|
||||
INFO:root:Processing items…
|
||||
INFO:root:Processing ID tt4053592 (How Not to Make a Movie)…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/find/tt4053592?external_source=imdb_id HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
WARNING:root:Returning no results for How Not to Make a Movie
|
||||
INFO:root:Processing ID tt0065908 (Jak rozpętałem drugą wojnę światową)…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/find/tt0065908?external_source=imdb_id HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
WARNING:root:Returning no results for Jak rozpętałem drugą wojnę światową
|
||||
INFO:root:Processing Safe House…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/search/movie?query=Safe+House&include_adult=True&year=2012 HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
WARNING:root:Returned more than one film for Safe House (2012)
|
||||
INFO:root:Processing ID tt1599348 (Safe House)…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/find/tt1599348?external_source=imdb_id HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
INFO:root:Finished processing items
|
||||
INFO:root:Processing items…
|
||||
INFO:root:Processing How Not to Make a Movie…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/search/movie?query=How+Not+to+Make+a+Movie&include_adult=True&year=2013 HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
WARNING:root:Returned no results for How Not to Make a Movie (2013)
|
||||
INFO:root:Processing ID tt4053592 (How Not to Make a Movie)…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/find/tt4053592?external_source=imdb_id HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
WARNING:root:Returning no results for How Not to Make a Movie
|
||||
INFO:root:Processing Jak rozpętałem drugą wojnę światową…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/search/movie?query=Jak+rozp%C4%99ta%C5%82em+drug%C4%85+wojn%C4%99+%C5%9Bwiatow%C4%85&include_adult=True&year=1970 HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
INFO:root:Processing ID tt0065908 (Jak rozpętałem drugą wojnę światową)…
|
||||
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.themoviedb.org:443
|
||||
DEBUG:urllib3.connectionpool:https://api.themoviedb.org:443 "GET /3/find/tt0065908?external_source=imdb_id HTTP/1.1" 200 None
|
||||
INFO:root:200
|
||||
WARNING:root:Returning no results for Jak rozpętałem drugą wojnę światową
|
||||
INFO:root:Finished processing items
|
13582
scripts/run.log.bak
Normal file
13582
scripts/run.log.bak
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue