Python film otomasyonu

MERHABA BİR FİLM OTOMASYONU YAPIYORUM.KENDİMİN 2 ÖZELLİK EKLEMEM GEREKİYOR.lÜTFEN DOSYA İŞLEMLERİNİ KULLANARAK YARDIMCI OLUR MUSUNUZ?

Oluruz ama tam olarak neye?

1 Beğeni

Film otomasyonu ne? Filmin bitince otomatik olarak yeniden başlaması mı? Filmleri otomatik indirmesi mi? Film otomasyonu pek bir şey ifade etmiyor.

2 Beğeni

Şöyle ki öncelikle evet haklısınız hemen detay vereyim ve alta da kodumu ekleyeyim. Filmlerin adını,türünü,yönetmenini,yapım yılını ve imbd puanını kullanıcıdan alıyoruz.Daha sonra arama,güncelleme,silme ve kayıt ekleme fonksiyonlarımızı menümüz yoluyla kullanıyoruz.(Silmeyi yapamadım yardımcı olursanız çok sevinirim :slight_smile: ) Daha sonra filmleri puanına göre sıralamak istiyorum fakat hem ismi hem puanı aynı anda almayı başaramadım.Bir de türüne göre film aramak istiyorum onu da yapamadım.

puanlist=[]

def kayit_ekle():
id = input(“Film Id:”)
ad = input(“Filmin Adi:”)
yil = input(“Yapim Yili:”)
tur = input(“Filmin Turu:”)
yonetmen = input(“Yonetmen:”)
puan = input(“IMBD Puani:”)

puanlist.append(puan)

with open("filmler.txt","a", encoding="utf-8") as file:
    file.write(id+'-'+ad+':'+yil+'-'+tur+'-'+yonetmen+'-'+puan+'\n')

def kayitguncelle():
print(“Film Güncelleme İşlemleri”)
id = input(“Güncellemek İstediğiniz Ad Soyad’ı Giriniz:”)

with open('filmler.txt') as file:
 veri = file.read()
if id in veri:

    yeniid = input("Yeni Id'yi Giriniz:")
    yeniad = input("Yeni Adı Giriniz:")
    yeniyil = input("Yeni Yılı Giriniz:")
    yenipuan = input("Yeni Puani Giriniz:")
    yenitur = input("Yeni Tur Giriniz:")
    yeniyonetmen = input("Yeni Yonetmen Gir:")

    with open("filmler.txt", "w", encoding="utf-8") as file:
        file.write(yeniid+'-'+yeniad+'-'+yeniyil+'-'+ yenitur+'-'+yeniyonetmen + '-'+yenipuan +'\n')

def kayitsil():
with open(“filmler.txt”,“r”) as file:
filmler = file.readlines()

    gfilmler = []
for film in filmler:
    gfilmler.append(" ".join(film[:-1].split("-")))
for film in gfilmler:
    print(film)

sec = int(input("Lütfen silmek istediğiniz filmin id'sini giriniz:"))
filmler.pop(sec)

sayac = 1

dfilmler= []

for film in filmler:
    dfilmler.append(str(sayac) + "-" + film.split("-")[1])
    sayac+=1

with open ("filmler.txt","w") as dosya:
        dosya.writelines(dfilmler)

def kayitlistele():
with open(“filmler.txt”,“r”) as file:
for satir in file:
print(satir)
def sirala():
with open (“filmler.txt”,“r”) as file:
filmler = file.readlines()

puanlar =[]

for film in filmler:
    puanlar.append(int(film.split("-")[-1]))

    puanlar.sort(reverse = False)
    print(puanlar)

def ara():
aranan_kelime = input("Aradigin kelimeyi gir ")
with open(‘filmler.txt’) as file:
veri = file.read()
if aranan_kelime in veri:
print(“Bulundu”, aranan_kelime)
else:
print(“Bulunamadi”)

while True:
islem = input(‘1- Film Kayit Ekleme\n2- Film Kayit Guncelle\n3- Film Kayit Ara\n4- Film Kayitlarini Listele\n5- IMBD Puanina Gore Sirala\n6- Turune Gore Arama\n7- Cikis\nSeciminiz:’)

if islem == '1':
    kayit_ekle()
elif islem == '2':
    kayitguncelle()
elif islem == '3':
    kayitsil()
elif islem == '4':
    ara()
elif islem == '5':
    sirala()
elif islem == '6':
    pass
else:
    break

Yavaş yavaş, aşama aşama gidelim.
Her gün bir fonksiyon yazalım, paylaşalım, kodu deneyelim, anlamaya çalışalım, soruları cevaplayalım. Ne dersiniz?
Böylece Öğrenim aşaması daha faydalı olur/gelişir diye düşünüyorum.

Haydi başlayalım:
Önce,

  • Menüyü oluşturalım, Neleri yapmak istiyoruz belirleyelim.
  • Fonksiyon isimlerini belirleyip “pass” ya da “Print” komutuyla içeriğini sonra doldurmak üzere kenarda bekletelim.

Şu an sadece “Film Ekleme” ve “Listeleme” fonksiyonları işlevsel, diğerleri sadece konsolda işleme dair bilgi veriyor.

def ekle(): # MENU 1
    id_no = input("Film Id:")
    ad = input("Filmin Adi:")
    yil = input("Yapim Yili:")
    tur = input("Filmin Turu:")
    yonetmen = input("Yonetmen:")
    puan = input("IMBD Puani:")


    with open("filmler.txt","a", encoding="utf-8") as file:
        file.write(id_no + ',' + ad + ',' + yil + ',' + tur + ',' + yonetmen + ',' + puan + '\n')

def guncelle(): # MENU 2
    print("Güncelleme İşlemi Başlıyor...")

def sil(): # MENU 3
    print("Silme İşlemi Gerçekleşiyor...")

def film_ara(): # MENU 4
    print("Film Arama İşlemi Başlıyor...")

def listele(): # MENU 5
    with open ("filmler.txt","r") as file:
        print("\nDosyadaki Filmler;\nid_no, ad, yil, tür, yonetmen, puan")
        for i in file:
            print(i[:-1])
        print("\n")

def sirala(): # MENU 6
    print("Puana Göre Sıralama İşlemi Başlıyor...")

def tur_ara(): # MENU 7
    print("Film Türüne Göre Arama İşlemi Başlıyor...")


while True:
    print("*" * 20, " MENÜ ", "*" * 20)
    islem = input("1- Film Ekle\n2- Film Kaydını Güncelle\n3- Filmi Sil\n4- Film Ara\n5- Filmleri Listele\n6- IMBD Puanına Göre Sırala\n7- Türü Göre Ara\nÇIKIŞ İÇİN 1-7 ARASI SAYILARIN DIŞINDA BİR TUŞA BASIN\nMenüden Bir İşlem Seçin: ")


    if islem == '1':
        ekle()
    elif islem == '2':
        guncelle()
    elif islem == '3':
        sil()
    elif islem == '4':
        film_ara()
    elif islem == '5':
        listele()
    elif islem == '6':
        sirala()
    elif islem == '7':
        tur_ara()
    else:
        break

Bu da, örnek/uydurma bir film listesi:

1,film_adi_01,2012,Macera,Yönetmen_1,8
2,film_adi_02,1987,Aksiyon,Yönetmen_2,3
3,film_adi_03,1988,Romantik,Yönetmen_3,1
4,film_adi_04,1981,Komedi,Yönetmen_4,5
5,film_adi_05,1995,3D,Yönetmen_5,1
6,film_adi_06,2018,Animasyon,Yönetmen_6,7
7,film_adi_07,2005,Dram,Yönetmen_7,1
8,film_adi_08,1981,Dram,Yönetmen_8,5
9,film_adi_09,1991,Romantik,Yönetmen_9,8
10,film_adi_10,2014,Aksiyon,Yönetmen_10,8
11,film_adi_11,1983,Komedi,Yönetmen_11,2
12,film_adi_12,1982,Dram,Yönetmen_12,6
13,film_adi_13,2000,Romantik,Yönetmen_13,6
14,film_adi_14,2006,Macera,Yönetmen_14,2
15,film_adi_15,2014,Macera,Yönetmen_15,4
16,film_adi_16,1985,Macera,Yönetmen_16,8
17,film_adi_17,1998,Romantik,Yönetmen_17,6
18,film_adi_18,1984,Aksiyon,Yönetmen_18,4
19,film_adi_19,2017,Komedi,Yönetmen_19,3
20,film_adi_20,1983,Komedi,Yönetmen_20,4
21,film_adi_21,2015,Dram,Yönetmen_21,4
22,film_adi_22,1983,3D,Yönetmen_22,2
23,film_adi_23,1987,Aksiyon,Yönetmen_23,5
24,film_adi_24,1991,3D,Yönetmen_24,3
1 Beğeni

Merhaba hocam, bir sürü koşul yazmak yerine şöyle bir şey düşündüm.

function_list = {k:v for k, v in zip(list(range(1,4)),[func1,func2, func3])}
while True:
    try:
        islem= input(":")
        function_list[islem]()
    except KeyError:
        print("Geçersiz") 
        break
1 Beğeni

Silme ve Güncelleme Fonksiyonları ile, sonraki günlerde ilgilenelim.

Pandas Kütüphanesi, Menü fonksiyonlarını oluşturuken işimizi oldukça kolaylaştırdı.
Pandas, Harikulade bir kütüphane. Öğrenilmesini şiddetle tavsiye ederim.
Kullanımı son derece kolay ve sonuçları itibari ile de oldukça etkili bir kütüphane.

NOT:

  • İMDB’den kopyaladığım film listesinde tür ve yönetmen bilgileri olmadığı için, Uydurma bilgiler yazdım.
  • Filmler dosyasını TXT uzantılı değil, CSV uzantılı olarak kullandım.

Yeni Kodlarımız;

import pandas as pd

df = pd.read_csv('filmler.csv')

def ekle(): # MENU 1
    id_no = input("Film Id:")
    ad = input("Filmin Adi:")
    yil = input("Yapim Yili:")
    tur = input("Filmin Turu:")
    yonetmen = input("Yonetmen:")
    print("Filme Puan verirken, Ondalık ayırıcı olarak VİRGÜL yerine NOKTA kullanın")
    puan = input("IMBD Puanı: ")


    with open("filmler.csv","a", encoding="utf-8") as file:
        file.write(id_no + ',' + ad + ',' + yil + ',' + tur + ',' + yonetmen + ',' + puan + '\n')

def guncelle(): # MENU 2
    print("Güncelleme İşlemi Başlıyor...")

def sil(): # MENU 3
    print("Silme İşlemi Gerçekleşiyor...")

def film_ara(): # MENU 4
    film = input("Aramak istediğiniz  Film Adını Yazınız: ")
    print(df[df.FILMADI == film])

def listele(): # MENU 5
    print(df.sort_index())

def sirala(): # MENU 6 - MDB Puanına Göre Sırala 
    print(df.sort_values("IMDB_PUANI", ascending=False))
    
def tur_ara(): # MENU 7 - Türü Göre Ara
    tur = input("Aramak istediğiniz  Türü Yazınız: ")
    print(df[df.TUR == tur])


function_list = {"1": ekle, "2": guncelle, "3": sil, "4": film_ara, "5": listele, "6": sirala, "7": tur_ara}

while True:
    try:
        print("*" * 20, " MENÜ ", "*" * 20)
        islem = input("Seçiminiz: ")
        function_list[islem]()

    except KeyError:
        print("Geçersiz Seçim") 
        break

Yeni Film Listemiz.

ID_NO,FILMADI,YILI,TUR,YONETMEN,IMDB_PUANI
1,TheShawshankRedemption,1994,TUR_1,YONETMEN_1,9.3
2,TheDarkKnight,2008,TUR_2,YONETMEN_2,9
3,TheGodfather,1972,TUR_3,YONETMEN_3,9.2
4,TheGodfatherPartII,1974,TUR_4,YONETMEN_4,9
5,FightClub,1999,TUR_5,YONETMEN_5,8.8
6,TheLordoftheRingsTheReturnoftheKing,2003,TUR_6,YONETMEN_6,9
7,PulpFiction,1994,TUR_7,YONETMEN_7,8.9
8,TheGoodtheBadandtheUgly,1966,TUR_8,YONETMEN_8,8.8
9,12AngryMen,1957,TUR_9,YONETMEN_9,9
10,TheLordoftheRingsTheFellowshipoftheRing,2001,TUR_10,YONETMEN_10,8.8
11,Inception,2010,TUR_1,YONETMEN_11,8.8
12,ForrestGump,1994,TUR_2,YONETMEN_12,8.8
13,TheLordoftheRingsTheTwoTowers,2002,TUR_3,YONETMEN_13,8.8
14,Interstellar,2014,TUR_4,YONETMEN_14,8.6
15,TheDarkKnightRises,2012,TUR_5,YONETMEN_15,8.4
16,ThePrestige,2006,TUR_6,YONETMEN_16,8.5
17,Memento,2000,TUR_7,YONETMEN_17,8.4
18,TheDeparted,2006,TUR_8,YONETMEN_18,8.5
19,TheGreenMile,1999,TUR_9,YONETMEN_19,8.6
20,Gladiator,2000,TUR_10,YONETMEN_20,8.5
21,BacktotheFuture,1985,TUR_1,YONETMEN_21,8.5
22,Terminator2JudgmentDay,1991,TUR_2,YONETMEN_22,8.6
23,GraveoftheFireflies,1988,TUR_3,YONETMEN_23,8.5
24,Scarface,1983,TUR_4,YONETMEN_24,8.3
25,StarWarsEpisodeV-TheEmpireStrikesBack,1980,TUR_5,YONETMEN_25,8.7
26,StarWars,1977,TUR_6,YONETMEN_26,8.6
27,OneFlewOvertheCuckoo'sNest,1975,TUR_7,YONETMEN_27,8.7
28,Goodfellas,1990,TUR_8,YONETMEN_28,8.7
29,TheMatrix,1999,TUR_9,YONETMEN_29,8.7
30,SevenSamurai,1954,TUR_10,YONETMEN_30,8.6
31,TheMessage,1976,TUR_1,YONETMEN_31,8.1
32,TheUsualSuspects,1995,TUR_2,YONETMEN_32,8.5
33,Se7en,1995,TUR_3,YONETMEN_33,8.6
34,AmericanHistoryX,1998,TUR_4,YONETMEN_34,8.5
35,LéonTheProfessional,1994,TUR_5,YONETMEN_35,8.5
36,LifeIsBeautiful,1997,TUR_6,YONETMEN_36,8.6
37,It'saWonderfulLife,1946,TUR_7,YONETMEN_37,8.6
38,Psycho,1960,TUR_8,YONETMEN_38,8.5
39,IndianaJonesandtheRaidersoftheLostArk,1981,TUR_9,YONETMEN_39,8.4
40,TaxiDriver,1976,TUR_10,YONETMEN_40,8.2
41,Braveheart,1995,TUR_1,YONETMEN_41,8.4
42,VforVendetta,2005,TUR_2,YONETMEN_42,8.2
43,Schindler'sList,1993,TUR_3,YONETMEN_43,9
44,MyFatherandMySon,2005,TUR_4,YONETMEN_44,8.2
45,OnceUponaTimeintheWest,1968,TUR_5,YONETMEN_45,8.5
46,CityLights,1931,TUR_6,YONETMEN_46,8.5
47,ModernTimes,1936,TUR_7,YONETMEN_47,8.5
48,TheSilenceoftheLambs,1991,TUR_8,YONETMEN_48,8.6
49,SavingPrivateRyan,1998,TUR_9,YONETMEN_49,8.6
50,TheIntouchables,2011,TUR_10,YONETMEN_50,8.5
51,SpiritedAway,2001,TUR_1,YONETMEN_51,8.6
52,RearWindow,1954,TUR_2,YONETMEN_52,8.5
53,Dr.StrangeloveorHowILearnedtoStopWorryingandLovetheBomb,1964,TUR_3,YONETMEN_53,8.4
54,ThePianist,2002,TUR_4,YONETMEN_54,8.5
55,Alien,1979,TUR_5,YONETMEN_55,8.5
56,DjangoUnchained,2012,TUR_6,YONETMEN_56,8.4
57,TheBandit,1996,TUR_7,YONETMEN_57,8.1
58,2001ASpaceOdyssey,1968,TUR_9,YONETMEN_58,8.3
59,DieHard,1988,TUR_10,YONETMEN_59,8.2
60,BatmanBegins,2005,TUR_1,YONETMEN_60,8.2
61,IndianaJonesandtheLastCrusade,1989,TUR_2,YONETMEN_61,8.2
62,RagingBull,1980,TUR_3,YONETMEN_62,8.2
63,PK,2014,TUR_4,YONETMEN_63,8.1
64,HarryPotterandtheDeathlyHallowsPart2,2011,TUR_5,YONETMEN_64,8.1
65,PisoftheCaribbeanTheCurseoftheBlackPearl,2003,TUR_6,YONETMEN_65,8.1
66,X-MenDaysofFuturePast,2014,TUR_7,YONETMEN_66,7.9
67,ShutterIsland,2010,TUR_8,YONETMEN_67,8.2
68,TheBourneUltimatum,2007,TUR_9,YONETMEN_68,8
69,TheAvengers,2012,TUR_10,YONETMEN_69,8
70,IpMan,2008,TUR_1,YONETMEN_70,8
71,LikeStarsonEarth,2007,TUR_2,YONETMEN_71,8.3
72,3Idiots,2009,TUR_3,YONETMEN_72,8.4
73,CinemaParadiso,1988,TUR_4,YONETMEN_73,8.5
74,PathsofGlory,1957,TUR_5,YONETMEN_74,8.4
75,TheGreatDictator,1940,TUR_6,YONETMEN_75,8.4
76,TheShining,1980,TUR_7,YONETMEN_76,8.4
77,WALL·E,2008,TUR_8,YONETMEN_77,8.4
78,Amélie,2001,TUR_9,YONETMEN_78,8.3
79,AmericanBeauty,1999,TUR_10,YONETMEN_79,8.4
80,Aliens,1986,TUR_1,YONETMEN_80,8.4
81,ToyStory3,2010,TUR_2,YONETMEN_81,8.3
82,AClockworkOrange,1971,TUR_3,YONETMEN_82,8.3
83,TheSixthSense,1999,TUR_4,YONETMEN_83,8.2
84,ABeautifulMind,2001,TUR_5,YONETMEN_84,8.2
85,TaeGukGiTheBrotherhoodofWar,2004,TUR_6,YONETMEN_85,8
86,HachiADog'sTale,2009,TUR_7,YONETMEN_86,8.1
87,TheElephantMan,1980,TUR_8,YONETMEN_87,8.2
88,IntotheWild,2007,TUR_9,YONETMEN_88,8.1
89,TheUntouchables,1987,TUR_10,YONETMEN_89,7.9
90,EdwardScissorhands,1990,TUR_1,YONETMEN_90,7.9
91,CityofGod,2002,TUR_2,YONETMEN_91,8.6
92,ApocalypseNow,1979,TUR_3,YONETMEN_92,8.5
93,TheLionKing,1994,TUR_4,YONETMEN_93,8.5
94,Whiplash,2014,TUR_5,YONETMEN_94,8.5
95,PrincessMononoke,1997,TUR_6,YONETMEN_95,8.4
96,Oldboy,2003,TUR_7,YONETMEN_96,8.4
97,StarWarsEpisodeVI-ReturnoftheJedi,1983,TUR_8,YONETMEN_97,8.3
98,ReservoirDogs,1992,TUR_9,YONETMEN_98,8.3
99,RequiemforaDream,2000,TUR_10,YONETMEN_99,8.3
100,EternalSunshineoftheSpotlessMind,2004,TUR_1,YONETMEN_100,8.3

Menü 4 ve sonrasına ait çıktılar;

Seçiminiz: 4
Aramak istediğiniz  Film Adını Yazınız: Inception
    ID_NO    FILMADI  YILI    TUR     YONETMEN  IMDB_PUANI
10     11  Inception  2010  TUR_1  YONETMEN_11         8.8

********************  MENÜ  ********************
Seçiminiz: 5
    ID_NO                            FILMADI  YILI     TUR      YONETMEN  IMDB_PUANI
0       1             TheShawshankRedemption  1994   TUR_1    YONETMEN_1         9.3
1       2                      TheDarkKnight  2008   TUR_2    YONETMEN_2         9.0
2       3                       TheGodfather  1972   TUR_3    YONETMEN_3         9.2
3       4                 TheGodfatherPartII  1974   TUR_4    YONETMEN_4         9.0
4       5                          FightClub  1999   TUR_5    YONETMEN_5         8.8
..    ...                                ...   ...     ...           ...         ...
95     96                             Oldboy  2003   TUR_7   YONETMEN_96         8.4
96     97  StarWarsEpisodeVI-ReturnoftheJedi  1983   TUR_8   YONETMEN_97         8.3
97     98                      ReservoirDogs  1992   TUR_9   YONETMEN_98         8.3
98     99                   RequiemforaDream  2000  TUR_10   YONETMEN_99         8.3
99    100   EternalSunshineoftheSpotlessMind  2004   TUR_1  YONETMEN_100         8.3

[100 rows x 6 columns]

********************  MENÜ  ********************
Seçiminiz: 6
    ID_NO                              FILMADI  YILI     TUR     YONETMEN  IMDB_PUANI
0       1               TheShawshankRedemption  1994   TUR_1   YONETMEN_1         9.3
2       3                         TheGodfather  1972   TUR_3   YONETMEN_3         9.2
3       4                   TheGodfatherPartII  1974   TUR_4   YONETMEN_4         9.0
42     43                      Schindler`sList  1993   TUR_3  YONETMEN_43         9.0
5       6  TheLordoftheRingsTheReturnoftheKing  2003   TUR_6   YONETMEN_6         9.0
..    ...                                  ...   ...     ...          ...         ...
67     68                   TheBourneUltimatum  2007   TUR_9  YONETMEN_68         8.0
68     69                          TheAvengers  2012  TUR_10  YONETMEN_69         8.0
89     90                   EdwardScissorhands  1990   TUR_1  YONETMEN_90         7.9
88     89                      TheUntouchables  1987  TUR_10  YONETMEN_89         7.9
65     66                X-MenDaysofFuturePast  2014   TUR_7  YONETMEN_66         7.9

[100 rows x 6 columns]

********************  MENÜ  ********************
Seçiminiz: 7
Aramak istediğiniz  Türü Yazınız: TUR_3
    ID_NO                                            FILMADI  YILI    TUR     YONETMEN  IMDB_PUANI
2       3                                       TheGodfather  1972  TUR_3   YONETMEN_3         9.2
12     13                      TheLordoftheRingsTheTwoTowers  2002  TUR_3  YONETMEN_13         8.8
22     23                                GraveoftheFireflies  1988  TUR_3  YONETMEN_23         8.5
32     33                                              Se7en  1995  TUR_3  YONETMEN_33         8.6
42     43                                    Schindler`sList  1993  TUR_3  YONETMEN_43         9.0
52     53  Dr.StrangeloveorHowILearnedtoStopWorryingandLo...  1964  TUR_3  YONETMEN_53         8.4
61     62                                         RagingBull  1980  TUR_3  YONETMEN_62         8.2
71     72                                            3Idiots  2009  TUR_3  YONETMEN_72         8.4
81     82                                   AClockworkOrange  1971  TUR_3  YONETMEN_82         8.3
91     92                                      ApocalypseNow  1979  TUR_3  YONETMEN_92         8.5

********************  MENÜ  ********************
Seçiminiz: 9
Geçersiz Seçim
2 Beğeni

Yazdığın kodu denediğimde maalesef istediğim sonucu elde edemedim.
islem = input(":")
ilekullanıcıdan alınan çıktı her daim string ifade verdiği için,işlem sonucu tüm tuşlara “Key Error:” sonucu “Geçersiz” sonucu dönüyor.

Menü olarak, Sonuçta yine senin kodunun temelini olan sözlük yapısını kullandım.

Evet hocam, fark ettim. Şöyle bir değişiklik yaptım:

function_list = {k:v for k, v in zip([str(i) for i in list(range(1,4))],[func1,func2, func3])}
while True:
    try:
        islem= input(":")
        function_list[islem]()
    except KeyError:
        print("Geçersiz") 
        break
1 Beğeni

çok yararlı oldu elinize sağlık dostlar