Tự gán ngày kỷ niệm vào lịch (adding anniversaries to Calendar)

Thảo luận trong 'ỨNG DỤNG TÍNH TOÁN, THỜI GIAN' bắt đầu bởi banong, 7 Tháng mười hai 2008.

  1. butbi777

    butbi777 Thành viên

    Bài viết:
    23
    Được Like:
    18
    Hoàn thiện phần mềm

    Nếu bạn Quốc Sản có thì giờ (và đã "vọc" Python nhiều) thì (theo yêu cầu của vài bạn trên forum này) bạn nên đóng gói chương trình này thành một phần mềm tự cài đặt được cho cộng đồng người dùng mobile S60 có thể tiếp cận một phần mềm bổ ích. Bản thân tôi có nhu cầu nhớ khoảng 20 ngày giỗ, 200 ngày sinh nhật (làm công đoàn mà). Trước đây cứ phải đánh dấu vào lịch làm việc để bàn, mà lịch để bàn đâu lúc nào cũng mang theo người được. Bây giờ bất cứ lúc nào, ở đâu, cứ liếc "dế" là biết được thông tin các ngày kỷ niệm. Tôi nghĩ phần mềm này đáng lý còn có thể marketing để phát triển thành phần mềm "thương mại" được.
    TanVD-Be Yeu, quocsan and chivung like this.
  2. quocsan

    quocsan Thành viên

    Bài viết:
    17
    Được Like:
    8
    Cảm ơn ButBi777!

    Thật ra tôi để nguyên source code là có ý để cho các bạn bổ sung theo ý thích.
    Vấn đề "thương mại" thì trước nay tôi chưa đặt nặng nó.
    Tôi cũng đã viết 1 số chương trình nhỏ (vnTelex, vnConvert, kiểm tra container, ...) với mục đích duy nhất là bổ sung thêm một ít tính năng cho "dế". Một chú "dế" đắt tiền mà thiếu thứ mình cần thì quả là ... thiếu sót.
    Trước giờ tôi vẫn muốn viết lại bằng C++, nhưng môi trường phát triển Symbian nó lại không chịu ... quen với tôi!
    Thôi thì đành góp sức theo khả năng của mình.
    TanVD-Be Yeu thích bài này.
  3. bluechatvn

    bluechatvn Thành viên

    Bài viết:
    69
    Được Like:
    6
    Cám ơn các bạn nhé, nhưng tôi dùng E71, cài python 2.0, làm y như hướng dẫn thì chạy python ko được. Bạn nào đang sử dụng pm này cho E71 thì up cho tôi python và các file cần thiết của bạn với, thanks
    hahahaha, sau một buôi tìm kiếm, cài đi cài lại con E71 già nua thì đã thực hiện được, xin cảm ơn các bạn , đặc biệt là bạn Quốc sản nhé. cũng nói cách làm của mình cho bạn nào mới chưa rành rẽ như mình: các bạn tải bản Python tại đây:http://www.gsm.vn/forum/main/showthread.php/159750-HideIcons-Chương-trình-làm-ẩn-icon.
    sau đó làm mọi việc như hưuóng dẫn là ok
  4. chivung

    chivung Thành viên

    Bài viết:
    10
    Được Like:
    1
    các bạn có thể giúp mình được không? mình copy 2 file anni.py và al.py vào e/python rồi nhưng khi chạy runscrip thì máy báo lỗi: importError: No module named al. không hiểu đây là lỗi ở đâu?
  5. phanhien

    phanhien Thành viên

    Bài viết:
    405
    Được Like:
    158
    file al.py bác phải để vào trong e/python/lib mới được
    chivung thích bài này.
  6. chivung

    chivung Thành viên

    Bài viết:
    10
    Được Like:
    1
    cảm ơn bạn. ^^ tạo thư mục E:/python/lib và thư mục E:/documents là làm được ngay. thế mà lúc trước loay hoay mãi cũng không làm được.
    Bây giờ nếu mình muốn chuông báo vào lúc 7h sáng thì làm thế nào nhỉ? mình không biết gì về lập trình nên anh em nào biết chỉ rõ ràng chút nha.
  7. butbi777

    butbi777 Thành viên

    Bài viết:
    23
    Được Like:
    18
    Sửa lỗi chương trình

    Tôi vừa phát hiện ra một lỗi chương trình. Hôm qua một người thân gọi điện nhắc tôi về một ngày giỗ vào ngày hôm qua mùng 7 tháng 12 âm lịch. Tôi ngạc nhiên tại sao trên máy mình không thấy nhắc tới ngày giỗ này. Hóa ra là năm nay 2011 tương ứng với ngày âm lịch từ 27 tháng 11 năm Canh Dần tới mùng 7 tháng 12 năm Tân Mão. Tức là ngày 7 tháng 12 âm lịch sẽ tương ứng với 2 ngày dương lịch là 10-1-2011 và 31-12-2011. Nhưng theo chương trình cũ thì ngày 7 tháng 12 âm lịch chỉ gán cho ngày 31-12-2011 thôi. Vậy là phải sửa lại chương trình theo giải thuật là:

    - Các ngày âm lịch từ tháng 1 tới tháng 10 âm lịch thì "vô tư" chuyển sang ngày dương lịch của năm đang xét và gán vào lịch kỷ niệm.

    - Các ngày âm lịch của tháng 11, 12 âm lịch cần phải chuyển sang ngày dương lịch cho cả năm trước và năm đang xét rồi chỉ chọn các ngày dương lịch của năm đang xét để gán vào lịch kỷ niệm.

    Sau đây là đoạn mã của modun Anniversary2Calendar đã được viết lại.

    Mã:
    #~~~~~~~~~~~~~~~~~
    def Anniversary2Calendar(Y):
      if not minYear <= Y <= maxYear: return
      ct.set(unicode('Processing year %d' %(Y)))
      r = []
      for l in range(len(data)):
        v = data[l].split(u':')
        if len(v) != 2: raise "':' not found!"
        v[0] = v[0].strip()
        v[1] = v[1].strip()
        vs = v[0].split(u'/')
        if len(vs) != 2: raise "'/' not found!"
        d = int(vs[0])
        m = int(vs[1][0:2])
        w = list()
        if vs[1].find(u'*') < 0: # Solar date
          w = (
              time.mktime((Y, m, d, 0, 0, 0, 0, 0, 0)),
              "%s" %(v[1]),
              0
              )
          r.append(w)
        else: # Lunar date
          if m < 11:
            t = al.L2S(d, m, Y) # Lunar to Solar date.
            if t[2] == Y:
              w = time.mktime((t[2],t[1],t[0], 0,0,0,0,0,0))
              wt = "%02d.%02d.AL: %s" %(d, m, v[1])
              w = (w, wt, 1)
              r.append(w)
          else:
            t = al.L2S(d, m, Y-1) # Lunar to Solar date (last year).
            if t[2] == Y:
              w = time.mktime((t[2],t[1],t[0], 0,0,0,0,0,0))
              wt = "%02d.%02d.AL: %s" %(d, m, v[1])
              w = (w, wt, 1)
              r.append(w)
            t = al.L2S(d, m, Y) # Lunar to Solar date (current year).
            if t[2] == Y:
              w = time.mktime((t[2],t[1],t[0], 0,0,0,0,0,0))
              wt = "%02d.%02d.AL: %s" %(d, m, v[1])
              w = (w, wt, 1)
              r.append(w)
      r.sort()
      removeOld(Y, SecsInDay, anniversaries=1)
      a = 0
      a = query(u'Old anniversaries have been removed. Add new ones to calendar?')
      if a != 1: return False
      info(u'Please wait for a while!')
      for l in range(len(r)):
        a = cal.add_anniversary()
        a.set_time(r[l][0])
        a.content = TAG + r[l][1].replace('\n', S60CRLF)
        a.commit()
      info(unicode('%d item(s) for year %d have been added' %(len(r), Y)))
      showIntro()
    #~~~~~~~~~~~~~~~~~
    
    Chúc các bạn có được lịch nhắc ngày kỷ niệm hữu ích.
    TanVD-Be Yeu thích bài này.
  8. Be Yeu

    Be Yeu Super Moderator Staff Member

    Bài viết:
    4,781
    Được Like:
    5,681
    Mình đã đổi thành
    if r[l][0] > TODAY:
    a.alarm = r[l][0]+ 6*60*60 ( dự định báo lúc 6h )
    và a.alarm = r[l][0]+ 12*60*60
    nhưng sau đó add lại anniversary và khi kiểm tra lại lịch thì alarm vẫn là 00:00 như trước khi thay đổi >> Có phải chỉnh sửa lại thêm chỗ nào không để nó báo đúng 6h , bạn hiền ơi !? [-(
    Thanks !
    P/S : Mình dùng N93-1 S603rd PreFP1
  9. dansg9999

    dansg9999 Staff Member

    Bài viết:
    298
    Được Like:
    455
    Các tác giả ơi. Các đời máy Symbian trước không có chuyển đổi DL <--> ÂL nên sử dụng các thủ thuật của các bạn được. Nhưng đời Nokia N97 --> N8 tích hợp sẳn chuyển đổi DL--> ÂL trong lịch ngày tháng . Vậy sử dụng phải khác trình tự của các bạn rồi. Dù sao tôi cũng sử dụng thử để báo kết quả cho các bạn biết. TKS
  10. butbi777

    butbi777 Thành viên

    Bài viết:
    23
    Được Like:
    18
    Bạn ơi, vấn đề là nếu bạn có 1000 ngày cần đưa vào lịch nhắc thì bạn có kiên nhẫn ngồi nạp 1000 ngày kỷ niệm trên máy bằng cách dò tìm ngày, gõ nội dung cần nhắc ... không? Trong khi chỉ cần một tập tin txt bạn cho chạy chương trình và đợi chưa đến 1 phút là có lịch nhắc như ý.
    TanVD-Be Yeu thích bài này.